ロボティクスを、順番に学ぶ
4つのトラックで、各レッスンは前のレッスンの上に積み上がります。すべてのレッスンに学習目標、図またはグラフ、シミュレーションで実際に動くコード、そして演習があります。
すべてのレッスンは2027年1月31日まで無料で読めます。アカウント登録は不要です。
「ロボットとは何か」から、シミュレーションでアームを動かすまで。
ロボットとは何か:センス・プラン・アクト
すべてのロボットが回しているループ、自由度の数え方、コンフィギュレーション空間と作業空間の違い、仕事で出会う主なロボットの種類を解説します。
numpyで学ぶ座標系・回転・変換
回転行列、右手の法則、回転の合成、4x4の同次変換、座標系間での点の変換、変換の逆を、すべてnumpyで扱います。ROSが採用するREP 103の規約も紹介します。
2リンクアームの順運動学
平面2リンクアームの先端位置を関節角から、三角法と同次変換の連鎖という2通りの方法で求め、両者が一致することを確かめます。さらに関節を掃引して、到達可能な作業空間を描きます。
逆運動学:解析解と数値解
余弦定理と減衰最小二乗ソルバの2通りで、2リンクアームの先端を目標に置く関節角を求めます。到達不能な目標の扱い方と、特異点が数値に与える影響も確かめます
ロボット関節のPID制御
numpyで負荷付きのDCモータ関節をシミュレーションし、P・PI・PID制御でループを閉じます。電圧飽和による積分ワインドアップを再現してクランプで抑え、微分を測定値に対して取る方法も扱います。
センサ、ノイズ、そして初めてのカルマンフィルタ
エンコーダ、IMU、距離センサに共通する3種類の誤差、平均化がフィルタリングではない理由、そしてノイズを含む位置測定からロボットを追跡する、numpyで書いた1次元の等速カルマンフィルタを扱います
差動二輪駆動の運動学とオドメトリ
差動二輪駆動ロボットの車輪速度と機体速度を相互に変換し、オドメトリをオイラー法と厳密な円弧ステップで積分します。車輪半径とトレッドのわずかな誤差がメートル単位のドリフトになる様子を確かめます。
A*によるグリッド上の経路計画
占有格子地図、4近傍と8近傍の移動、許容的ヒューリスティックを解説し、heapqを使った純粋なPythonでA*プランナを実装します。展開したセル数を数えてDijkstra法と比較します。
MuJoCoでアームをシミュレーションする
MJCFで2リンクアームを作り、mujoco Pythonバインディングでヘッドレスにステップ実行します。関節とサイトの状態を読み出して順運動学と照合し、重力補償の有無でPDループを閉じます。
Hello, ROS 2:パブリッシャ・サブスクライバ・tf2
ROS 2 Jazzyのノード・トピック・メッセージ・QoS、1つのPythonプロセスで動くtalkerとlistener、静的変換と動的変換からなるtf2の座標系ツリーとBufferによる変換の参照を扱います。
動力学、制御、状態推定、そして初めてのROS 2システム。
経路計画、マニピュレーション、SLAM、脚式移動。
このトラックのレッスンは執筆中です。まずは入門トラックからどうぞ。
研究の最前線: ロボット学習、全身制御、実環境への展開。
このトラックのレッスンは執筆中です。まずは入門トラックからどうぞ。