LoginSignup
2
4

More than 1 year has passed since last update.

ROSの勉強 第18弾:rviz

Last updated at Posted at 2021-03-02

#プログラミング ROS< rviz >

はじめに

1つの参考書に沿って,ROS(Robot Operating System)を難なく扱えるようになることが目的である.その第18弾として,rvizを扱う.

環境

仮想環境
ソフト VMware Workstation 15
実装RAM 2 GB
OS Ubuntu 64 ビット
isoファイル ubuntu-mate-20.04.1-desktop-amd64.iso
コンピュータ
デバイス MSI
プロセッサ Intel(R) Core(TM) i5-7300HQ CPU @ 2.50GHz 2.50GHz
実装RAM 8.00 GB (7.89 GB 使用可能)
OS Windows (Windows 10 Home, バージョン:1909)
ROS
Distribution noetic
プログラミング言語 Python 3.8.5
シミュレーション gazebo

rviz (ROS visualization)

ロボットやセンサ,アルゴリズム向けの汎用の3次元可視化環境のこと.どのロボットにも使うことができ,特定のアプリケーションに対してすぐに設定できる.

設定の流れ

ここでは,rviz上でロボットモデルの表示・カメラ・深度カメラをできることを目標に,設定の流れを学ぶ.まず,ここで必要なものをコマンドラインから呼び出す.以下に必要なものを示す.
image.png

なお,後でやりやすいように,gazebo上でロボットの位置を次の図のようにした.
image.png

ここから,rviz上での作業に取り掛かる.
まず,起動したときの状態を次に示す.
image.png

このままでは,基準となるのがよくわからないmapとなる.そこで,ロボットの部分を指すodomを基準にする.

image.png
変更後は次のとおりである.
image.png
先ほど,赤で示されていたエラー部分が消えている.

次に,ロボットをrviz上で表示させる.
image.png
RobotModel追加後は次のとおりである.
image.png
gazebo上にあったロボットが表示された.

次に,ロボットのカメラ画像を表示させる.
image.png
Image追加後は次のとおりである.
image.png
画像を表示させるウィンドウが表示されたが,画像はまだ反映されていない.カメラの画像データを配信しているトピックを指定していないからである.続いて,RGB画像データを配信しているトピックを指定して,画像データを反映させる.
image.png
トピックを指定後は次のとおりである.
image.png
この画像表示ウィンドウは移動可能で,次のように調整可能である.
image.png
画像だけでは,操作が難しい.そこで,深度カメラによる点群データもrvizに反映させる.
image.png
PointCloud2追加後は次のとおりである.
image.png
点群データはまだ反映されていない.画像表示のときと同様,カメラの画像データを配信しているトピックを指定していないからである.続いて,点群データを配信しているトピックを指定して,点群データを反映させる.
image.png
トピックを指定後は次のとおりである.
image.png

また,rviz上で見る方向を変えることで,次に示すように俯瞰視しながら,カメラを利用するということもできる.
image.png

設定の流れとしては,以上である.
これで,俯瞰視しながら,カメラを利用するオペレータインタフェースの設定ができた.

失敗したこと

1日2日分からず,作業が止まってしまっていた.その原因が分かり,解決したため,ここに示しておく.

問題

まず,問題を示す.
error.PNG
RobotModelを追加し,ロボットを表示させようとすると,ロボットは白く表示され,左の部分でも赤でエラーが示されている.ここで共通するエラーはNo transform from [~] to [odom]というものである.

原因

エラー部分を見る限り,座標変換ができていなかったというのが原因だったようだ.gazebo上でのロボットがrviz上での座標へ適切に変換されず,よくわからない状態で表示されてしまっているということだ.このとき,実行したのは,roscoreroslaunch turtlebot3_gazebo turtlebot3_house.launchrviz rvizであった.これでは,座標変換するものが含まれていないようだ.

解決

座標変換されていないのが原因であったため,座標変換するものを用意すればよい.
(https://answers.ros.org/question/263140/no-transform-from-base_link-to-odom/ )を参考にしたところ,robot_state_publisherというノードが必要だということをヒントにコマンドラインで調べてみたところ,rosrun robot_state_publisher robot_state_publisherというものがあった.そこで,これを実行してみたところ,うまくいった.どうやら,robot_state_publisherを通して,各要素の座標変換が行われるようだ.

感想

今回は,rvizについて基本的なことを学んだ.エラーが出て,作業が止まったときには少し焦ったが解決できてよかった.これで,次回からの地図作成に関する学習も無事継続してできそうだ.

参考文献

プログラミングROS Pythonによるロボットアプリケーション開発
        Morgan Quigley, Brian Gerkey, William D.Smart 著
                       河田 卓志 監訳
            松田 晃一,福地 正樹,由谷 哲夫 訳
                  オイラリー・ジャパン 発行

2
4
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
2
4