SMACC2
Loading...
Searching...
No Matches
cl_moveit2z::CpTrajectoryVisualizer Class Reference

Component for visualizing trajectories as RViz markers. More...

#include <cp_trajectory_visualizer.hpp>

Inheritance diagram for cl_moveit2z::CpTrajectoryVisualizer:
Inheritance graph
Collaboration diagram for cl_moveit2z::CpTrajectoryVisualizer:
Collaboration graph

Public Member Functions

 CpTrajectoryVisualizer (double publishRate=10.0)
 Constructor.
 
virtual ~CpTrajectoryVisualizer ()=default
 
void onInitialize () override
 Initialize the marker publisher.
 
void update () override
 Periodic update - publishes markers if enabled.
 
void setTrajectory (const std::vector< geometry_msgs::msg::PoseStamped > &poses, const std::string &ns="trajectory")
 Set trajectory to visualize.
 
void clearMarkers ()
 Clear all markers.
 
void setColor (float r, float g, float b, float a=1.0)
 Set marker color (RGBA values 0.0-1.0)
 
void setScale (double scale)
 Set marker scale (sphere diameter in meters)
 
void setEnabled (bool enabled)
 Enable/disable marker publishing.
 
bool isEnabled () const
 Check if visualizer is enabled.
 
- Public Member Functions inherited from smacc2::ISmaccComponent
 ISmaccComponent ()
 
virtual ~ISmaccComponent ()
 
virtual std::string getName () const
 
- Public Member Functions inherited from smacc2::ISmaccUpdatable
 ISmaccUpdatable ()
 
 ISmaccUpdatable (rclcpp::Duration duration)
 
void executeUpdate (rclcpp::Node::SharedPtr node)
 
void setUpdatePeriod (rclcpp::Duration duration)
 

Private Attributes

rclcpp::Publisher< visualization_msgs::msg::MarkerArray >::SharedPtr markersPub_
 
visualization_msgs::msg::MarkerArray markers_
 
std::mutex markersMutex_
 
bool markersReady_ = false
 
bool enabled_ = false
 
double markerScale_ = 0.02
 
float markerColor_ [4] = {0.0f, 1.0f, 0.0f, 0.8f}
 
double publishRate_
 
rclcpp::Time lastPublishTime_
 

Additional Inherited Members

- Protected Member Functions inherited from smacc2::ISmaccComponent
template<typename TOrthogonal , typename TClient >
void onComponentInitialization ()
 
template<typename EventType >
void postEvent (const EventType &ev)
 
template<typename EventType >
void postEvent ()
 
template<typename TOrthogonal , typename TSourceObject >
void onOrthogonalAllocation ()
 
template<typename TOrthogonal , typename TSourceObject >
void onStateOrthogonalAllocation ()
 
template<typename TComponent >
void requiresComponent (TComponent *&requiredComponentStorage, bool throwExceptionIfNotExist)
 
template<typename TComponent >
void requiresComponent (std::string name, TComponent *&requiredComponentStorage, bool throwExceptionIfNotExist)
 
template<typename TComponent >
void requiresComponent (TComponent *&requiredComponentStorage, ComponentRequirement requirementType=ComponentRequirement::SOFT)
 
template<typename TComponent >
void requiresComponent (std::string name, TComponent *&requiredComponentStorage, ComponentRequirement requirementType=ComponentRequirement::SOFT)
 
template<typename TClient >
void requiresClient (TClient *&requiredClientStorage)
 
template<typename SmaccComponentType , typename TOrthogonal , typename TClient , typename... TArgs>
SmaccComponentType * createSiblingComponent (TArgs... targs)
 
template<typename SmaccComponentType , typename TOrthogonal , typename TClient , typename... TArgs>
SmaccComponentType * createSiblingNamedComponent (std::string name, TArgs... targs)
 
rclcpp::Node::SharedPtr getNode ()
 
rclcpp::Logger getLogger () const
 
ISmaccStateMachinegetStateMachine ()
 
- Protected Member Functions inherited from smacc2::ISmaccUpdatable
- Protected Attributes inherited from smacc2::ISmaccComponent
ISmaccStateMachinestateMachine_
 
ISmaccClientowner_
 

Detailed Description

Component for visualizing trajectories as RViz markers.

This component publishes trajectory paths as visualization markers that can be viewed in RViz. It follows the ISmaccUpdatable pattern for periodic publishing.

