注目キーワード
  1. Photoshop
  2. Python
  3. Raspberry Pi
  4. Arduino

ROS2チュートリアル URDFモデルr2d2をRviz2で表示してみた

  • 2021年7月20日
  • 2022年2月23日
  • ROS2

ここでは「Ubuntu Server 20.04.2 LTS」と「ROS2 Foxy」をインストールした「Raspberry Pi 4 Model B」を使って、URDFモデルの「r2d2」をRviz2で表示する方法を紹介します。

 

この記事を読むことで

Rviz2の導入方法

Rviz2でURDFモデルを表示する方法

を知ることができ

 

ros2urdf_tutorial_r2d2

 

のように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の記述方法について分かりやすかった記事があるので、下記に貼っておきます。

ROSを使う:ロボット記述言語

 

本題からズレたので話を戻し、まずはRviz2をインストールするところから始めます。

 

Rviz2をインストールする

Rviz2は

ROS Index rviz repository

を参考にROS2 Foxy搭載のラズパイへインストールしていきます。

(※ Rviz2やGazeboを使用してシミュレーションを行う場合、ラズパイでは明らかに性能不足ですが・・・)

 

mkdir -p ~/rviz2_ws/src

でrviz2用のワークスペースを作成し

cd ~/rviz2_ws/src

でカレントディレクトリを移動します。

 

そしたら

git clone https://github.com/ros2/rviz.git

colcon build –merge-install

を実行し、rvizのビルドを開始します。

 

※ Chromeのバージョンによって、上記の記述が上手く表示されないものもあるので、追記です。

mergeの前は – が2つ必要です。

 

ros2_tutorial_urdf_r2d2_01

このビルドですが、30分は軽くかかった気がします。

ビルドする際は、時間を有効に活用できるときに行いましょう。

 

ビルドの終盤に

fatal error: resource_retriever/retriever.hpp: No such file or directory
65 | #include “resource_retriever/retriever.hpp”

とC++ヘッダファイルの読み込みに失敗したとエラーが発生しますが、Rviz2は問題なく動作するため、今回はスルーします。

 

ros2_tutorial_urdf_r2d2_02

※ このエラーについて詳しい方がいましたら、ご教授いただければ幸いです。

 

Rviz2のビルドが終わったら、ターミナルを開き

rviz2

を実行しましょう。

 

ros2_tutorial_urdf_r2d2_03

 

Rviz2が起動すれば、準備完了です。

 

rviz, urdfファイルをダウンロードする

続いて、ROS2 Foxyチュートリアルの

1 Create a package

2 Create the URDF File

の箇所を進めていきます。

 

まずは1 Create a packageからです。

 

1Create a package

今回ワークスペースを作成するのが始めての場合は、下記コマンドからdev_wsというワークスペースを作成します。

mkdir -p ~/dev_ws/src

 

ワークスペースを作成、もしくは既に使用しているワークスペースがある場合は

cd ~/dev_ws/src

でカレントディレクトリを移動しましょう。

 

ディレクトリを移動したら、/src下にurdf_tutorialという名前でパッケージを作成します。

ros2 pkg create urdf_tutorial –build-type ament_python –dependencies rclpy

 

パッケージを作成したら

cd urdf_tutorial

とディレクトリを移動して、lコマンドなどで確認してみましょう。

 

ros2_tutorial_urdf_r2d2_04

 

2 Create the URDF File

続いて、URDFファイルなど必要なファイルを公式チュートリアルからダウンロードします。

 

ros2urdf_r2d2_downloadfile

 

上記から

r2d2.urdf.xml

r2d2.rviz

の2つをダウンロードしたら、これらをurdf_shareというフォルダに入れてラズパイのファイルサーバーで共有します。

もちろん、Ubuntu DesktopなどGUI環境で動作させている方は、ワークスペースにそのまま移動してOKです。

 

今回はラズパイ下なので、この方法を使用しています。

 

ros2_tutorial_urdf_r2d2_05

 

ファイルサーバーで上記のファイルを共有する場合

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ファイルの入ったフォルダを準備します。

 

ros2_tutorial_urdf_r2d2_06

 

~/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フォルダ下に作成するので

cd ~/dev_ws/src/urdf_tutorial
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はパッケージの作成時に自動生成されるファイルなので

cd ~/dev_ws/src/urdf_tutorial

とディレクトリを移動し

sudo nano 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

パッケージのビルド・インストールが終了したら

ros2 launch urdf_tutorial demo.launch.py

とlaunchプログラムを実行します。

 

ros2_tutorial_urdf_r2d2_07

↑実行すると、上図のようになる

 

続いて、新しいターミナルを開き

rviz2 -d ~/dev_ws/install/urdf_tutorial/share/urdf_tutorial/r2d2.rviz

を実行してRviz2で確認をしてみます。

 

ros2_tutorial_urdf_r2d2_08

 

すると、URDFモデルが一定の間隔で歩いているのを確認することができました。

 

このように、URDFモデルとRviz2を使ってロボットの動作を確認できるので、ロボットの制御を極めたい方は、挑戦してみると良いと思います。

以上になります、お疲れ様でした。

ros2_tutorial_urdf_r2d2_thumbnail
学びに関する情報をチェック!