ブログ二足歩行ロボット研修二足歩行ロボット研修(kora編)

二足歩行ロボット研修(kora編)[27] 自作ロボットをMoveItで動かせるようにセットアップする

ブログ

こんにちは。koraです。

前回の記事で、歩行時のロボットの重心の運動と着地点の目標位置を求めることができました。今回は、ロボット重心の座標と着地点の位置関係から関節角度を逆算して歩行モーションを作成します。

逆運動学について

多関節ロボットにおいて、ロボットの関節変位から手先の位置と姿勢を求める問題を順運動学と言います。逆にロボットの手先の位置と姿勢が与えられたときに関節変位を求める問題を逆運動学(Inverse Kinematics, IK)と言います。今回のように足先の着地位置から関節角度を求める問題も逆運動学です。

ロボット工学ではヤコビ行列を利用して逐次的に IK を解く手法がよく利用されます。理論的な内容はここには収まりきらないので割愛させていただきますが、参考書としては 実践ロボット制御 基礎から動力学まで などがあります。

一方、ROS には MoveIt と呼ばれるマニピュレータ用のフレームワークがあります。これは主にロボットアームの軌道を計算する用途に用いられますが、ロボットアームに限らず関節を持つロボットの IK を解くことも可能です。

MoveIt 用のセットアップ

自作ロボットを MoveIt で利用するには、初めに MoveIt 用のセットアップが必要です。MoveIt Setup Assistant というツールを使ってセットアップすることができます。公式チュートリアルを参考に、自作ロボットをセットアップしていきたいと思います。

インストール

作業を始める前に MoveIt Setup Assistant をインストールします。ROS Melodic で開発していますので、次のようなコマンドになります。

$ sudo apt install ros-melodic-moveit-setup-assistant

Start

MoveIt Setup Assistant を起動します。以下のコマンドで設定画面が起動します。

$ roslaunch moveit_setup_assistant setup_assistant.launch

起動直後は Start 画面になっています。新規作成か既存パッケージの編集のいずれかを選びます。今回は新規作成なので Create New MoveIt Configuration Package を選択します。第21回の記事で作成した xacro ファイルを読み込ませます。読み込みに成功すると右側の画面に 3D モデルが表示されます。

Generate Self-Collision Matrix

MoveIt には各パーツの干渉チェックを実行する機能があり、Self-Collisions 画面ではその設定を変更できます。Generate Collision Matrix ボタンを押すと、干渉チェックを省略しても問題なさそうな候補を自動で求めて表示してくれます。干渉チェックを省略することによって計算時間を短縮することができるそうです。

Add Planning Groups

動かすロボットの部位を Planning Groups として設定します。このグループが IK を解く際の最小単位になります。今回のロボットは左脚、右脚、左腕、右腕、頭が動くので、それぞれ l_leg、r_leg、l_arm、r_arm、head として設定することにします。

まず左脚から初めます。Add Group ボタンを押して、Kinematics を設定します。Group Name は l_leg とします。Kinematic Solver にはいくつか選択肢がありますが kdl_kinematics_plugin/KDLKinematicsPlugin を選択します。KDL は MoveIt のデフォルトで、Orocos Kinematics and Dynamics Library を利用するものです。

次に Add Joints ボタンを押して、左脚に属する関節を選択します。

左脚、右脚、左腕、右腕、頭それぞれのの設定が終わったら以下の画面ようになります。

Add Author Information

製作者の情報 (名前とメールアドレス) を入力します。これを設定しないと次のステップで警告が出るので注意してください。

Generate Configuration Files

最後に設定を出力したら完了です。ここでは nisoku_kenshu_xyz_moveit_config という名前のパッケージとして出力しています。

動作確認

作成した MoveIt の設定が正常に機能するか確認します。MoveIt Setup Assistant がデモ用の launch ファイルを生成してくれているので、それを呼び出してデモ画面を表示させます。

$ roslaunch nisoku_kenshu_xyz_moveit_config demo.launch

Planning タブの Query 欄に Planning Group のドロップダウンリストがありますので、左脚の l_leg を選択します。画面左側の 3D モデルの左足先に赤青緑のジンバルが表示されるので、これをドラッグすることで足先の目標姿勢を指定できます。足先に合わせて MoveIt が各関節の角度を計算し、3D モデルに反映させていることが分かります。

次回

MoveIt の設定と動作確認を行いました。次回は Python スクリプトから MoveIt を使って IK を解くところをやってみたいと思います。

タイトルとURLをコピーしました