MoveItチュートリアル[20]:TRAC-IKキネマティクスソルバー



Moveit Tutorial



TRAC-IK これは、TRACLabsによって開発されたインバースキネマティクスソルバーです。スレッドを介して2つのIK実装を組み合わせて、一般的なオープンソースIKソルバーよりも信頼性の高いソリューションを取得します。彼らのドキュメントから:

[TRAC-IK]は、KDLで一般的な逆ヤコビ行列法用のオプションのインバースキネマティクスソルバーを提供します。具体的には、KDLの収束アルゴリズムはニュートン法に基づいています。ニュートン法は、多くのロボットプラットフォームで一般的な関節制限がある場合はうまく機能しません。 2つのIK実装を同時に実行します。 1つは、KDLのニュートンベースの収束アルゴリズムの単純な拡張です。これは、ランダムホッピングを使用して、ジョイントの制限による極小値を検出および軽減します。 2つ目は、SQP [逐次二次計画法]非線形最適化法です。これは、準ニュートン法を使用して、結合限界をより適切に処理します。デフォルトでは、これら2つのアルゴリズムのいずれかが回答に収束すると、IK検索はすぐに戻ります。最良のIKソリューションを得るために、距離と操作性の二次的な制約も提供されます。



trac_ik_kinematics_pluginパッケージは、デフォルトのKDLソルバーを置き換えることができるKinematicsBaseMoveItインターフェースを提供します。シミュレートされたジョイントは現在サポートされていません。
1.インストール
v1.4.5では、trac_ikはROS Indigo / Jadeバイナリの一部です。

sudo apt-get install ros-kinetic-trac-ik-kinematics-plugin

2.使用法
1. trac_ik_kinematics_pluginおよびtrac_ik_libパッケージをインストールするか、catkinワークスペースに追加します。
2.ロボット用に作成されたMoveItを見つけます kinematics.yaml ファイル。
3. kinematics_solver:kdl_kinematics_plugin / KDLKinematicsPlugin [または同様の関数]をkinematics_solver:trac_ik_kinematics_plugin / TRAC_IKKinematicsPluginに置き換えます。
4.必要に応じてパラメータを設定します。
[1] kinematics_solver_timeout [タイムアウト時間(秒)、たとえば0.005]およびposition_only_ikAREをサポートします。
[2] resolve_typeには、Speed、Distance、Manipulation1、Manipulation2を指定できます[詳細については、trac_ik_libのドキュメントを参照してください]。デフォルトはSpeedです。
[3] kinematics_solver_attemptsパラメーターは必要ありません。KDLとは異なり、TRAC-IKソルバーはスタックしたときに再起動されています。
[4] Kinematics_solver_search_resolutionはここでは適用されません。
[5]注:これはMoveItのKDLプラグインにハードコードされているため、効果的なソリューションを決定するために使用されるデカルト誤差距離は1e-5です。



参照:
[1] TRAC-IKキネマティクスソルバー:http://docs.ros.org/kinetic/api/moveit_tutorials/html/doc/trac_ik/trac_ik_tutorial.html