7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ROS/ROS2Advent Calendar 2020

Day 5

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

Last updated at Posted at 2020-12-16

はじめに

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

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

7
5
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
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?