MoveIt!を用いたロボットアームの動作計画
Categories:
目的
ROS2では,ロボットの動作計画を行うためのライブラリとしてMoveIt!が用意されています. MoveIt!を利用することで,目標姿勢までの軌跡を計算する動作計画や障害物との干渉判定を容易に行うことができます. 講義の前半では動作計画について学び,後半ではMoveIt!を用いてロボットアームの動作計画を体験します.
準備
まずはrosdepとaptをアップデートします.
|
|
次に関連パッケージをインストールします.
colcon mixin
は,colcon build
する際の引数を簡単に呼び出すためのものです.
|
|
ワークスペースを作成し,ホスティングサービスであるgithubからパッケージをダウンロードします.
|
|
関連するパッケージをダウンロードとインストールします.
|
|
ワークスペースをビルドします.
多くのパッケージをビルドするため30分ほど要します.
一部のPCではフリーズしたように見えますが,内部的には動いてますので強制停止しないようにしてください.
PCのスペックが高性能(メモリが32GB)の場合には,colcon build
の追加オプション--executor sequential
を無くすと高速にビルドできます.
|
|
メモリ不足でエラーが発生が発生する場合には,一時的にスワップ領域を割り当てるとエラーを回避できます. ただし,ストレージの一部をメモリとして利用することになるため,ビルドにはさらに時間を要することになりますので注意してください.
ストレージに空きがあるかを確認します.
|
|
例えば,8GBのスワップ領域を作成する場合には下記のコマンドを実行します.
|
|
上記は一時的な処置ですので,再起動すればスワップ領域は解放されます.
ビルドが完了したらsourceコマンドを実行しましょう.
|
|
実行
これまでの内容でMoveIt!を使う準備が整いました. 下記のlaunchファイルを起動してみましょう.
|
|
launchファイルを実行するとrviz2が起動します.
以前にrviz2を起動した時とは異なり,ウィンドウの左下にMotionPlanning
の項目が追加されています.
MotionPlanning
のcontext
タブを開きましょう.
このウィンドウでPlannning Library
を選ぶことができます.
初期の状態では,ompl
のunspecified
が設定されています.
unspecified
をクリックすると他の動作計画法に切り替えることができます.
所望する動作計画法がある場合には,こちらから設定しましょう.
なお,
unspecified
のままにした場合には,RRTConnectkが用いられます.
planning
タブに移動しましょう.
Query
のGoal State
をcurrent
からrandom
に変更すると,オレンジ色で表現されたロボットアームの姿勢が変化します.
このオレンジ色で表現されたロボットアームは,目標姿勢を表します.
リンクが赤色で表現された場合には干渉を表しますので,もう一度random
を選択して違う姿勢にしましょう.
ロボットのエンドエフェクター付近には,赤緑青色の矢印と円状のマーカーが表示されています.
これはインタラクティブマーカーと呼ばれるもので,このマーカーを用いてロボットの位置・姿勢を調整することができます.
矢印をドラッグすると移動,円状のマーカーをドラッグすると回転させることができます.
それでは,動作計画を行いロボットを動かしてみましょう.
Plan
ボタンで動作計画を行うことができます.
Plan
を実行後,問題ない動きであることを確認したらExeute
ボタンで実行できます.
動作計画法によってはアルゴリズムで乱数を使用している場合があります.
その場合,Plan
を実行する度にロボットの軌道が変わることがあります.
今回はシミュレーションですので大きな問題は発生しませんが,実機で扱う場合には注意が必要です.
次に3次元空間中に障害物を配置してみましょう.
Scene Objects
タブを選択してください.
左下の0.2という数字が3つ並んでいますが,これはXYZ方向の障害物の大きさを表します.
大きさを変更したい場合には数値を変えてください.
また,形状を変えたい場合にはBox
をクリックし,希望する形状を選択してください.
大きさと形状を設定後,+
ボタンをクリックすると3次元空間中に障害物が出現します.
障害物もインタラクティブマーカーで位置・姿勢を変更できます.
また,Scene Objects
のChange object pose/scale
からも位置・姿勢を変更できる他,大きさも変えることが可能です.
ロボットの軌道上に障害物を配置して動作計画を行います. 障害物に衝突しない軌道を生成することができました.
Displays
のTrajectory
にあるShow Tail
の項目にチェックを入れるとロボットの軌道を可視化できます.
ただし,多くの処理が発生し,PCによっては動きが重くなるので注意してください.
Tail Step Size
を大きくすると,軌跡の描画間隔を大きくできます.
動きが多少は軽くなりますので,ちょうど良い値に調整してください.