はじめに
こんにちは、アールティのクアンです。今回のブログは社内で行われたチーム開発研修について解説していこうと思います。本当研修では計3回ブログを書きます。今回はその初回のブログです。よろしくお願いします。
チーム開発研修について
チーム開発研修とは、新入社員が一つのチームを組んでCRANE-X7とROS2でピックアンドプレースシステムを開発する課題です。以下の画像の中にある箱を一つ選択し、CRANE-X7でその箱を掴んで指定された目標位置まで移動させる課題です。目標位置は4箇所の置き場所があり、箱を順番に置く必要があります。また、箱のスタート置き場は一定範囲内のランダムに置かれるため、箱を掴む前に箱の位置を探すための画像処理も行わなければなりません。
開発内容について
今回の課題では私がソフトウェア開発を担当し、ROS2でRealSenseD435カメラとCRANE-X7を制御するシステムを開発しました。私たちはアールティが公開したCRANE-X7のROS2パッケージを基にArUcoマーカによるピックアンドプレースを改良し、システムを開発しました。
元のサンプルコードでは、ID:0のArUcoマーカを貼った箱を自動で探し、掴んである目標位置まで移動させるため、このサンプルコードに4箇所の目標位置を追加したら、今回の課題で求められた動きを作成出来ました。改良したサンプルコードによるピックアンドプレースデモは以下の動画のようになります。
このように箱を掴んで4箇所の目標位置まで移動させることができましたが、不安定でカクカクした動きが動画内で確認できます。この問題の原因は、『独立した目標地点の最適化』と『断続動作による関節の摩擦負荷』によって滑らかでない動きになっていると思われます。一つ目の問題は、マニピュレータの手先の位置制御でMoveItのsetTargetPose
を使用したため、各目標位置ごとに個別に最適化され、一貫性のない経路が見られます。二つ目の問題は、マニピュレータが断続動作を行う際に関節に摩擦力が働き、目標位置から次の目標位置へ移動する時の負荷が大きくなることです。
これらの問題点を解決するために、MoveItのCartesianパスを使用し、直線補間による連続的な軌道生成が可能になり、目標位置までの滑らかな動作が期待できます。Cartesianパスによる軌道生成はアールティが公開したCRANE-X7用のサンプルコードを参考し、作成しました。また、Cartesianパスを使用したピックアンドプレースデモは以下の動画のようになります。
おわりに
チーム開発研修初回のブログでは、CRANE-X7のROS2パッケージのサンプルコードを改良し、ArUcoマーカを貼った箱のピックアンドプレースのサンプルコードを作成しました。また、MoveItのCartesianパスを用いて直線補間の軌道を生成し、より滑らかなピックアンドプレース実現しました。次回は円弧補間を使ったピックアンドプレースについて紹介します。