見出し画像

ROS入門 (49) - MoveIt2の使い方

「MoveIt2」の使い方をまとめました。

・Foxy

前回

1. MoveIt2

「MoveIt2」はロボット制御用のプラニングフレームワークです。

次のような機能を提供しています。

・モーションプランニング
ロボットアームが周囲の障害物の位置、関節の角度、ゴールまでの軌道などの情報を元に、ロボット自身の動きをプランニング。

・マニピュレーション
ロボットアームが対象物に対し、動かす、組み立てる、塗装する、溶接するなどの動作の制御。

・運動学(順運動学・逆運動学)
ロボットの関節の変位からロボットの姿勢(順運動学)とロボットの姿勢からロボットの関節の変位(逆運動学)の計算。

・ナビゲーション
自立移動するロボットがゴール位置までの移動経路を計算。

・3D環境認識
自律移動するロボットがゴール位置までの移動経路を計算するために、周囲の3D環境を認識する機能。

2. ワークスペースのセットアップ

ROS入門 (9) - ROS2のパッケージの作成」と同様です。

3. パッケージの準備

今回は、「moveit_tutorials」を使います。

(1) resdepとaptのアップデート。

$ rosdep update
$ sudo apt update
$ sudo apt dist-upgrade

(2) インストールに必要なツールのインストール。

$ sudo apt install python3-rosdep
$ sudo apt install python3-colcon-common-extensions
$ sudo apt install python3-colcon-mixin
$ colcon mixin add default https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml
$ colcon mixin update default
$ sudo apt install python3-vcstool

(3) 「moveit2_tutorials」をクローンと依存関係のインストール。

$ cd ~/colcon_ws/src
$ git clone https://github.com/ros-planning/moveit2_tutorials.git -b foxy
$ vcs import < moveit2_tutorials/moveit2_tutorials.repos
$ rosdep install -r --from-paths . --ignore-src --rosdistro $ROS_DISTRO -y

(4) ワークスペースのビルド。

$ cd ~/colcon_ws
$ colcon build --mixin release

(5) ワークスペースのセットアップ。
ターミナルを開くたびに必要になるため、「~/.bashrc」にも追加します。

$ source ~/colcon_ws/install/setup.bash

4. rviz2の起動

rviz2」の「MotionPlanningプラグイン」を使って、「MoveIt2」でロボットアームを制御する様子を可視化します。

(1) rviz2の起動。

$ ros2 launch moveit2_tutorials demo.launch.py rviz_tutorial:=true

(2) DisplaysタブのAddボタンを押し、「MotionPlanning」を選択し、OKボタンを押す。

rviz2にpandaが表示されます。

(3) 「Displays → MotionPlanning 」で以下を設定。

・PlanningRequest → PlanningGroup : panda_arm

5. ロボットの表示

ロボットの表示には4種類あり、「Displaysタブ」の「MotionPlanning 」で表示・非表示を切り替えることができます。

・Scene Robot → Show Robot Visual : 現在のロボットの姿勢。
・Planning Path → Show Robot Visual : ロボットのスタートからゴールまでの軌跡。
・Planning Request → Query Start State : ロボットのスタート状態 (緑)。
・Planning Request → Query Goal State : ロボットのゴール女歌 (橙)。

6. インタラクティブマーカー

トップメニューの「Interact」を選択した状態で、「スタート状態」と「ゴール状態」を表示することで、緑アームと橙アームが表示されます。各アームのエンドエフェクターには「インタラクティブマーカー」が表示され、ドラッグで移動させることができます。

7. アームの衝突判定

アームのリンク同士を衝突させると、リンクが赤くなります。

「MotionPlanning → Planning」の「Collision-aware IK」をONにすることで、衝突のないエンドエフェクタの姿勢を見つけようとします。OFFの場合、衝突を許可します。この状態に関係なく、衝突しているリンクは赤くなります。

8. モーションプランニング

スタート状態とゴール状態を指定することで、その軌跡を計算して実行することができます。

(1) マーカーでアームのスタート状態を指定。
(2) マーカーでアームのゴール状態を指定。
(3) 「MotionPlanningタブ」の「Planning」の「Plan」ボタンを押す。
スタート状態からゴール状態までの軌跡が表示されます。
(4)「MotionPlanningタブ」の「Planning」の「Execute」ボタンを押す。
ロボット本体でプランを実行します。

9. Pythonはまだ未対応な模様

「MoveIt」のROS2対応は遅れていて、move_commander(Python)とRvizプラグイン(GUI)もまだ未対応な模様です。「Unity Robotics Hub」も、NavigationのサンプルはROS2版ですが、MoveItのサンプルはROS1版でした。

次回



この記事が気に入ったらサポートをしてみませんか?