0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【gazebo】jointを動的につけ外しする【ドッキング、バキュームグリッパー】

Posted at

お疲れ様です。秋並です。

今回は、gazeboで使用できる

  • 動的にjointをつけ外し可能になるプラグイン「AttachablePlugin」

を紹介します。

本プラグインを使用することで、下動画のように

  • 移動ロボットによるシェルフへのドッキング
  • バキュームグリッパーの模擬

などが実現できます。

attachable_joint_mobile_robot_demo.gif

attachable_joint_arm_demo.gif

本プラグインは、Dagu12氏が作成したgazebo用pluginを「gazebo harmonic用に修正」「デモ用プログラムを追加」したものになります。

https://github.com/Dagu12s/AttachablePlugin

目次

動作環境

本プラグインは以下の環境で動作確認しています。

  • Ubuntu 24.04
  • ROS 2 Jazzy
  • gazebo harmonic

インストール

最初に、本リポジトリをROS2のワークスペースにクローンします(ROS2のワークスペースは作成済みの前提とし、ここでは~/ros2_wsとします)。

cd ~/ros2_ws/src
git clone https://github.com/akinami3/AttachablePlugin.git

ワークスペースをビルドし、ソースをとおします。

cd ~/ros2_ws
colcon build --symlink-install
source ~/ros2_ws/install/setup.bash

デモ

ここからは、本プラグインを使用したデモの実行手順を記載します。

移動ロボットへのシェルフのドッキング

ここでは、下動画のような搬送ロボットとシェルフをアタッチするシミュレーションを実行します。

attachable_joint_mobile_robot_demo.gif


搬送ロボットへのシェルフのドッキングのサンプルを実行します。

ros2 launch attachable_plugin_demos mobile_robot_demo.launch.py

gazeboが起動したら、最初に搬送ロボットをteleopで動かしてみてください。この時点では、アタッチされておらず搬送ロボットは独立して動くはずです。


搬送ロボットをシェルフの真下付近に移動させたら、アタッチするためのトピックを発行します。

gz topic -t /attach -m gz.msgs.StringMsg   -p 'data:"[mobile_robot_model][base_link][shelf][poll1][attach]"'

トピックが発行されると、搬送ロボットとシェルフがアタッチされます。アタッチされた状態で、搬送ロボットを動かすと、シェルフも一緒に動きます。

今回は、キャスターのついていないシェルフを使用しているため、シェルフをつけた状態だと移動ロボットの動作が少し不安定になります。実際は、「アタッチする直前にシェルフを少し浮かせる」 「キャスターのついたシェルフを使用する」などの工夫が必要です。)

バキュームグリッパーの模擬

ここでは、下動画のようにバキュームグリッパーを模擬するようなシミュレーションを実行します。

attachable_joint_arm_demo.gif


バキュームグリッパーのサンプルを実行します。

ros2 launch attachable_plugin_demos arm_robot_demo.launch.py

次に、以下のノードを起動します。

ros2 run attachable_plugin_demos attach_contact_link 

こちらは、「"接触センサが設定されたリンク"にオブジェクトが接触したら、アタッチする」というノードになります。

gazeboの接触センサは「接触したオブジェクトのモデル名/リンク名」を取得できるため、それを利用しています。


次に、アームの各関節をキーボードで制御するノードを起動します。

ros2 run attachable_plugin_demos arm_joint_teleop

ノードを起動したら、アームの先端のリンクをボックスに近づけてください。

接触センサが反応すると、アームの先端のリンクとボックスがアタッチされます。

アタッチされた状態で、アームを動かすと、ボックスも一緒に動くことが確認できます。


最後に、デタッチするためのトピックを発行すると、アームの先端のリンクとボックスがデタッチされます

ros2 topic pub /detach std_msgs/Empty "{}"

さいごに

今回は、「jointを動的につけ外し可能になるプラグイン」を紹介しました。

本記事が、お役に立つことがあれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?