LoginSignup
0
0

More than 3 years have passed since last update.

Logを受信してOverlay表示する

Last updated at Posted at 2021-03-12

rviz2プラグインの作り方 トップページへ

rcl_interfaces::msg::Log を受け取って表示するプラグインを作ります

実行例

image.png

ROS1版

こちらのコードをrviz2用に書き直します
ROS講座118 overlayで表示するのrviz display plugindを作る

ROS1からの主な変更点

log_display.hpp

関数を追加

    virtual void onInitialize();
    virtual void reset();

トピックの受信をRosTopicDisplayで行います

class LogDisplay : public rviz_common::RosTopicDisplay<rcl_interfaces::msg::Log>
{
private:
    // 以下は使用しない
    // ros::NodeHandle nh_;
    // ros::Subscriber log_sub_;
};

log_display.cpp

以下のファイルの読み込みを忘れずに
Dashing環境(たぶんEloquentでも)ではこのファイルがincludeディレクトリに存在せずincludeできないので
Githubから持ってくるかローカル環境の中にあるrender_system.hpp/opt/ros/[distribution]/include/rviz_rendering 以下に配置してください

#include <rviz_rendering/render_system.hpp> // 重要
void LogDisplay::onInitialize()
{
    rviz_rendering::RenderSystem::get()->prepareOverlays(scene_manager_); // 重要
    RTDClass::onInitialize();
}

void LogDisplay::reset()
{
    RTDClass::reset();
}

prepareOverlays() の呼び出しを追加しています。これがないとrviz上で描画処理が走らないので何も表示されません。

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