Moveit2を使ってロボットアームを制御するまで (3)
概要
NuTech-Rというチームでロボカップレスキュー実機リーグに参加している者です。
MoveIt2セットアップアシスタントを使って自作の6自由度ロボットアーム(チーム開発中のロボットアームを簡略化したもの)のURDFファイルを用いて、MoveIt2を使用するためのセットファイルパッケージの作成を行います。
1. MoveIt2のインストール
sudo apt install ros-humble-moveit
2. デモリポジトリのインストール
下記のリンクがこの記事のデモリポジトリです。urdfはsolidworksでロボットのモデルを作成し、それぞれのパーツをstl化、その後ubuntu上で位置調整をしながらurdfとstlを紐付けしました。
source /opt/ros/humble/setup.bash
rosdep update
cd ~/
git clone https://github.com/NuTech-R/simple_arm_moveit_demo
cd ~/simple_arm_moveit_demo
rosdep install -r -y -i --from-paths .
3. 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を押します。
~/simple_arm_moveit_demo/src/simple_arm_moveit_demo/simple_arm_moveit_demo_description/urdf/simple_arm.urdf
ファイルが正しく読み込まれるとSuccess!と表示されます。
2. Self-Collision Matrixの設定
左側のSelf Collisionsを選択し、Generate Collision Matrixを押します。
Generateが終わると、結果がメインテーブルに表示されます。
3. 仮想ジョイントを追加する
左側のVirtual Jointsを選択し、Add Virtual Jointを選択します。
今回は何も設定しません。
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を選択して、ジョイントの追加を行う。
腕に属するすべてのジョイント(body0_joint_yawからbody5_joint)を選択し、>マークを押して追加する。これによってジョイントの連続チェーンを簡単に作ることができます。
Selected Jointsが下の画像のようになっていればOK。Saveを押して保存する。
エンドエフェクタのPlanning Groupsは設定する必要がないので、これでsimple_armのPlanning Groupsを定義されました。
5. Robot Posesを定義する
set up assistantを使用した時のロボットの構成に定義済みのポーズを追加することができます。
左側のRobot Posesを選択し、右下のAdd Poseを押します。
Pose Name -> initial_positions
Planning Groups -> simple_arm
body1_jointからbody5_jointを次のようにポーズを定義します。
{0.0, 0.0, 0.0, 0.0, 0.0}
入力が終わったら、Saveを押して保存します。
次にグリッパーの開くポーズを追加する。再びAdd Poseを選択する。
Pose Name -> high_positions
Planning Groups -> simple_arm
{0.0, 0.9920, -1.3227, 0.2959, 0.0}
入力が終わったら、Saveを押して保存します。
これで2つのポーズが定義されました。
6. エンドエフェクタにラベルを付ける
左側のEnd Effectorsを選択し、右下のAdd End Effectorを押します。
End Effector Name -> hand
End Effector Group -> simple_arm
Parent Link -> body0_link_yaw
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 -> simple_arm_controller
Controller Type -> joint_trajectory_controller/JointTrajectoryController
その後、Add Planning Groups Jointsを押してください。
Available GroupsでPanda_armを選択して、>マークを押して、Selected Groupsに追加してください。終わったSaveを教えて保存してください。
画像の通りになれば、追加が完了しました。
10. MoveIt Controllerの追加
MoveIt Controllerの追加を行います。左側のメニューからMoveIt Controllersを選択し、Add Controllerを押してください。
Controller Name -> simple_arm_controller
Controller Type -> FollowJointTrajectory
Action Namespace -> follow_joint_trajectory
Default -> true
その後、下にあるAdd Planning Group JointsSaveを押してください。
Available Groupsでsimple_armを選択して、>マークを押して、Selected Groupsに追加してください。終わったSaveを教えて保存してください
画像の通りになれば、追加が完了しました。
11. Perceptionの追加
RealSenseのような3Dセンサがある場合はここで設定を行う。今回PandaArmには接続されていない為省略をする。公式チュートリアルに設定方法が記載されているので、必要であれば参照する。
12. Launchファイルを設定する
Launchファイルに含まれるファイルの選択をする。通常はデフォルトのままで問題ないが、必要に応じて変更を行います。
13. 著者情報を追加する
必要に応じて著者情報を追加します。
14. 構成ファイルを生成する
これまで設定してきたMoveItの構成ファイルを生成します。
Configuration Package save Pathに保存したいパッケージのパスを入力する。今回は私は
/home/hasegawa/simple_arm_moveit_demo/src/simple_arm_moveit_demo/simple_arm_moveit_config
というように新しいパスに構成ファイルを決めて、Generate Packageを押して生成を行います。
生成後にExit Setup Assistantを押してSetup Assistantを終わらせます。
15. simple_arm_moveit_configをビルドする
生成したMoveItの構成ファイルをビルドします。
cd ~/simple_arm_moveit_demo
colcon build --packages-select simple_arm_moveit_config
source install/setup.bash
ros2 launch simple_arm_moveit_config demo.launch.py
こんな画面が出てくれば正しくlaunchできています。
Planning Groupをpanda_armにしてインタラクティブマーカーを動かしてPlan&Excuteを押して任意の位置までアームが動作計画を行い自動的に動けば、設定して期待通りの動作ができています。
参考

NuTech-Rは長岡技術科学大学レスキュー工学研究室のロボット開発チームです。レスキューロボットの競技会を通じてロボットの社会実装を目指して活動しています。sites.google.com/view/nutechr/home
Discussion