9
6

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 8

オリジナル Rviz Plugin をつくってみる 3. ROS2で .ui ファイルを使ってオリジナルパネルをつくる

Last updated at Posted at 2020-12-16

はじめに

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

前回は,ROS1で.uiファイルでレイアウト指定したパネルを Rviz Plugin にする方法を紹介しました.
本記事では,ROS2(foxy)ではどうすれば良いかを紹介しますが,ほとんど ROS1 と変わらないです.
なので,差分部分だけ説明しょうと思います.
ソースコードは下記にて公開しています(Apache2.0)

環境については,DockerでROSの環境ベースを作っているので,興味のある方は是非使ってみてください...!

動作説明

ROS1と動作の様子は変わらないので,同じものを載せておきます.
画像の中では ROS1 環境のものですが, ROS2 (foxy) で動作しますので,是非やってみてください.
ソースコードはこちらです.

rviz-panel.gif

コード解説

前述の通り,差分部分だけ解説します.

dial_panel.h

  • インクルードヘッダをROS2対応のものに変更.
  • ノードハンドラをROS2対応に変更.
  • PublisherをROS2対応に変更.

dial_panel.cpp

  • #include <pluginlib/class_list_macros.h>#include <class_loader/class_loader.hpp>に変更
  • デバッグ用にロガーを設定
  • ROS2用にNodeのアロケーションを行う
  • ROS2対応のPublisher設定に変更
  • プラグインの登録をCLASS_LOADER_REGISTER_CLASS(rviz_plugin_examples::DialPanel, rviz_common::Panel)に変更

plugin_description.xml

  • ライブラリ名の頭にlibをつけないように変更(Windows対応のためらしい)
  • 継承元クラス名の変更(rviz::Panel -> rviz_common::Panel

CMakeLists.txt

  • catkinからament対応に変更
  • plubinlibのエクスポート設定が必要なので追記.
    (pluginlib_export_plugin_description_file(rviz_common plugin_description.xml)

package.xml

  • colcon ament 対応のpackage.xmlに変更

おわりに

というわけで,特筆すべき変更点を Githubのdiffとともに記しました.
なんだか雑なコミット履歴みたいになってしまいましたが,下手に説明を増やすよりわかりやすいかと考えたため,このようにしました.
diffからもわかるとおり,ROS1とほとんど変わりません.
Qt 部分の説明は前記事でしっかり行っているので,是非そちらと合わせてご覧ください!

というわけで,次回はrviz::Display(ROS2ならrviz_common::Display)を使うプラグインを作ろうと思います!

9
6
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
9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?