はじめに
本記事は,下記記事のシリーズ記事です.
関連記事等気になる方は是非下記記事から飛んでください!
Rviz と Qt の簡単な仕組み
Rvizは Qt(キュートって読んでるんですがあってますかね...?) というクロスプラットフォームGUIライブラリを使って実装されています.
ゆえに,そのプラグインも Qt に沿ったものになります(というかそのものです).
QtでGUIを設計するにはQtの仕組みがわかっている必要があるのですが,下記がわかっていれば良いと思います.
理解間違いや,その理解では今後まずいことになるよ...!という場合は,是非コメントにて教えてくださいm(_ _)m
- Qt独自のスレッドがメインプログラム(ここではROSと繋がってるところ)とは別に回ってる.
- ROSとつながる方のプログラムが走ってるスレッドとQtのスレッド分けたりはライブラリが良きに設定してくれてる.
- Qtは
SIGNAL->SLOTという流れで処理を繋いでいる.
最後のやつだけもうちょっと詳しく説明します.
Qtは前述の通り,独自のスレッドが回っているのですが,その際何かしらの SIGNAL,例えば「ボタンをクリック」が発生した場合,SLOT例えば「TopicをPublish」する処理を実行します.
要は,
-
SIGNALで割り込みが発生 ->SLOTがコールバック関数
というイメージです.
このイメージがあれば,なんとなく中で何をやっているのかわかった気になれると思います.
Rviz Plugin の種類
Rviz Plugin と一口に言っても,作る際に継承するクラスが下記のようにいくつかあります.
もちろんこれだけではないですが,本記事では下記3つを実装できるようになりたいので,ひとまずこれだけ紹介します.
-
rviz::Panel:画面左上のPanelsから追加可能なプラグイン.Displayもパネルのひとつ.
-
rviz::Display:RvizのDisplay部分のプラグイン.
-
rviz::Tool:画面上のツールバーに追加できるようになるプラグイン.
というわけで,次回からrviz::Panelを追加する方法を紹介しようと思います.
次記事 -> https://qiita.com/RyodoTanaka/items/4924af4f7b1e91f3a5b9