Aikido
InteractiveMarkerViewer.hpp
Go to the documentation of this file.
1 #ifndef AIKIDO_RVIZ_INTERACTIVEMARKERVIEWER_HPP_
2 #define AIKIDO_RVIZ_INTERACTIVEMARKERVIEWER_HPP_
3 
4 #include <atomic>
5 #include <set>
6 #include <thread>
7 
8 #include <dart/common/NameManager.hpp>
9 #include <dart/dynamics/Frame.hpp>
10 #include <dart/dynamics/SmartPointer.hpp>
11 #include <interactive_markers/interactive_marker_server.h>
12 #include <ros/ros.h>
13 
15 #include "aikido/planner/World.hpp"
17 #include "aikido/rviz/pointers.hpp"
19 
20 namespace aikido {
21 namespace rviz {
22 
24 
26 {
27 public:
35  const std::string& topicNamespace,
36  const std::string& frameId,
37  aikido::planner::WorldPtr env = nullptr);
38  virtual ~InteractiveMarkerViewer();
39 
42  InteractiveMarkerViewer& operator=(const InteractiveMarkerViewer&) = delete;
43 
44  interactive_markers::InteractiveMarkerServer& marker_server();
45 
49  SkeletonMarkerPtr addSkeletonMarker(
50  const dart::dynamics::SkeletonPtr& skeleton);
51 
58  FrameMarkerPtr addFrameMarker(
59  dart::dynamics::Frame* frame,
60  double length = 0.25,
61  double thickness = 0.02,
62  double alpha = 1.0);
63 
69  TSRMarkerPtr addTSRMarker(
70  const constraint::dart::TSR& tsr,
71  int nSamples = 10,
72  const std::string& basename = "");
73 
88  TrajectoryMarkerPtr addTrajectoryMarker(
90  dart::dynamics::MetaSkeletonPtr skeleton,
91  const dart::dynamics::Frame& frame,
92  const Eigen::Vector4d& rgba = Eigen::Vector4d::Constant(0.75),
93  double thickness = 0.01,
94  std::size_t numLineSegments = 16u);
95 
98  void setAutoUpdate(bool flag);
99 
101  void update();
102 
103 protected:
105  void autoUpdate();
106 
108  void updateSkeletonMarkers();
109 
111  void updateFrameMarkers();
112 
114  void updateTrajectoryMarkers();
115 
117  interactive_markers::InteractiveMarkerServer mMarkerServer;
118 
120  std::map<dart::dynamics::SkeletonPtr, SkeletonMarkerPtr> mSkeletonMarkers;
121 
123  std::set<FrameMarkerPtr> mFrameMarkers;
124 
126  std::set<TrajectoryMarkerPtr> mTrajectoryMarkers;
127 
130  dart::common::NameManager<trajectory::ConstTrajectoryPtr>
132 
134  std::atomic_bool mRunning;
135 
137  std::atomic_bool mUpdating;
138 
140  std::string mFrameId;
141 
144 
146  mutable std::mutex mMutex;
147 
149  std::thread mThread;
150 };
151 
152 } // namespace rviz
153 } // namespace aikido
154 
155 #endif
TSRMarker.hpp
aikido::rviz::InteractiveMarkerViewer::mMarkerServer
interactive_markers::InteractiveMarkerServer mMarkerServer
Interactive Marker Server.
Definition: InteractiveMarkerViewer.hpp:117
aikido::rviz::InteractiveMarkerViewer::mThread
std::thread mThread
Thread running the updates.
Definition: InteractiveMarkerViewer.hpp:149
aikido::rviz::InteractiveMarkerViewer::mWorld
aikido::planner::WorldPtr mWorld
World that automatically updates the viewer.
Definition: InteractiveMarkerViewer.hpp:143
aikido
Format of serialized trajectory in YAML.
Definition: algorithm.hpp:4
pointers.hpp
TSR.hpp
aikido::rviz::InteractiveMarkerViewer::mSkeletonMarkers
std::map< dart::dynamics::SkeletonPtr, SkeletonMarkerPtr > mSkeletonMarkers
Map of Skeletons to SkeletonMarkers.
Definition: InteractiveMarkerViewer.hpp:120
aikido::trajectory::ConstTrajectoryPtr
std::shared_ptr< const Trajectory > ConstTrajectoryPtr
Definition: Trajectory.hpp:13
aikido::rviz::InteractiveMarkerViewer::mRunning
std::atomic_bool mRunning
Check if the update thread is running.
Definition: InteractiveMarkerViewer.hpp:134
aikido::planner::WorldPtr
std::shared_ptr< World > WorldPtr
Definition: World.hpp:14
aikido::constraint::dart::TSR
TSRs describe end-effector constraint sets as subsets of SE(3).
Definition: TSR.hpp:29
aikido::rviz::FrameMarkerPtr
std::shared_ptr< FrameMarker > FrameMarkerPtr
Definition: FrameMarker.hpp:22
Trajectory.hpp
aikido::rviz::InteractiveMarkerViewer::mTrajectoryNameManager
dart::common::NameManager< trajectory::ConstTrajectoryPtr > mTrajectoryNameManager
NameManager for name uniqueness of trajectories in the same InteractiveMarkerServer.
Definition: InteractiveMarkerViewer.hpp:131
World.hpp
aikido::rviz::InteractiveMarkerViewer::mTrajectoryMarkers
std::set< TrajectoryMarkerPtr > mTrajectoryMarkers
Set of trajectory markers.
Definition: InteractiveMarkerViewer.hpp:126
aikido::rviz::SkeletonMarkerPtr
std::shared_ptr< SkeletonMarker > SkeletonMarkerPtr
Definition: pointers.hpp:11
aikido::rviz::InteractiveMarkerViewer
Definition: InteractiveMarkerViewer.hpp:25
aikido::rviz::InteractiveMarkerViewer::mUpdating
std::atomic_bool mUpdating
Check if the updates are happening.
Definition: InteractiveMarkerViewer.hpp:137
aikido::rviz::TSRMarkerPtr
std::shared_ptr< TSRMarker > TSRMarkerPtr
Definition: pointers.hpp:13
aikido::rviz::InteractiveMarkerViewer::mFrameId
std::string mFrameId
Frame ID.
Definition: InteractiveMarkerViewer.hpp:140
AIKIDO_DECLARE_POINTERS
#define AIKIDO_DECLARE_POINTERS(X)
Definition: pointers.hpp:21
aikido::rviz::InteractiveMarkerViewer::mFrameMarkers
std::set< FrameMarkerPtr > mFrameMarkers
Set of frame markers.
Definition: InteractiveMarkerViewer.hpp:123
aikido::rviz::InteractiveMarkerViewer::mMutex
std::mutex mMutex
Mutex.
Definition: InteractiveMarkerViewer.hpp:146
aikido::rviz::TrajectoryMarkerPtr
std::shared_ptr< TrajectoryMarker > TrajectoryMarkerPtr
Definition: pointers.hpp:12