💡

Moveit2を使ってロボットアームを制御するまで (2)

2024/07/21に公開

概要

Nexis-Rというチームでロボカップレスキュー実機リーグに参加している者です。
MoveItセットアップアシスタントを使ってPandaArmのセットアップを行います。

0. moveit2_tutorialsのインストール

前回の記事でmoveit2_tutorialsパッケージを用いてPandaArmを動かしました。
今回はこのPandaArmのモデルを用いてmoveitの設定を行います。前回の手順が終わってない場合は前回記事を見ながら環境構築を行ってください。
Moveit2を使ってロボットアームを制御するまで (1)

1. MoveIt Setup Assistantを起動する

ros2 launch moveit_setup_assistant setup_assistant.launch.py

Create New or edit exsting?の2つの選択肢でCreate New Moveit Configuration Packageを選択します。

Load a URDF or COLLADA Robot ModelのところのBrowseを選択して、panda.urdfを選びます。
その後Load Filesを押します。

~/ws_moveit2/src/moveit_resources/panda_description/urdf/panda.urdf


ファイルが正しく読み込まれるとSuccess!と表示されます。

2. Self-Collision Matrixの設定

左側のSelf Collisionsを選択し、Generate Collision Matrixを押します。

Generateが終わると、結果がメインテーブルに表示されます。

3. 仮想ジョイントを追加する

左側のVirtual Jointsを選択し、Add Virtual Jointを選択します。

Virtual Joint Name -> virtual_joint
Child Link -> panda_link0
Parant Frame Name -> world
Joint Type -> fixed

4. Planning Groupsを定義する

左側のPlanning Groupsを選択し、右下のAdd Groupを押します。

画像の通りにPlanning Groupsを設定します。
・Group Name -> panda_arm
・Kinematic Solver -> kdl_kinematics_plugin/KDLKinematicsPlugin
・Search ResolutionとKin. Search Timeoutはどちらもデフォルトで0.005のまま
・Group Default Planner -> BiTRRT

その次にAdd Jointsを選択して、ジョイントの追加を行う。
腕に属するすべてのジョイント(Virtual_jointからpanda_joint8)を選択し、>マークを押して追加する。これによってジョイントの連続チェーンを簡単に作ることができます。

Selected Jointsが下の画像のようになっていればOK。Saveを押して保存する。


次にエンドエフェクタのPlanning Groupの設定をする。
右下のAdd Gropupを再び押す。
・Group Name -> hand
エンドエフェクタは連続チェーンになっていないので、Kinematic SolverはNoneに設定する。

その次にAdd Jointsを選択して、エンドエフェクタのジョイントの追加を行う。
エンドエフェクタに属するすべてのジョイント(panda_hand_jointからpnada_finger_joint2)を選択し、>マークを押して追加する。

Selected Jointsが下の画像のようになっていればOK。Saveを押して保存する。

アームとエンドエフェクタの2つのPlanning Groupsが追加されて画像の通りになれば、Planning Groupsを定義されました。

5. Robot Posesを定義する

set up assistantを使用した時のロボットの構成に定義済みのポーズを追加することができます。

左側のRobot Posesを選択し、右下のAdd Poseを押します。
Pose Name -> ready
Planning Groups -> panda_arm
panda_joints1からpanda_joints7を次のようにポーズを定義します。
{0.0, -0.785, 0.0, -2.356, 0.0, 1.571, 0.785}

入力が終わったら、Saveを押して保存します。
次にグリッパーの開くポーズを追加する。再びAdd Poseを選択する。
Pose Name -> open
Planning Groups -> hand
panda_finger_joint1 -> 0.035

入力が終わったら、Saveを押して保存します。
次にグリッパーの閉めるポーズを追加します。
Pose Name -> close
Planning Groups -> hand
panda_finger_joint1 -> 0.0

これで3つのポーズが定義されました。

6. エンドエフェクタにラベルを付ける

左側のEnd Effectorsを選択し、右下のAdd End Effectorを押します。
End Effector Name -> hand
End Effector Group -> hand
Parent Link -> panda_link0

7. ros2_control URDFの変更

URDF/Xacroをros2_control URDFに変更します。
デフォルトでPositionのCommand Interfaces、PositionとVelocityのState Interfacesを選択し、Add interfacesを押して設定を追加してください。

8. パッシブジョイントの追加

Panda Armにはパッシブジョイントが含まれないため、スキップ。

9. ROS 2 Controllerの追加

ROS 2 controlは、ロボットのリアルタイム制御のためのフレームワークであり、新しいロボットおよびハードウェアの統合を管理および簡素化するように設計されています。
まず最初にアームのコントローラを追加します。
左側のROS 2 Controllersを選択し、Add Controllerを押してください。
Controller Name -> panda_arm_controller
Controller Type -> joint_trajectory_controller/JointTrajectoryController

その後、Add Planning Groups Jointsを押してください。
Available GroupsでPanda_armを選択して、>マークを押して、Selected Groupsに追加してください。終わったSaveを教えて保存してください。

同様にハンドのコントローラを追加します。Add Controllerを押してください。
Controller Name -> hand_controller
Controller Type -> position_controllers/GripperActionController
その後、Add Planning Groups Jointsを押してください。
Available Groupsでhandを選択して、>マークを押して、Selected Groupsに追加してください。終わったSaveを押して保存してください。

画像の通りになれば、追加が完了しました。

10. MoveIt Controllerの追加

MoveIt Controllerの追加を行います。左側のメニューからMoveIt Controllersを選択し、Add Controllerを押してください。

Controller Name -> panda_arm_controller
Controller Type -> FollowJointTrajectory
Action Namespace -> follow_joint_trajectory
Default -> true
その後、Saveを押して保存してください。
次にハンドコントローラを追加します。
Controller Name -> hand_controller
Controller Type -> GripperCommand
Action Namespace -> gripper_cmd
Default -> true

その後、Saveを押して保存してください。
画像の通りになれば、追加が完了しました。

11. Perceptionの追加

RealSenseのような3Dセンサがある場合はここで設定を行う。今回PandaArmには接続されていない為省略をする。公式チュートリアルに設定方法が記載されているので、必要であれば参照する。

12. Launchファイルを設定する

Launchファイルに含まれるファイルの選択をする。通常はデフォルトのままで問題ないが、必要に応じて変更を行います。

13. 著者情報を追加する

必要に応じて著者情報を追加します。

14. 構成ファイルを生成する

これまで設定してきたMoveItの構成ファイルを生成します。
Configuration Package save Pathに保存したいパッケージのパスを入力する。今回は私は
/home/hasegawa/ws_moveit/src/panda_moveit_config
というように新しいパスに構成ファイルを決めて、Generate Packageを押して生成を行います。
生成後にExit Setup Assistantを押してSetup Assistantを終わらせます。

2. panda_moveit_configをビルドする

生成したMoveItの構成ファイルをビルドします。

cd ~/ws_moveit2
colcon build --packages-select panda_moveit_config
source install/setup.bash
ros2 launch moveit_resources_panda_moveit_config demo.launch.py

こんな画面が出てくれば正しくlaunchできています。

その後Add -> MotionPlanningを追加します。

Planning Groupをpanda_armにしてインタラクティブマーカーを動かしてPlan&Excuteを押して任意の位置までアームが動作計画を行い自動的に動けば、設定して期待通りの動作ができています。

Discussion