Pattern: Publisher + ISmaccUpdatable (similar to nav2z_client's CpWaypointsVisualizer)

Definition at line 44 of file cp_trajectory_visualizer.hpp.

Constructor & Destructor Documentation

◆ CpTrajectoryVisualizer()

cl_moveit2z::CpTrajectoryVisualizer::CpTrajectoryVisualizer ( double publishRate = 10.0)
inline

Constructor.

Parameters
publishRatePublishing rate (default: 10Hz)

Definition at line 52 of file cp_trajectory_visualizer.hpp.

◆ ~CpTrajectoryVisualizer()

virtual cl_moveit2z::CpTrajectoryVisualizer::~CpTrajectoryVisualizer ( )
virtualdefault

Member Function Documentation

◆ clearMarkers()

void cl_moveit2z::CpTrajectoryVisualizer::clearMarkers ( )
inline

Clear all markers.

Definition at line 176 of file cp_trajectory_visualizer.hpp.

177 {
178 std::lock_guard<std::mutex> guard(markersMutex_);
179
180 RCLCPP_INFO(getLogger(), "[CpTrajectoryVisualizer] Clearing markers");
181
182 // Send delete action for all markers
183 for (auto & marker : markers_.markers)
184 {
185 marker.action = visualization_msgs::msg::Marker::DELETE;
186 }
187
188 if (!markers_.markers.empty())
189 {
190 markersPub_->publish(markers_);
191 }
192
193 markers_.markers.clear();
194 markersReady_ = false;
195 enabled_ = false;
196 }
visualization_msgs::msg::MarkerArray markers_
rclcpp::Publisher< visualization_msgs::msg::MarkerArray >::SharedPtr markersPub_
rclcpp::Logger getLogger() const

References enabled_, smacc2::ISmaccComponent::getLogger(), markers_, markersMutex_, markersPub_, and markersReady_.

Referenced by cl_moveit2z::CbMoveEndEffectorTrajectory::onExit().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ isEnabled()

bool cl_moveit2z::CpTrajectoryVisualizer::isEnabled ( ) const
inline

Check if visualizer is enabled.

Definition at line 226 of file cp_trajectory_visualizer.hpp.

226{ return enabled_; }

References enabled_.

◆ onInitialize()

void cl_moveit2z::CpTrajectoryVisualizer::onInitialize ( )
inlineoverridevirtual

Initialize the marker publisher.

Reimplemented from smacc2::ISmaccComponent.

Definition at line 59 of file cp_trajectory_visualizer.hpp.

60 {
62 getNode()->create_publisher<visualization_msgs::msg::MarkerArray>("trajectory_markers", 1);
63 RCLCPP_INFO(getLogger(), "[CpTrajectoryVisualizer] Initialized");
64
65 // Initialize timing for publish rate control
66 lastPublishTime_ = getNode()->now();
67 }
rclcpp::Node::SharedPtr getNode()

References smacc2::ISmaccComponent::getLogger(), smacc2::ISmaccComponent::getNode(), lastPublishTime_, and markersPub_.

Here is the call graph for this function:

◆ setColor()

void cl_moveit2z::CpTrajectoryVisualizer::setColor ( float r,
float g,
float b,
float a = 1.0 )
inline

Set marker color (RGBA values 0.0-1.0)

Definition at line 201 of file cp_trajectory_visualizer.hpp.

202 {
203 markerColor_[0] = r;
204 markerColor_[1] = g;
205 markerColor_[2] = b;
206 markerColor_[3] = a;
207 }

References markerColor_.

◆ setEnabled()

void cl_moveit2z::CpTrajectoryVisualizer::setEnabled ( bool enabled)
inline

Enable/disable marker publishing.

Definition at line 217 of file cp_trajectory_visualizer.hpp.

218 {
219 std::lock_guard<std::mutex> guard(markersMutex_);
220 enabled_ = enabled;
221 }

References enabled_, and markersMutex_.

◆ setScale()

void cl_moveit2z::CpTrajectoryVisualizer::setScale ( double scale)
inline

Set marker scale (sphere diameter in meters)

Definition at line 212 of file cp_trajectory_visualizer.hpp.

References markerScale_.

◆ setTrajectory()

void cl_moveit2z::CpTrajectoryVisualizer::setTrajectory ( const std::vector< geometry_msgs::msg::PoseStamped > & poses,
const std::string & ns = "trajectory" )
inline

Set trajectory to visualize.

Parameters
posesVector of poses defining the trajectory path
nsNamespace for the markers (default: "trajectory")

Definition at line 99 of file cp_trajectory_visualizer.hpp.

102 {
103 std::lock_guard<std::mutex> guard(markersMutex_);
104
105 RCLCPP_INFO(
106 getLogger(), "[CpTrajectoryVisualizer] Setting trajectory with %lu poses", poses.size());
107
108 markers_.markers.clear();
109
110 if (poses.empty())
111 {
112 RCLCPP_WARN(getLogger(), "[CpTrajectoryVisualizer] Empty trajectory provided");
113 markersReady_ = false;
114 return;
115 }
116
117 // Create spheres for each pose
118 for (size_t i = 0; i < poses.size(); ++i)
119 {
120 visualization_msgs::msg::Marker marker;
121 marker.header = poses[i].header;
122 marker.ns = ns;
123 marker.id = static_cast<int>(i);
124 marker.type = visualization_msgs::msg::Marker::SPHERE;
125 marker.action = visualization_msgs::msg::Marker::ADD;
126
127 marker.pose = poses[i].pose;
128
129 marker.scale.x = markerScale_;
130 marker.scale.y = markerScale_;
131 marker.scale.z = markerScale_;
132
133 marker.color.r = markerColor_[0];
134 marker.color.g = markerColor_[1];
135 marker.color.b = markerColor_[2];
136 marker.color.a = markerColor_[3];
137
138 markers_.markers.push_back(marker);
139 }
140
141 // Create line strip connecting all poses
142 if (poses.size() > 1)
143 {
144 visualization_msgs::msg::Marker lineMarker;
145 lineMarker.header = poses[0].header;
146 lineMarker.ns = ns + "_path";
147 lineMarker.id = static_cast<int>(poses.size());
148 lineMarker.type = visualization_msgs::msg::Marker::LINE_STRIP;
149 lineMarker.action = visualization_msgs::msg::Marker::ADD;
150
151 lineMarker.scale.x = markerScale_ * 0.3; // Line width
152
153 lineMarker.color.r = markerColor_[0];
154 lineMarker.color.g = markerColor_[1];
155 lineMarker.color.b = markerColor_[2];
156 lineMarker.color.a = markerColor_[3] * 0.7; // Slightly transparent
157
158 for (const auto & pose : poses)
159 {
160 lineMarker.points.push_back(pose.pose.position);
161 }
162
163 markers_.markers.push_back(lineMarker);
164 }
165
166 markersReady_ = true;
167 enabled_ = true;
168
169 RCLCPP_INFO(
170 getLogger(), "[CpTrajectoryVisualizer] Created %lu markers", markers_.markers.size());
171 }

References enabled_, smacc2::ISmaccComponent::getLogger(), markerColor_, markers_, markerScale_, markersMutex_, and markersReady_.

Referenced by cl_moveit2z::CbMoveEndEffectorTrajectory::onEntry().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ update()

void cl_moveit2z::CpTrajectoryVisualizer::update ( )
inlineoverridevirtual

Periodic update - publishes markers if enabled.

Implements smacc2::ISmaccUpdatable.

Definition at line 72 of file cp_trajectory_visualizer.hpp.

73 {
74 std::lock_guard<std::mutex> guard(markersMutex_);
75
76 if (!enabled_ || !markersReady_)
77 {
78 return;
79 }
80
81 // Rate limiting
82 auto now = getNode()->now();
83 auto elapsed = (now - lastPublishTime_).seconds();
84 if (elapsed < (1.0 / publishRate_))
85 {
86 return;
87 }
88
89 markersPub_->publish(markers_);
90 lastPublishTime_ = now;
91 }

References enabled_, smacc2::ISmaccComponent::getNode(), lastPublishTime_, markers_, markersMutex_, markersPub_, markersReady_, and publishRate_.

Here is the call graph for this function:

Member Data Documentation

◆ enabled_

bool cl_moveit2z::CpTrajectoryVisualizer::enabled_ = false
private

◆ lastPublishTime_

rclcpp::Time cl_moveit2z::CpTrajectoryVisualizer::lastPublishTime_
private

Definition at line 242 of file cp_trajectory_visualizer.hpp.

Referenced by onInitialize(), and update().

◆ markerColor_

float cl_moveit2z::CpTrajectoryVisualizer::markerColor_[4] = {0.0f, 1.0f, 0.0f, 0.8f}
private

Definition at line 238 of file cp_trajectory_visualizer.hpp.

238{0.0f, 1.0f, 0.0f, 0.8f}; // Green, slightly transparent

Referenced by setColor(), and setTrajectory().

◆ markers_

visualization_msgs::msg::MarkerArray cl_moveit2z::CpTrajectoryVisualizer::markers_
private

Definition at line 230 of file cp_trajectory_visualizer.hpp.

Referenced by clearMarkers(), setTrajectory(), and update().

◆ markerScale_

double cl_moveit2z::CpTrajectoryVisualizer::markerScale_ = 0.02
private

Definition at line 237 of file cp_trajectory_visualizer.hpp.

Referenced by setScale(), and setTrajectory().

◆ markersMutex_

std::mutex cl_moveit2z::CpTrajectoryVisualizer::markersMutex_
private

Definition at line 231 of file cp_trajectory_visualizer.hpp.

Referenced by clearMarkers(), setEnabled(), setTrajectory(), and update().

◆ markersPub_

rclcpp::Publisher<visualization_msgs::msg::MarkerArray>::SharedPtr cl_moveit2z::CpTrajectoryVisualizer::markersPub_
private

Definition at line 229 of file cp_trajectory_visualizer.hpp.

Referenced by clearMarkers(), onInitialize(), and update().

◆ markersReady_

bool cl_moveit2z::CpTrajectoryVisualizer::markersReady_ = false
private

Definition at line 233 of file cp_trajectory_visualizer.hpp.

Referenced by clearMarkers(), setTrajectory(), and update().

◆ publishRate_

double cl_moveit2z::CpTrajectoryVisualizer::publishRate_
private

Definition at line 241 of file cp_trajectory_visualizer.hpp.

Referenced by update().


The documentation for this class was generated from the following file: