2017/07/19 株式会社テクノロード
Rviz プラグイン作成入門
第11回ROS JapanUG 勉強会
2017/07/19 ShoTakahashi
2017/07/19 株式会社テクノロード
目次
●
動機
●
今回作るもの
●
環境
●
いざRvizプラグイン作成入門
●
動作確認
● Rviz プラグイン作成まとめ
●
参考文献
2017/07/19 株式会社テクノロード
動機
● Rviz に独自の GUI を追加し、操作を簡単にしたい!
●
しかし、日本語のドキュメントが少ない?
→ あるにはあったけど(※1)、 hydro の頃のやつとか古い
● 多分ROSやってる人達は頭が良すぎて、 ROS のソースを直接読ん
で、作り方がわかっちゃうんだろうな・・・
● よし自分の為に、シンプルな奴を作って、ついでに LT のネタにしよ
う!
2017/07/19 株式会社テクノロード
今回作るもの
● Rviz 上のパネルへボタンとスライダーを作成して、
GUIのスライダーで地図上の赤いマーカを操作するアプリ
→ 最終的には地図の座標とか指定できる!
作成するパネル!
2017/07/19 株式会社テクノロード
環境
● OS : ubuntu16.04LTS
● ROS ver : Kinetic Kame
● Qt ver : 5.5.1
2017/07/19 株式会社テクノロード
いざRvizプラグイン作成入門
~~~~~~~~~~~~~~~~~ 中略 ~~~~~~~~~~~~~~~~~~~~~
// パネル GUI のレイアウト作成
QHBoxLayout* layout = new QHBoxLayout; // 水平配置する
btn_ = new QPushButton( "Spawn" ); // ボタン作成
QSlider* sld_x = new QSlider(Qt::Horizontal);
QSlider* sld_y = new QSlider(Qt::Horizontal);
sld_x->setRange(1, 100); // スライダーの範囲を決める
sld_y->setRange(1, 100); // スライダーの範囲を決める
layout->addWidget( btn_ ); // ボタンをレイアウトへ登録
layout->addWidget( sld_x ); // スライダーをレイアウトへ登録
layout->addWidget( sld_y ); // スライダーをレイアウトへ登録
this->setLayout(layout); // Rviz パネルへ GUI をのせる
// イベント SIGNAL とイベント時のコールバック SLOT を設定
connect( btn_, SIGNAL( clicked() ), this, SLOT( btn_clicked() ));
connect( sld_x, SIGNAL( valueChanged(int) ), this, SLOT( sld_x_changed(int)) );
connect( sld_y, SIGNAL( valueChanged(int) ), this, SLOT( sld_y_changed(int)) );
}
~~~~~~~~~~~~~~~~~ 中略 ~~~~~~~~~~~~~~~~~~~~~
// イベントコールバック関数
void SamplePanel::sld_x_changed( int val )
{
x_ = (double)val / 10.0;
visualization_msgs::Marker marker = create_marker( x_, y_ );
marker_pub_.publish(marker);
}
メインのプラグインソース (cpp) から一部抜粋
GUI のボタン、
スライダーの
作成と配置
GUI へ
操作されたときの
イベント登録
イベント発生時の
処理
2017/07/19 株式会社テクノロード
動作確認
2017/07/19 株式会社テクノロード
Rviz プラグイン作成まとめ
●
Qtの勉強も出来て一石二鳥
→ Linux上で他のGUIアプリ構築にも役立つ!
● 今回は時間がないので、 Rviz プラグインの紹介までですが、
内容に興味がある人は github を見てください
→https://github.com/takahashi-e6/rviz_panel_sample
●
作るのに手間が掛かるが、ターミナルコマンドじゃなくてGUIで操
作できるってのはわかりやすい!
2017/07/19 株式会社テクノロード
参考文献
● New Dockable Panel (日本語)
http://wiki.ros.org/ja/rviz/Tutorials/hydro/Plugins%3A
%20New%20Dockable%20Panel
● New Tool Type (日本語)
http://wiki.ros.org/ja/rviz/Tutorials/Plugins%3A%20New%
20Tool%20Type

RvizPlugin作成入門