久しぶりに技術ブログっぽい記事を書きます。去年の秋位からROS2(RobotOS2)を使ったロボットを友達とオンラインで定期的に通話しながら作っています。
進捗は下のツイートにぶら下げています。「ROSとRTOSの違いって何?」というところから少しずつ本やネットを参考に手探りで進めてきました。やっているうちに色々気をつけるべきところがあったので記事にしました。
RealSenseデビューしました pic.twitter.com/SEWU8MYROZ
— パスコンパス (@pscmps) 2021年10月30日
今回の記事はFusion360というCADソフトで作ったロボットをurdfという形式に変換しROS2というシステムを使ってシミュレーションする方法についてです。
URDFはUnified Robotics Description Formatの略の様で、ROSはロボットを動かしやすくするミドルウェアの様なものです。
ROSにはROS1と2があり、2の方の情報が少ないのでもし誰かのお役に立ったら嬉しいです。
目次
環境
ROS2 Foxy
Ubuntsu 20.04
Windows上のVirtual boxを使用
ROS2の基本の設定は済んでいる状態とします。 特に面識があったり、アドセンスを設定しているわけではありませんが下の本を参考にしました。
手順の概要
- Fusion360でモデルを作る(気をつけることが結構あるので後述)
- Fusion360にアドインを入れる(バージョンに注意)
- Fusion360でアドインを実行する(ここでROS2を選択)
- joint_state_publisher_gui を入れる(参考リンク後述)
- ワークスペースを作りfusion2urdfで作成されたフォルダを入れ、rviz2、joint_state_publisher_gui、launchを動かす
- スライドバーを動かすとジョイントが動く
Fusion360でモデルを作る際に気をつけること
最初に配置するモデルは「base_link」という名前である必要があります。最初から「base_link」というモデル名で作り始めてもよいですが、リンクを切るという方法でも名前を変更することができます。また、base_linkにしたい部品を複数使用している際にはリンクを切るしかないと思います。
部品を右クリックすると、下のようなメニューが出てきて切ることができます。また、先にジョイントを設定してからリンクを切って名前を変えるとうまく読み込めないことがあるので注意です。
他にもジョイントの順番やジョイントの名前等、気をつけるべきポイントがいくつかあり、こちらの記事を参考にさせていただきました。ありがとうございます。
もう一点、fusion2urdfは何種類かあるためROS2を使うのであればそれに対応したものを使う必要があります。下記のものはOKでした。
joint_state_publisher_guiを入れる
joint_state_publisher_guiというgui上でジョイントの角度を変えるツールを入れます。こちらのページが大変参考になりました。ありがとうございます。
実際に動かす
source /opt/ros/foxy/setup.bash
ワークスペースへ移動して
. install/setup.bash
ワークスペース内へ先ほどfusion2urdfで変換して解凍したフォルダを入れます。
※解凍してそのまま入れるとフォルダが2重になってしまうので中のフォルダを入れます。
colcon build
ターミナルを3つ立ち上げそれぞれ3つを別々に実行します。 rviz2のターミナルでも忘れずに. install/setup.bashを実行してください。忘れると表示されません。
ros2 launch robot_description robot_description.launch.py rviz2 ros2 run joint_state_publisher_gui joint_state_publisher_gui
※ launchの後の「robot_description」はパッケージ名に読み替えてください。
動くとこんな感じになります。
ついにfusion2urdfを使って変換したデータがrviz2で動いた!ただし一緒にやってる友達の画面上で pic.twitter.com/NvgyL5bgeJ
— パスコンパス (@pscmps) 2022年3月6日
まとめ
久しぶりに技術ブログっぽい記事を書きました。こういった記事は誰かのためにたったらもちろん嬉しいですが、正直未来の自分のため(忘れる)という側面もある気がしています。
一緒にロボットを作ってくれる友人には感謝しかありません。たぶん一人だとあんまり触ったことのないLinuxの操作の時点で心が折れています。この記事も確認してもらっていたりします。
読んで下さり、ありがとうございました。