Help us understand the problem. What is going on with this article?

オリジナル Rviz Plugin をつくってみる 1. Rviz Plugin の仕組みと種類

はじめに

本記事は,下記記事のシリーズ記事です.
関連記事等気になる方は是非下記記事から飛んでください!

https://qiita.com/RyodoTanaka/items/eadfb81bd52404dabdb4

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_panel.png
  • rviz::Display:RvizのDisplay部分のプラグイン. rviz_display.png
  • rviz::Tool:画面上のツールバーに追加できるようになるプラグイン. rviz_tool.png

というわけで,次回からrviz::Panelを追加する方法を紹介しようと思います.
次記事 -> https://qiita.com/RyodoTanaka/items/4924af4f7b1e91f3a5b9

RyodoTanaka
ロボットのエンジニアになりたい大学院生です. クラリネット吹くのが好きです.
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away