環境
この記事は以下の環境で動いています。
項目 | 値 |
---|---|
CPU | Core i5-8250U |
Ubuntu | 16.04 |
ROS | Kinetic |
インストールについてはROS講座02 インストールを参照してください。
またこの記事のプログラムはgithubにアップロードされています。ROS講座11 gitリポジトリを参照してください。
#概要
ロボットのプログラムでは可視化が大切です。ほかのプログラムと違い3次元座標は値を数値で表示してもわかりにくく、3次元の可視化GUIの実装は多くの手間がかかります。
ROSではRvizが(3次元での)可視化を担当します。今後はこのRvizの使い方を解説していきます。
#機能
Rviz上での表示例1
Rvizで出来ることをみてみます。これは私のオリジナルロボットをシミュレーション上で動かしている時のRvizの様子です。
- 3DView(ロボットの状態の表示)
ここがRvizの本領で、ロボットの位置、間接の角度などを表示することができます。ロボット本体を見なくてもロボットの状態を監視することができます。LIDAR等のセンサーの状態を表示することもできます。 - OverView(値やエラー情報の表示)
例えば特定の気になる値があるときにその値をオーバーレイで表示することができます。またハードウェア接続のエラーを表示することもできます。 - パネル表示(カメラ画像)
ロボットのカメラ画像やそれに加工をした画像を表示することができます。 - パネル操作(cmd_velの送信)
パネルのGUI経由でtopicを送信することができます。
Rviz上での表示例2
またこれ以外にも以下のようにロボットの認識状況を表示することができます。この例ではLIDARの認識状況(赤い点)とSLAMにより生成された地図(黒とグレー)がRviz上に表示されています。
制限
ここで注意したいのはRvizはシミュレーターではないことです。ROS用のシミュレーターとしてはgazeboというものがあります。またRvizを使えば自動的にロボットの状態を表示してくれるというものではありません。自分でRviz上の表示を指定するプログラムを書かなければなりません。
つまりRvizというのはprintf("Angle:%f",angle)
のように関節の角度をターミナルに表示する代わりにGUI上に表示されたロボットの関節の角度を変更するものです。
#使うまでの流れ
- URDFファイルを記述してロボットのLinkやjointを定義する。
- Rviz上のロボットを動かすROSノードを作成する。
- launchファイルを記述してRvizやほかのROSノードを起動する。