Aikido
aikido::rviz::InteractiveMarkerViewer Class Reference

#include <aikido/rviz/InteractiveMarkerViewer.hpp>

Public Member Functions

 InteractiveMarkerViewer (const std::string &topicNamespace, const std::string &frameId, aikido::planner::WorldPtr env=nullptr)
 Creates an InteractiveMarkerViewer that reflects skeletons in a World. More...
 
virtual ~InteractiveMarkerViewer ()
 
 InteractiveMarkerViewer (const InteractiveMarkerViewer &)=delete
 
 InteractiveMarkerViewer (const InteractiveMarkerViewer &&)=delete
 
InteractiveMarkerVieweroperator= (const InteractiveMarkerViewer &)=delete
 
interactive_markers::InteractiveMarkerServer & marker_server ()
 
SkeletonMarkerPtr addSkeletonMarker (const dart::dynamics::SkeletonPtr &skeleton)
 Visualizes a Skeleton. More...
 
FrameMarkerPtr addFrameMarker (dart::dynamics::Frame *frame, double length=0.25, double thickness=0.02, double alpha=1.0)
 Visualizes a Frame as a cylinder. More...
 
TSRMarkerPtr addTSRMarker (const constraint::dart::TSR &tsr, int nSamples=10, const std::string &basename="")
 Visualizes a TSR. More...
 
TrajectoryMarkerPtr addTrajectoryMarker (trajectory::ConstTrajectoryPtr trajectory, dart::dynamics::MetaSkeletonPtr skeleton, const dart::dynamics::Frame &frame, const Eigen::Vector4d &rgba=Eigen::Vector4d::Constant(0.75), double thickness=0.01, std::size_t numLineSegments=16u)
 Adds trajectory marker to this viewer. More...
 
void setAutoUpdate (bool flag)
 Sets viewer auto-updating to on (true) or off. More...
 
void update ()
 Updates viewer with Skeletons from the World and existing markers. More...
 

Protected Member Functions

void autoUpdate ()
 Thread target for auto-updating the viewer. More...
 
void updateSkeletonMarkers ()
 Helper function to update skeleton markers. More...
 
void updateFrameMarkers ()
 Helper function to update frame markers. More...
 
void updateTrajectoryMarkers ()
 Helper function to update trajectory markers. More...
 

Protected Attributes

interactive_markers::InteractiveMarkerServer mMarkerServer
 Interactive Marker Server. More...
 
std::map< dart::dynamics::SkeletonPtr, SkeletonMarkerPtrmSkeletonMarkers
 Map of Skeletons to SkeletonMarkers. More...
 
std::set< FrameMarkerPtrmFrameMarkers
 Set of frame markers. More...
 
std::set< TrajectoryMarkerPtrmTrajectoryMarkers
 Set of trajectory markers. More...
 
dart::common::NameManager< trajectory::ConstTrajectoryPtrmTrajectoryNameManager
 NameManager for name uniqueness of trajectories in the same InteractiveMarkerServer. More...
 
std::atomic_bool mRunning
 Check if the update thread is running. More...
 
std::atomic_bool mUpdating
 Check if the updates are happening. More...
 
std::string mFrameId
 Frame ID. More...
 
aikido::planner::WorldPtr mWorld
 World that automatically updates the viewer. More...
 
std::mutex mMutex
 Mutex. More...
 
std::thread mThread
 Thread running the updates. More...
 

Constructor & Destructor Documentation

◆ InteractiveMarkerViewer() [1/3]

aikido::rviz::InteractiveMarkerViewer::InteractiveMarkerViewer ( const std::string &  topicNamespace,
const std::string &  frameId,
aikido::planner::WorldPtr  env = nullptr 
)

Creates an InteractiveMarkerViewer that reflects skeletons in a World.

Parameters
[in]topicNamespaceROS topic to publish marker updates to
[in]frameIdBase frame name
[in]envWorld to update the viewer with. Default is nullptr if there is no underlying world attached to the markers. If there is an associated world, the viewer also updates skeletons the world contains.

◆ ~InteractiveMarkerViewer()

virtual aikido::rviz::InteractiveMarkerViewer::~InteractiveMarkerViewer ( )
virtual

◆ InteractiveMarkerViewer() [2/3]

aikido::rviz::InteractiveMarkerViewer::InteractiveMarkerViewer ( const InteractiveMarkerViewer )
delete

◆ InteractiveMarkerViewer() [3/3]

aikido::rviz::InteractiveMarkerViewer::InteractiveMarkerViewer ( const InteractiveMarkerViewer &&  )
delete

Member Function Documentation

◆ addFrameMarker()

FrameMarkerPtr aikido::rviz::InteractiveMarkerViewer::addFrameMarker ( dart::dynamics::Frame *  frame,
double  length = 0.25,
double  thickness = 0.02,
double  alpha = 1.0 
)

Visualizes a Frame as a cylinder.

Parameters
[in]frameTarget DART frame.
[in]lengthLength of the cylindrical frame (along z-axis).
[in]thicknessRadius (thickness in x and y axes) of cylinder.
[in]alphaOpacity.
Returns
Frame marker added to this viewer.

◆ addSkeletonMarker()

