逆運動学

MATLAB および Simulink による逆運動学 (IK) アルゴリズムの設計

運動学は、力やトルクなどの運動の起源を考慮しない動きの研究分野です。逆運動学とは、ロボットを目標位置に到達させるための動きを決定する運動学の方程式を使用することを意味します。たとえば、ビンピッキングを自動化するには、製造ラインで使用するロボットアームが、初期位置からビンと製造機の間の目標位置まで、正確に動作する必要があります。ロボットアームの把持端部は、エンドエフェクタと呼ばれます。ロボット構成は、ロボットモデルが位置制限内にあり、かつロボット自身が持つ制約に違反しない関節位置のリストです。

ロボットのエンドエフェクタの目標位置を指定すると、逆運動学 (IK) により、エンドエフェクタが対象の姿勢に移行するための適切な関節構成を判断できます。

 

順運動学または逆運動学を使用して、ロボットの関節位置を設定。

逆運動学によってロボットの関節角度が算出されると、ヤコビ行列を使って、エンドエフェクタを初期姿勢から目標姿勢に移動するための運動プロファイルが生成されます。ヤコビ行列は、ロボットの関節パラメーターとエンドエフェクタの速度の関係を定義するのに役立ちます。

順運動学 (FK) と異なり、複数の回転関節を有するロボットには、一般的に逆運動学の解が複数存在し、目的に応じてさまざまな手法が提案されています。一般的に、解析的に求める方法 (解析解) と、数値計算を使用する方法 (数値解) の 2 つに分類されます。

逆運動学の数値解

ロボットに対して指定された目標や拘束を満たすロボット構成を近似するには、数値解を使用できます。関節角度はそれぞれ、最適化アルゴリズム (勾配法など) を使用して、反復的に算出されます。

逆運動学の数値ソルバーは一般的な方法ですが、複数のステップでシステムの非線形性の解に収束する必要があるのに対し、逆運動学の解析ソルバーはシンプルな逆運動学の問題に最も適しています。適用する逆運動学ソルバーは主に、ロボットアプリケーション (リアルタイムの対話型アプリケーションなど) やいくつかの性能基準 (最終的な姿勢の円滑性、冗長なロボット工学システムの拡張性など) によって決まります。

例: 複数の運動学拘束による到達軌跡の計画

MATLAB を使った多自由度ロボットの逆運動学計算。

逆運動学の数値計算は、Robotics System Toolbox™ および Simscape Multibody™ を使用して行うことができます。詳細なワークフローは次のとおりです。

  • 剛体ツリーロボットモデルの作成
  • URDF パラメーターと DH パラメーターからのロボット定義のインポート
  • CAD で定義された情報に基づく Multibody モデルの構築
  • 幾何学的ヤコビアンの計算
  • 順運動学/順動力学と逆運動学/逆動力学の解析
  • 複数拘束をもつ逆運動学の解法
  • パラレルリンク機構の解析
  • 同等の C/C++ コードの生成と他のアプリケーションへの埋め込み

詳細については、Robotics System Toolbox および Simscape Multibody を参照してください。

逆運動学の解析解

関節角度はそれぞれ、数式に基づき、エンドエフェクタの姿勢から算出されます。逆運動学では、関節パラメーターとエンドエフェクタの姿勢をシンボリックに定義することで、リンクの長さや開始姿勢、回転拘束の関数として、関節角度の可能な解をすべて解析形式で求めることができます。

解析的逆運動学は、運動方程式の非線形性と冗長なロボット構成に対する拡張性の欠如により、主に自由度 (DoF) の低いロボットに使用されます。

例: 逆運動学の導出と 2 リンクロボットアームへの適用

関節角度 θ1 および θ2 と関節パラメーターによって、逆運動学の解を計算する 2 リンクのロボットアーム。

目的のエンドエフェクタ姿勢における関節角度 θ1 および θ2 の逆運動学の解析解。

Symbolic Math Toolbox™ は、解析的逆運動学に使用できます。以下を行うことができます。

  • ロボットのエンドエフェクタの位置と関節パラメーターを正弦関数と余弦関数としてシンボリックに定義する
  • 関節角度の逆運動方程式を解き、運動プロファイルを生成する
  • システムのヤコビアンをシンボリック式として計算し、関節とロボットの速度の関係を得る
  • 導出された式を MATLAB® 関数ブロックに変換し、Simulink® または Simscape™ モデルを作成してロボットをシミュレーションする
  • 同等の C コードを生成して、他のアプリケーションに組み込む
詳細については、MATLAB および Symbolic Math Toolbox を参照してください。



参考: Robotics System Toolbox, Simscape Multibody, Symbolic Math Toolbox, ロボット プログラミング, 回転行列, 積分, MATLAB および Simulink を使用した Arduino のプログラミング, Arduino エンジニアリング キット

ミシガン大学、モデルベースデザインで二足歩行ロボットの制御を開発