46 #ifndef NAV2_RVIZ_PLUGINS__PARTICLE_CLOUD_DISPLAY__PARTICLE_CLOUD_DISPLAY_HPP_
47 #define NAV2_RVIZ_PLUGINS__PARTICLE_CLOUD_DISPLAY__PARTICLE_CLOUD_DISPLAY_HPP_
52 #include "nav2_msgs/msg/particle_cloud.hpp"
54 #include "rviz_rendering/objects/shape.hpp"
55 #include "rviz_common/message_filter_display.hpp"
72 namespace rviz_rendering
78 namespace nav2_rviz_plugins
80 class FlatWeightedArrowsArray;
83 Ogre::Vector3 position;
84 Ogre::Quaternion orientation;
97 rviz_common::DisplayContext * display_context,
98 Ogre::SceneNode * scene_node);
102 void processMessage(nav2_msgs::msg::ParticleCloud::ConstSharedPtr msg)
override;
103 void setShape(QString shape);
106 void onInitialize()
override;
107 void reset()
override;
111 void updateShapeChoice();
114 void updateArrowColor();
117 void updateGeometry();
120 void initializeProperties();
121 bool validateFloats(
const nav2_msgs::msg::ParticleCloud & msg);
122 bool setTransform(std_msgs::msg::Header
const & header);
123 void updateDisplay();
124 void updateArrows2d();
125 void updateArrows3d();
127 void updateArrow3dGeometry();
128 void updateAxesGeometry();
130 std::unique_ptr<rviz_rendering::Axes> makeAxes();
131 std::unique_ptr<rviz_rendering::Arrow> makeArrow3d();
133 std::vector<OgrePoseWithWeight> poses_;
134 std::unique_ptr<FlatWeightedArrowsArray> arrows2d_;
135 std::vector<std::unique_ptr<rviz_rendering::Arrow>> arrows3d_;
136 std::vector<std::unique_ptr<rviz_rendering::Axes>> axes_;
138 Ogre::SceneNode * arrow_node_;
139 Ogre::SceneNode * axes_node_;
141 rviz_common::properties::EnumProperty * shape_property_;
142 rviz_common::properties::ColorProperty * arrow_color_property_;
143 rviz_common::properties::FloatProperty * arrow_alpha_property_;
145 rviz_common::properties::FloatProperty * arrow_min_length_property_;
146 rviz_common::properties::FloatProperty * arrow_max_length_property_;
151 float head_radius_scale_;
152 float head_length_scale_;
153 float shaft_radius_scale_;
Displays a nav2_msgs/ParticleCloud message as a bunch of line-drawn weighted arrows.