SkeletonMarkerPtr aikido::rviz::InteractiveMarkerViewer::addSkeletonMarker ( const dart::dynamics::SkeletonPtr &  skeleton)

Visualizes a Skeleton.

Parameters
skeletonSkeleton to add to the viewer
Returns
Skeleton marker added to the viewer.

◆ addTrajectoryMarker()

TrajectoryMarkerPtr aikido::rviz::InteractiveMarkerViewer::addTrajectoryMarker ( trajectory::ConstTrajectoryPtr  trajectory,
dart::dynamics::MetaSkeletonPtr  skeleton,
const dart::dynamics::Frame &  frame,
const Eigen::Vector4d &  rgba = Eigen::Vector4d::Constant(0.75),
double  thickness = 0.01,
std::size_t  numLineSegments = 16u 
)

Adds trajectory marker to this viewer.

Parameters
[in]trajectoryC-space (or joint-space) trajectory.
[in]skeletonTarget DART meta skeleton that the C-space trajectory will be applied to compute the visualizing task-space trajectory.
[in]frameTarget DART frame where the trajectory of its origin will be visualized.
[in]rgbaColor and alpha of the visualized trajectory. Default is [RGBA: 0.75, 0.75, 0.75, 0.75].
[in]thicknessThickness of the visualized trajectory. Default is 0.01.
[in]numLineSegmentsNumber of line segments in the visualized trajectory. Default is 16.
Returns
Trajectory marker added to this viewer.

◆ addTSRMarker()

TSRMarkerPtr aikido::rviz::InteractiveMarkerViewer::addTSRMarker ( const constraint::dart::TSR tsr,
int  nSamples = 10,
const std::string &  basename = "" 
)

Visualizes a TSR.

Parameters
tsrTSR constraint
nSamplesMax number of samples to be used in visualization
basenameBasename for markers
Returns
TSR marker that contains sampled frames of TSR.

◆ autoUpdate()

void aikido::rviz::InteractiveMarkerViewer::autoUpdate ( )
protected

Thread target for auto-updating the viewer.

◆ marker_server()

interactive_markers::InteractiveMarkerServer& aikido::rviz::InteractiveMarkerViewer::marker_server ( )

◆ operator=()

InteractiveMarkerViewer& aikido::rviz::InteractiveMarkerViewer::operator= ( const InteractiveMarkerViewer )
delete

◆ setAutoUpdate()

void aikido::rviz::InteractiveMarkerViewer::setAutoUpdate ( bool  flag)

Sets viewer auto-updating to on (true) or off.

Parameters
[in]flagWhether to auto-update the viewer.

◆ update()

void aikido::rviz::InteractiveMarkerViewer::update ( )

Updates viewer with Skeletons from the World and existing markers.

◆ updateFrameMarkers()

void aikido::rviz::InteractiveMarkerViewer::updateFrameMarkers ( )
protected

Helper function to update frame markers.

◆ updateSkeletonMarkers()

void aikido::rviz::InteractiveMarkerViewer::updateSkeletonMarkers ( )
protected

Helper function to update skeleton markers.

◆ updateTrajectoryMarkers()

void aikido::rviz::InteractiveMarkerViewer::updateTrajectoryMarkers ( )
protected

Helper function to update trajectory markers.

Member Data Documentation

◆ mFrameId

std::string aikido::rviz::InteractiveMarkerViewer::mFrameId
protected

Frame ID.

◆ mFrameMarkers

std::set<FrameMarkerPtr> aikido::rviz::InteractiveMarkerViewer::mFrameMarkers
protected

Set of frame markers.

◆ mMarkerServer

interactive_markers::InteractiveMarkerServer aikido::rviz::InteractiveMarkerViewer::mMarkerServer
protected

Interactive Marker Server.

◆ mMutex

std::mutex aikido::rviz::InteractiveMarkerViewer::mMutex
mutableprotected

Mutex.

◆ mRunning

std::atomic_bool aikido::rviz::InteractiveMarkerViewer::mRunning
protected

Check if the update thread is running.

◆ mSkeletonMarkers

std::map<dart::dynamics::SkeletonPtr, SkeletonMarkerPtr> aikido::rviz::InteractiveMarkerViewer::mSkeletonMarkers
protected

Map of Skeletons to SkeletonMarkers.

◆ mThread

std::thread aikido::rviz::InteractiveMarkerViewer::mThread
protected

Thread running the updates.

◆ mTrajectoryMarkers

std::set<TrajectoryMarkerPtr> aikido::rviz::InteractiveMarkerViewer::mTrajectoryMarkers
protected

Set of trajectory markers.

◆ mTrajectoryNameManager

dart::common::NameManager<trajectory::ConstTrajectoryPtr> aikido::rviz::InteractiveMarkerViewer::mTrajectoryNameManager
protected

NameManager for name uniqueness of trajectories in the same InteractiveMarkerServer.

◆ mUpdating

std::atomic_bool aikido::rviz::InteractiveMarkerViewer::mUpdating
protected

Check if the updates are happening.

◆ mWorld

aikido::planner::WorldPtr aikido::rviz::InteractiveMarkerViewer::mWorld
protected

World that automatically updates the viewer.