ここでは「Ubuntu Server 20.04.2 LTS」と「ROS2 Foxy」をインストールした「Raspberry Pi 4 Model B」を使って、URDFモデルの「r2d2」をRviz2で表示する方法を紹介します。
この記事を読むことで
Rviz2の導入方法
Rviz2でURDFモデルを表示する方法
を知ることができ
のようにURDFモデルをRviz2上で動かすことを体験することができます。
ROS2 FoxyとRviz2でロボットのシミュレーションを導入したい方にもオススメです。
それでは早速ですが、始めていきましょう。
※ この記事は
ROS2 Foxy Tutorials : Using URDF with robot_state_publisher
を参考にしています。
ROS2を用いてURDFモデルをRviz2で表示する
今回はチュートリアルをベースにRviz2へ表示するので、URDFファイルの記述は行いませんが、オリジナルのロボットを表示させる場合は別途URDFファイルを準備する必要があります。
余談ですが、ROS1、ROS2でロボットのモデル情報を記述する言語は「URDF」以外にも「xacro(ザクロ)」があるので、これらの違いを知っておくのも良いと思います。
URDFとXacroの記述方法について分かりやすかった記事があるので、下記に貼っておきます。
本題からズレたので話を戻し、まずはRviz2をインストールするところから始めます。
Rviz2をインストールする
Rviz2は
を参考にROS2 Foxy搭載のラズパイへインストールしていきます。
(※ Rviz2やGazeboを使用してシミュレーションを行う場合、ラズパイでは明らかに性能不足ですが・・・)
でrviz2用のワークスペースを作成し
でカレントディレクトリを移動します。
そしたら
git clone https://github.com/ros2/rviz.git
colcon build –merge-install
を実行し、rvizのビルドを開始します。
※ Chromeのバージョンによって、上記の記述が上手く表示されないものもあるので、追記です。
mergeの前は – が2つ必要です。
このビルドですが、30分は軽くかかった気がします。
ビルドする際は、時間を有効に活用できるときに行いましょう。
ビルドの終盤に
65 | #include “resource_retriever/retriever.hpp”
とC++ヘッダファイルの読み込みに失敗したとエラーが発生しますが、Rviz2は問題なく動作するため、今回はスルーします。
※ このエラーについて詳しい方がいましたら、ご教授いただければ幸いです。
Rviz2のビルドが終わったら、ターミナルを開き
を実行しましょう。
Rviz2が起動すれば、準備完了です。
rviz, urdfファイルをダウンロードする
続いて、ROS2 Foxyチュートリアルの
1 Create a package
2 Create the URDF File
の箇所を進めていきます。
まずは1 Create a packageからです。
1Create a package
今回ワークスペースを作成するのが始めての場合は、下記コマンドからdev_wsというワークスペースを作成します。
ワークスペースを作成、もしくは既に使用しているワークスペースがある場合は
でカレントディレクトリを移動しましょう。
ディレクトリを移動したら、/src下にurdf_tutorialという名前でパッケージを作成します。
パッケージを作成したら
とディレクトリを移動して、lコマンドなどで確認してみましょう。
2 Create the URDF File
続いて、URDFファイルなど必要なファイルを公式チュートリアルからダウンロードします。
上記から
r2d2.urdf.xml
r2d2.rviz
の2つをダウンロードしたら、これらをurdf_shareというフォルダに入れてラズパイのファイルサーバーで共有します。
もちろん、Ubuntu DesktopなどGUI環境で動作させている方は、ワークスペースにそのまま移動してOKです。
今回はラズパイ下なので、この方法を使用しています。
ファイルサーバーで上記のファイルを共有する場合
cd /home/share //ディレクトリの移動 mv urdf_share ~/dev_ws/src/urdf_tutorial //フォルダの移動 cd ~/dev_ws/src/urdf_tutorial //カレントディレクトリを移動 cp -r urdf_share urdf //urdfというコピーを作成 sudo rm -r urdf_share //urdf_shareフォルダの削除
を順に実行し、urdf_tutorial下に.urdf、.rvizファイルの入ったフォルダを準備します。
~/dev_ws/src/urdf_tutorial/urdfに、ダウンロードしたファイルが入っていればOKです。
ros2 launchファイルなどの作成とビルド
ここからは
3 Publish the state
4 Create a launch file
5 Edit the setup.py file
の公式チュートリアル通りにプログラムを記述していきます。
3 Publish the state
プログラムは公式チュートリアルに全文記載されているので、編集方法などを補足しておきます。
cd ~/dev_ws/src/urdf_tutorial/urdf_tutorial
sudo nano state_publisher.py
を実行し、sudo nanoを用いてstate_publisher.pyを編集しても良いと思います。
4 Create a launch file
launchファイルはlaunchフォルダ下に作成するので
mkdir -p launchcd ~/dev_ws/src/urdf_tutorial/launchsudo nano demo.launch.py
とmkdir -pでurdf_tutorial下にlaunchフォルダを作成してから、プログラムを作成・編集するようにしてください。
5 Edit the setup.py file
setup.pyはパッケージの作成時に自動生成されるファイルなので
とディレクトリを移動し
などの好みの編集モードでプログラムを記述すればOKです。
Rviz2上でURDFモデルを確認する
では最後に
6 Install the package
7 View the results
を行い、Rviz2でURDFモデルが表示・動作しているのを確認してみましょう。
6 Install the package
まずは、作成したパッケージをビルド・インストールします。
cd ~/dev_ws
colcon build –symlink-install –packages-select urdf_tutorial
source install/setup.bash
7 View the result
パッケージのビルド・インストールが終了したら
とlaunchプログラムを実行します。
↑実行すると、上図のようになる
続いて、新しいターミナルを開き
を実行してRviz2で確認をしてみます。
すると、URDFモデルが一定の間隔で歩いているのを確認することができました。
このように、URDFモデルとRviz2を使ってロボットの動作を確認できるので、ロボットの制御を極めたい方は、挑戦してみると良いと思います。
以上になります、お疲れ様でした。