Logを受信してOverlay表示する


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

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

実行例

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上で描画処理が走らないので何も表示されません。