3 #include <OgreSceneNode.h>
4 #include <OgreSceneManager.h>
5 #include <OgreManualObject.h>
6 #include <OgreBillboardSet.h>
7 #include <OgreMaterialManager.h>
8 #include <OgreTechnique.h>
10 #include "rviz_common/display_context.hpp"
11 #include "rviz_common/frame_manager_iface.hpp"
12 #include "rviz_common/logging.hpp"
13 #include "rviz_common/properties/color_property.hpp"
14 #include "rviz_common/properties/float_property.hpp"
15 #include "rviz_common/properties/bool_property.hpp"
17 #include "rviz_common/properties/parse_color.hpp"
29 "Time (in s) until visualizations disappear",
this);
32 "Color", QColor(255, 0, 25),
34 show_meta_ =
new rviz_common::properties::BoolProperty(
"Metadata",
true,
35 "Show metadata as text next to objects",
this);
37 "Color", QColor(255, 0, 25),
40 show_station_id_ =
new rviz_common::properties::BoolProperty(
"StationID",
true,
55 RTDClass::onInitialize();
57 auto nodeAbstraction = context_->getRosNodeAbstraction().lock();
78 rviz_common::properties::StatusProperty::Error,
"Topic",
79 "Message contained invalid floating point values (nans or infs)");
85 if (it !=
denms_.end()) it->second = denm;
103 for(
auto it =
denms_.begin(); it !=
denms_.end(); ++it) {
106 Ogre::Vector3 sn_position;
107 Ogre::Quaternion sn_orientation;
108 if (!context_->getFrameManager()->getTransform(denm.
getHeader(), sn_position, sn_orientation)) {
109 setMissingTransformToFixedFrame(denm.
getHeader().frame_id);
115 scene_node_->setPosition(sn_position);
116 scene_node_->setOrientation(sn_orientation);
118 auto child_scene_node = scene_node_->createChildSceneNode();
120 geometry_msgs::msg::Pose pose = denm.
getPose();
121 Ogre::Vector3 position(pose.position.x, pose.position.y, pose.position.z);
122 Ogre::Quaternion orientation(pose.orientation.w, pose.orientation.x, pose.orientation.y, pose.orientation.z);
125 int shaft_length = 5;
126 int shaft_diameter = 1;
128 int head_diameter = 3;
129 position.z += (shaft_length+head_length);
132 child_scene_node->setPosition(position);
133 child_scene_node->setOrientation(orientation);
136 std::shared_ptr<rviz_rendering::Arrow> arrow = std::make_shared<rviz_rendering::Arrow>(scene_manager_, child_scene_node, shaft_length, shaft_diameter, head_length, head_diameter);
139 Ogre::ColourValue bb_color = rviz_common::properties::qtToOgre(
color_property_->getColor());
140 arrow->setColor(bb_color);
141 arrow->setOrientation(orientation);
148 text+=
"StationID: " + std::to_string(denm.
getStationID());
159 if(!text.size())
return;
160 std::shared_ptr<rviz_rendering::MovableText> text_render = std::make_shared<rviz_rendering::MovableText>(text,
"Liberation Sans",
char_height_->getFloat());
161 double height = text_render->getBoundingRadius();
162 Ogre::Vector3 offs(0.0, 0.0, height);
164 text_render->setGlobalTranslation(offs);
165 Ogre::ColourValue text_color = rviz_common::properties::qtToOgre(
text_color_property_->getColor());
166 text_render->setColor(text_color);
167 child_scene_node->attachObject(text_render.get());
168 texts_.push_back(text_render);
176 #include <pluginlib/class_list_macros.hpp>