逆運動学とは?
運動学は、力やトルクなどの運動の起源を考慮しない動きの研究分野です。逆運動学とは、ロボットを目標位置に到達させるための動きを決定する運動学の方程式を使用することを意味します。たとえば、ビンピッキングを自動化するには、製造ラインで使用するロボットアームが、初期位置からビンと製造機の間の目標位置まで、正確に動作する必要があります。ロボットアームの把持端部は、エンドエフェクタと呼ばれます。ロボット構成は、ロボットモデルが位置制限内にあり、かつロボット自身が持つ制約に違反しない関節位置のリストです。
ロボットのエンドエフェクタの目標位置を指定すると、逆運動学 (IK) により、エンドエフェクタが対象の姿勢に移行するための適切な関節構成を判断できます。
逆運動学によってロボットの関節角度が算出されると、ヤコビ行列を使って、エンドエフェクタを初期姿勢から目標姿勢に移動するための運動プロファイルが生成されます。ヤコビ行列は、ロボットの関節パラメーターとエンドエフェクタの速度の関係を定義するのに役立ちます。
順運動学 (FK) と異なり、複数の回転関節を有するロボットには、一般的に逆運動学の解が複数存在し、目的に応じてさまざまな手法が提案されています。一般的に、解析的に求める方法 (解析解) と、数値計算を使用する方法 (数値解) の 2 つに分類されます。
逆運動学の数値解
ロボットに対して指定された目標や拘束を満たすロボット構成を近似するには、数値解を使用できます。関節角度はそれぞれ、最適化アルゴリズム (勾配法など) を使用して、反復的に算出されます。
逆運動学の数値ソルバーは一般的な方法ですが、複数のステップでシステムの非線形性の解に収束する必要があるのに対し、逆運動学の解析ソルバーはシンプルな逆運動学の問題に最も適しています。数値計算による逆運動学は、ロボットの運動学的拘束を指定できる点や、カメラアームを目標位置に向ける照準拘束などの外部拘束を逆運動学ソルバーに設定できる点で、より汎用性があります。 (リアルタイムの対話型アプリケーションなど) やいくつかの性能基準 (最終的な姿勢の円滑性、冗長なロボット工学システムの拡張性など) によって決まります。
逆運動学の数値計算は、Robotics System Toolbox™ および Simscape Multibody™ を使用して行うことができます。関連するワークフローは次のとおりです。
- 剛体ツリーロボットモデルの作成
- URDF パラメーターと DH パラメーターからのロボット定義のインポート
- CAD で定義された情報に基づく Multibody モデルの構築
- 幾何学的ヤコビアンの計算
- 逆運動学のソルバー、構成、およびウェイポイントの設計
- 一般化逆運動学ソルバーを使用した複数の拘束条件を持つ運動学構成の求解
- パラレルリンク機構の解析
- 同等の C/C++ コードの生成と他のアプリケーションへの埋め込み
詳細については、Robotics System Toolbox および Simscape Multibody を参照してください。
逆運動学の解析解
関節角度はそれぞれ、数式に基づき、エンドエフェクタの姿勢から算出されます。逆運動学では、関節パラメーターとエンドエフェクタの姿勢をシンボリックに定義することで、リンクの長さや開始姿勢、回転拘束の関数として、関節角度の可能な解をすべて解析形式で求めることができます。
解析的逆運動学は、運動方程式の非線形性と冗長なロボット構成に対する拡張性の欠如により、主に自由度 (DoF) の低いロボットに使用されます。
Robotics System Toolbox™ および Symbolic Math Toolbox™ は、解析的逆運動学に使用できます。以下を行うことができます。
- MATLAB で定義された 6 自由度ロボットのサブセット用解析的逆運動学ソルバーの生成
- ロボットのエンドエフェクタの位置と関節パラメーターを正弦関数と余弦関数としてシンボリックに定義することによる、カスタムソルバーの記述
- システムのヤコビアンをシンボリック式として計算し、関節とロボットの速度の関係を得る
- 導出された式を MATLAB® 関数ブロックに変換し、Simulink® または Simscape™ モデルを作成してロボットをシミュレーションする
- 同等の C コードを生成して、他のアプリケーションに組み込む
ビデオ
例および使用方法
ソフトウェア リファレンス
参考: Robotics System Toolbox, Simscape Multibody, Symbolic Math Toolbox, ロボット プログラミング, 回転行列, 積分, MATLAB および Simulink を使用した Arduino のプログラミング, Arduino エンジニアリング キット