Logを受信してOverlay表示する
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上で描画処理が走らないので何も表示されません。
Author And Source
この問題について(Logを受信してOverlay表示する), 我々は、より多くの情報をここで見つけました https://qiita.com/Kotakku/items/fe483e2238285c6266b0著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .