planning_scene_monitor.h
Go to the documentation of this file.
1 /*********************************************************************
2  * Software License Agreement (BSD License)
3  *
4  * Copyright (c) 2011, Willow Garage, Inc.
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  *
11  * * Redistributions of source code must retain the above copyright
12  * notice, this list of conditions and the following disclaimer.
13  * * Redistributions in binary form must reproduce the above
14  * copyright notice, this list of conditions and the following
15  * disclaimer in the documentation and/or other materials provided
16  * with the distribution.
17  * * Neither the name of Willow Garage nor the names of its
18  * contributors may be used to endorse or promote products derived
19  * from this software without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32  * POSSIBILITY OF SUCH DAMAGE.
33  *********************************************************************/
34 
35 /* Author: Ioan Sucan */
36 
37 #pragma once
38 
39 #include <ros/ros.h>
40 #include <ros/callback_queue.h>
41 #include <tf2_ros/buffer.h>
48 #include <moveit_msgs/GetPlanningScene.h>
49 #include <boost/noncopyable.hpp>
50 #include <boost/thread/shared_mutex.hpp>
51 #include <boost/thread/recursive_mutex.hpp>
52 #include <memory>
53 
54 namespace planning_scene_monitor
55 {
56 MOVEIT_CLASS_FORWARD(PlanningSceneMonitor); // Defines PlanningSceneMonitorPtr, ConstPtr, WeakPtr... etc
57 
61 class PlanningSceneMonitor : private boost::noncopyable
62 {
63 public:
64  enum SceneUpdateType
65  {
67  UPDATE_NONE = 0,
68 
70  UPDATE_STATE = 1,
71 
74 
77  UPDATE_GEOMETRY = 4,
78 
81  };
82 
84  static const std::string DEFAULT_JOINT_STATES_TOPIC; // "/joint_states"
85 
87  static const std::string DEFAULT_ATTACHED_COLLISION_OBJECT_TOPIC; // "/attached_collision_object"
88 
90  static const std::string DEFAULT_COLLISION_OBJECT_TOPIC; // "/collision_object"
91 
94  static const std::string DEFAULT_PLANNING_SCENE_WORLD_TOPIC; // "/planning_scene_world"
95 
97  static const std::string DEFAULT_PLANNING_SCENE_TOPIC; // "/planning_scene"
98 
100  static const std::string DEFAULT_PLANNING_SCENE_SERVICE; // "/get_planning_scene"
101 
104  static const std::string MONITORED_PLANNING_SCENE_TOPIC; // "monitored_planning_scene"
105 
111  PlanningSceneMonitor(const std::string& robot_description,
112  const std::shared_ptr<tf2_ros::Buffer>& tf_buffer = std::shared_ptr<tf2_ros::Buffer>(),
113  const std::string& name = "");
114 
120  PlanningSceneMonitor(const robot_model_loader::RobotModelLoaderPtr& rml,
121  const std::shared_ptr<tf2_ros::Buffer>& tf_buffer = std::shared_ptr<tf2_ros::Buffer>(),
122  const std::string& name = "");
123 
130  PlanningSceneMonitor(const planning_scene::PlanningScenePtr& scene, const std::string& robot_description,
131  const std::shared_ptr<tf2_ros::Buffer>& tf_buffer = std::shared_ptr<tf2_ros::Buffer>(),
132  const std::string& name = "");
133 
140  PlanningSceneMonitor(const planning_scene::PlanningScenePtr& scene,
141  const robot_model_loader::RobotModelLoaderPtr& rml,
142  const std::shared_ptr<tf2_ros::Buffer>& tf_buffer = std::shared_ptr<tf2_ros::Buffer>(),
143  const std::string& name = "");
144 
154  PlanningSceneMonitor(const planning_scene::PlanningScenePtr& scene,
155  const robot_model_loader::RobotModelLoaderPtr& rml, const ros::NodeHandle& nh,
156  const std::shared_ptr<tf2_ros::Buffer>& tf_buffer = std::shared_ptr<tf2_ros::Buffer>(),
157  const std::string& name = "");
158 
160 
162  const std::string& getName() const
163  {
164  return monitor_name_;
165  }
166 
168  const robot_model_loader::RobotModelLoaderPtr& getRobotModelLoader() const
169  {
170  return rm_loader_;
171  }
172 
173  const moveit::core::RobotModelConstPtr& getRobotModel() const
174  {
175  return robot_model_;
176  }
177 
192  const planning_scene::PlanningScenePtr& getPlanningScene()
193  {
194  return scene_;
195  }
196 
200  const planning_scene::PlanningSceneConstPtr& getPlanningScene() const
201  {
202  return scene_const_;
203  }
204 
206  planning_scene::PlanningScenePtr
207  copyPlanningScene(const moveit_msgs::PlanningScene& diff = moveit_msgs::PlanningScene());
208 
213  bool updatesScene(const planning_scene::PlanningSceneConstPtr& scene) const;
214 
219  bool updatesScene(const planning_scene::PlanningScenePtr& scene) const;
220 
223  const std::string& getRobotDescription() const
224  {
225  return robot_description_;
226  }
227 
229  double getDefaultRobotPadding() const
230  {
231  return default_robot_padd_;
232  }
233 
235  double getDefaultRobotScale() const
236  {
237  return default_robot_scale_;
238  }
239 
241  double getDefaultObjectPadding() const
242  {
243  return default_object_padd_;
244  }
245 
247  double getDefaultAttachedObjectPadding() const
248  {
249  return default_attached_padd_;
250  }
251 
253  const std::shared_ptr<tf2_ros::Buffer>& getTFClient() const
254  {
255  return tf_buffer_;
256  }
257 
263  void monitorDiffs(bool flag);
264 
269  const std::string& planning_scene_topic = MONITORED_PLANNING_SCENE_TOPIC);
270 
273 
275  void setPlanningScenePublishingFrequency(double hz);
276 
279  {
281  }
282 
285  const CurrentStateMonitorPtr& getStateMonitor() const
286  {
287  return current_state_monitor_;
288  }
289 
290  CurrentStateMonitorPtr& getStateMonitorNonConst()
291  {
292  return current_state_monitor_;
293  }
294 
300  void updateFrameTransforms();
301 
305  void startStateMonitor(const std::string& joint_states_topic = DEFAULT_JOINT_STATES_TOPIC,
306  const std::string& attached_objects_topic = DEFAULT_ATTACHED_COLLISION_OBJECT_TOPIC);
307 
309  void stopStateMonitor();
310 
315  void updateSceneWithCurrentState(bool skip_update_if_locked = false);
316 
322  void setStateUpdateFrequency(double hz);
323 
325  double getStateUpdateFrequency() const
326  {
327  if (!dt_state_update_.isZero())
328  return 1.0 / dt_state_update_.toSec();
329  else
330  return 0.0;
331  }
332 
336  void startSceneMonitor(const std::string& scene_topic = DEFAULT_PLANNING_SCENE_TOPIC);
337 
345  bool requestPlanningSceneState(const std::string& service_name = DEFAULT_PLANNING_SCENE_SERVICE);
346 
354  void providePlanningSceneService(const std::string& service_name = DEFAULT_PLANNING_SCENE_SERVICE);
355 
358 
367  void startWorldGeometryMonitor(const std::string& collision_objects_topic = DEFAULT_COLLISION_OBJECT_TOPIC,
368  const std::string& planning_scene_world_topic = DEFAULT_PLANNING_SCENE_WORLD_TOPIC,
369  const bool load_octomap_monitor = true);
370 
373 
375  void addUpdateCallback(const boost::function<void(SceneUpdateType)>& fn);
376 
378  void clearUpdateCallbacks();
379 
381  void getMonitoredTopics(std::vector<std::string>& topics) const;
382 
384  const ros::Time& getLastUpdateTime() const
385  {
386  return last_update_time_;
387  }
388 
389  void publishDebugInformation(bool flag);
390 
392  void triggerSceneUpdateEvent(SceneUpdateType update_type);
393 
399  bool waitForCurrentRobotState(const ros::Time& t, double wait_time = 1.);
400 
402  void lockSceneRead();
403 
405  void unlockSceneRead();
406 
409  void lockSceneWrite();
410 
413  void unlockSceneWrite();
414 
415  void clearOctomap();
416 
417  // Called to update the planning scene with a new message.
418  bool newPlanningSceneMessage(const moveit_msgs::PlanningScene& scene);
419 
420 protected:
424  void initialize(const planning_scene::PlanningScenePtr& scene);
425 
427  void configureCollisionMatrix(const planning_scene::PlanningScenePtr& scene);
428 
431 
433  void collisionObjectCallback(const moveit_msgs::CollisionObjectConstPtr& obj);
434 
436  void newPlanningSceneWorldCallback(const moveit_msgs::PlanningSceneWorldConstPtr& world);
437 
439  void octomapUpdateCallback();
440 
442  void attachObjectCallback(const moveit_msgs::AttachedCollisionObjectConstPtr& obj);
443 
445  void currentStateAttachedBodyUpdateCallback(moveit::core::AttachedBody* attached_body, bool just_attached);
446 
448  void currentWorldObjectUpdateCallback(const collision_detection::World::ObjectConstPtr& object,
450 
453 
456  void excludeWorldObjectFromOctree(const collision_detection::World::ObjectConstPtr& obj);
457  void includeWorldObjectInOctree(const collision_detection::World::ObjectConstPtr& obj);
458 
462  void includeAttachedBodyInOctree(const moveit::core::AttachedBody* attached_body);
463 
464  bool getShapeTransformCache(const std::string& target_frame, const ros::Time& target_time,
466 
468  std::string monitor_name_;
469 
470  planning_scene::PlanningScenePtr scene_;
471  planning_scene::PlanningSceneConstPtr scene_const_;
472  planning_scene::PlanningScenePtr parent_scene_;
473  boost::shared_mutex scene_update_mutex_;
476 
480  std::shared_ptr<ros::AsyncSpinner> spinner_;
481 
482  std::shared_ptr<tf2_ros::Buffer> tf_buffer_;
483 
484  std::string robot_description_;
485 
487  double default_robot_padd_;
489  double default_robot_scale_;
491  double default_object_padd_;
493  double default_attached_padd_;
495  std::map<std::string, double> default_robot_link_padd_;
497  std::map<std::string, double> default_robot_link_scale_;
498 
499  // variables for planning scene publishing
501  std::unique_ptr<boost::thread> publish_planning_scene_;
505  boost::condition_variable_any new_scene_update_condition_;
506 
507  // subscribe to various sources of data
510 
513 
514  // provide an optional service to get the full planning scene state
515  // this is used by MoveGroup and related application nodes
517 
518  // include a octomap monitor
519  std::unique_ptr<occupancy_map_monitor::OccupancyMapMonitor> octomap_monitor_;
520 
521  // include a current state monitor
522  CurrentStateMonitorPtr current_state_monitor_;
523 
524  typedef std::map<const moveit::core::LinkModel*,
525  std::vector<std::pair<occupancy_map_monitor::ShapeHandle, std::size_t> > >
528  std::vector<std::pair<occupancy_map_monitor::ShapeHandle, std::size_t> > >;
530  std::map<std::string, std::vector<std::pair<occupancy_map_monitor::ShapeHandle, const Eigen::Isometry3d*> > >;
531 
535  mutable boost::recursive_mutex shape_handles_lock_;
536 
538  boost::recursive_mutex update_lock_;
539  std::vector<boost::function<void(SceneUpdateType)> > update_callbacks_;
540 
542 private:
543  void getUpdatedFrameTransforms(std::vector<geometry_msgs::TransformStamped>& transforms);
544 
545  // publish planning scene update diffs (runs in its own thread)
546  void scenePublishingThread();
547 
548  // called by current_state_monitor_ when robot state (as monitored on joint state topic) changes
549  void onStateUpdate(const sensor_msgs::JointStateConstPtr& joint_state);
550 
551  // called by state_update_timer_ when a state update it pending
553 
554  // Callback for a new planning scene msg
555  void newPlanningSceneCallback(const moveit_msgs::PlanningSceneConstPtr& scene);
556 
557  // Callback for requesting the full planning scene via service
558  bool getPlanningSceneServiceCallback(moveit_msgs::GetPlanningScene::Request& req,
559  moveit_msgs::GetPlanningScene::Response& res);
560 
562  std::atomic<bool> state_update_pending_;
563 
564  // Lock for writing last_robot_state_update_wall_time_ and dt_state_update_
565  boost::mutex state_update_mutex_;
566 
568  // Only access this from callback functions (and constructor)
569  // This field is protected by state_update_mutex_
571 
573  // This field is protected by state_update_mutex_
575 
577  // Setting this to a non-zero value resolves issues when the sensor data is
578  // arriving so fast that it is preceding the transform state.
580 
582  // If state_update_pending_ is true, call updateSceneWithCurrentState()
583  // Not safe to access from callback functions.
585 
586  robot_model_loader::RobotModelLoaderPtr rm_loader_;
587  moveit::core::RobotModelConstPtr robot_model_;
588 
590 
593 
594  std::set<std::string> ignored_frames_;
595  bool checkFrameIgnored(const std::string& frame);
596 };
597 
620 {
621 public:
622  LockedPlanningSceneRO(const PlanningSceneMonitorPtr& planning_scene_monitor)
624  {
625  initialize(true);
626  }
627 
628  const PlanningSceneMonitorPtr& getPlanningSceneMonitor()
629  {
631  }
632 
633  operator bool() const
634  {
635  return planning_scene_monitor_ && planning_scene_monitor_->getPlanningScene();
636  }
637 
638  operator const planning_scene::PlanningSceneConstPtr&() const
639  {
640  return std::const_pointer_cast<const PlanningSceneMonitor>(planning_scene_monitor_)->getPlanningScene();
641  }
642 
643  const planning_scene::PlanningSceneConstPtr& operator->() const
644  {
645  return std::const_pointer_cast<const PlanningSceneMonitor>(planning_scene_monitor_)->getPlanningScene();
646  }
647 
648 protected:
649  LockedPlanningSceneRO(const PlanningSceneMonitorPtr& planning_scene_monitor, bool read_only)
651  {
652  initialize(read_only);
653  }
654 
655  void initialize(bool read_only)
656  {
658  lock_ = std::make_shared<SingleUnlock>(planning_scene_monitor_.get(), read_only);
659  }
660 
662 
663  // we use this struct so that lock/unlock are called only once
664  // even if the LockedPlanningScene instance is copied around
666  {
669  {
670  if (read_only)
672  else
674  }
676  {
677  if (read_only_)
679  else
681  }
683  bool read_only_;
684  };
685 
686  PlanningSceneMonitorPtr planning_scene_monitor_;
687  SingleUnlockPtr lock_;
688 };
689 
712 {
713 public:
714  LockedPlanningSceneRW(const PlanningSceneMonitorPtr& planning_scene_monitor)
716  {
717  }
718 
719  operator const planning_scene::PlanningScenePtr&()
720  {
721  return planning_scene_monitor_->getPlanningScene();
722  }
723 
724  const planning_scene::PlanningScenePtr& operator->()
725  {
726  return planning_scene_monitor_->getPlanningScene();
727  }
728 };
729 } // namespace planning_scene_monitor
planning_scene_monitor::PlanningSceneMonitor::excludeWorldObjectFromOctree
void excludeWorldObjectFromOctree(const collision_detection::World::ObjectConstPtr &obj)
Definition: planning_scene_monitor.cpp:890
planning_scene_monitor::PlanningSceneMonitor::planning_scene_world_subscriber_
ros::Subscriber planning_scene_world_subscriber_
Definition: planning_scene_monitor.h:541
planning_scene_monitor::LockedPlanningSceneRO::SingleUnlock
Definition: planning_scene_monitor.h:697
moveit::core::LinkModel
planning_scene_monitor::PlanningSceneMonitor::collision_body_shape_handles_
CollisionBodyShapeHandles collision_body_shape_handles_
Definition: planning_scene_monitor.h:566
planning_scene_monitor::PlanningSceneMonitor::publishDebugInformation
void publishDebugInformation(bool flag)
Definition: planning_scene_monitor.cpp:1396
planning_scene_monitor
Definition: current_state_monitor.h:47
planning_scene_monitor::PlanningSceneMonitor::onStateUpdate
void onStateUpdate(const sensor_msgs::JointStateConstPtr &joint_state)
Definition: planning_scene_monitor.cpp:1221
planning_scene_monitor::PlanningSceneMonitor::currentWorldObjectUpdateCallback
void currentWorldObjectUpdateCallback(const collision_detection::World::ObjectConstPtr &object, collision_detection::World::Action action)
Callback for a change in the world maintained by the planning scene.
Definition: planning_scene_monitor.cpp:942
planning_scene_monitor::PlanningSceneMonitor::getDefaultRobotScale
double getDefaultRobotScale() const
Get the default robot scaling.
Definition: planning_scene_monitor.h:267
planning_scene_monitor::PlanningSceneMonitor::default_attached_padd_
double default_attached_padd_
default attached padding
Definition: planning_scene_monitor.h:525
planning_scene_monitor::PlanningSceneMonitor::default_robot_link_padd_
std::map< std::string, double > default_robot_link_padd_
default robot link padding
Definition: planning_scene_monitor.h:527
planning_scene_monitor::PlanningSceneMonitor::configureDefaultPadding
void configureDefaultPadding()
Configure the default padding.
Definition: planning_scene_monitor.cpp:1445
planning_scene_monitor::PlanningSceneMonitor::attached_body_shape_handles_
AttachedBodyShapeHandles attached_body_shape_handles_
Definition: planning_scene_monitor.h:565
ros::Publisher
planning_scene_monitor::PlanningSceneMonitor::DEFAULT_PLANNING_SCENE_SERVICE
static const std::string DEFAULT_PLANNING_SCENE_SERVICE
The name of the service used by default for requesting full planning scene state.
Definition: planning_scene_monitor.h:132
occupancy_map_monitor::ShapeTransformCache
std::map< ShapeHandle, Eigen::Isometry3d, std::less< ShapeHandle >, Eigen::aligned_allocator< std::pair< const ShapeHandle, Eigen::Isometry3d > > > ShapeTransformCache
planning_scene_monitor::PlanningSceneMonitor::triggerSceneUpdateEvent
void triggerSceneUpdateEvent(SceneUpdateType update_type)
This function is called every time there is a change to the planning scene.
Definition: planning_scene_monitor.cpp:518
planning_scene_monitor::PlanningSceneMonitor::~PlanningSceneMonitor
~PlanningSceneMonitor()
Definition: planning_scene_monitor.cpp:194
planning_scene_monitor::PlanningSceneMonitor::getShapeTransformCache
bool getShapeTransformCache(const std::string &target_frame, const ros::Time &target_time, occupancy_map_monitor::ShapeTransformCache &cache) const
Definition: planning_scene_monitor.cpp:1063
planning_scene_monitor::PlanningSceneMonitor::stopStateMonitor
void stopStateMonitor()
Stop the state monitor.
Definition: planning_scene_monitor.cpp:1210
planning_scene_monitor::PlanningSceneMonitor::updatesScene
bool updatesScene(const planning_scene::PlanningSceneConstPtr &scene) const
Return true if the scene scene can be updated directly or indirectly by this monitor....
Definition: planning_scene_monitor.cpp:513
planning_scene_monitor::PlanningSceneMonitor::newPlanningSceneMessage
bool newPlanningSceneMessage(const moveit_msgs::PlanningScene &scene)
Definition: planning_scene_monitor.cpp:612
planning_scene_monitor::PlanningSceneMonitor::getStateMonitor
const CurrentStateMonitorPtr & getStateMonitor() const
Get the stored instance of the stored current state monitor.
Definition: planning_scene_monitor.h:317
planning_scene_monitor::PlanningSceneMonitor::octomapUpdateCallback
void octomapUpdateCallback()
Callback for octomap updates.
Definition: planning_scene_monitor.cpp:1240
planning_scene_monitor::PlanningSceneMonitor::addUpdateCallback
void addUpdateCallback(const boost::function< void(SceneUpdateType)> &fn)
Add a function to be called when an update to the scene is received.
Definition: planning_scene_monitor.cpp:1329
planning_scene_monitor::PlanningSceneMonitor::spinner_
std::shared_ptr< ros::AsyncSpinner > spinner_
Definition: planning_scene_monitor.h:512
planning_scene_monitor::LockedPlanningSceneRO::lock_
SingleUnlockPtr lock_
Definition: planning_scene_monitor.h:719
planning_scene_monitor::PlanningSceneMonitor::getStateMonitorNonConst
CurrentStateMonitorPtr & getStateMonitorNonConst()
Definition: planning_scene_monitor.h:322
planning_scene_monitor::PlanningSceneMonitor::updateSceneWithCurrentState
void updateSceneWithCurrentState(bool skip_update_if_locked=false)
Update the scene using the monitored state. This function is automatically called when an update to t...
Definition: planning_scene_monitor.cpp:1289
planning_scene_monitor::PlanningSceneMonitor::copyPlanningScene
planning_scene::PlanningScenePtr copyPlanningScene(const moveit_msgs::PlanningScene &diff=moveit_msgs::PlanningScene())
Returns a copy of the current planning scene.
Definition: planning_scene_monitor.cpp:216
ros.h
planning_scene_monitor::PlanningSceneMonitor::collision_loader_
collision_detection::CollisionPluginLoader collision_loader_
Definition: planning_scene_monitor.h:621
planning_scene_monitor::PlanningSceneMonitor::scenePublishingThread
void scenePublishingThread()
Definition: planning_scene_monitor.cpp:389
planning_scene_monitor::PlanningSceneMonitor::default_robot_padd_
double default_robot_padd_
default robot padding
Definition: planning_scene_monitor.h:519
planning_scene_monitor::PlanningSceneMonitor::attached_collision_object_subscriber_
ros::Subscriber attached_collision_object_subscriber_
Definition: planning_scene_monitor.h:543
planning_scene_monitor::PlanningSceneMonitor::setStateUpdateFrequency
void setStateUpdateFrequency(double hz)
Update the scene using the monitored state at a specified frequency, in Hz. This function has an effe...
Definition: planning_scene_monitor.cpp:1264
planning_scene_monitor::PlanningSceneMonitor::collisionObjectCallback
void collisionObjectCallback(const moveit_msgs::CollisionObjectConstPtr &obj)
Callback for a new collision object msg.
Definition: planning_scene_monitor.cpp:718
planning_scene_monitor::PlanningSceneMonitor::scene_const_
planning_scene::PlanningSceneConstPtr scene_const_
Definition: planning_scene_monitor.h:503
planning_scene_monitor::LockedPlanningSceneRO::getPlanningSceneMonitor
const PlanningSceneMonitorPtr & getPlanningSceneMonitor()
Definition: planning_scene_monitor.h:660
ros::WallTimer
planning_scene_monitor::PlanningSceneMonitor::update_lock_
boost::recursive_mutex update_lock_
lock access to update_callbacks_
Definition: planning_scene_monitor.h:570
planning_scene_monitor::PlanningSceneMonitor::state_update_pending_
std::atomic< bool > state_update_pending_
True if current_state_monitor_ has a newer RobotState than scene_.
Definition: planning_scene_monitor.h:594
planning_scene_monitor::PlanningSceneMonitor::collision_object_subscriber_
ros::Subscriber collision_object_subscriber_
Definition: planning_scene_monitor.h:544
planning_scene_monitor::PlanningSceneMonitor::getPlanningScene
const planning_scene::PlanningScenePtr & getPlanningScene()
Avoid this function! Returns an unsafe pointer to the current planning scene.
Definition: planning_scene_monitor.h:224
current_state_monitor.h
buffer.h
collision_detection::World::Action
planning_scene_monitor::LockedPlanningSceneRW::LockedPlanningSceneRW
LockedPlanningSceneRW(const PlanningSceneMonitorPtr &planning_scene_monitor)
Definition: planning_scene_monitor.h:746
planning_scene_monitor::PlanningSceneMonitor::updateFrameTransforms
void updateFrameTransforms()
Update the transforms for the frames that are not part of the kinematic model using tf....
Definition: planning_scene_monitor.cpp:1378
planning_scene_monitor::PlanningSceneMonitor::LinkShapeHandles
std::map< const moveit::core::LinkModel *, std::vector< std::pair< occupancy_map_monitor::ShapeHandle, std::size_t > > > LinkShapeHandles
Definition: planning_scene_monitor.h:558
planning_scene_monitor::PlanningSceneMonitor::getName
const std::string & getName() const
Get the name of this monitor.
Definition: planning_scene_monitor.h:194
planning_scene_monitor::PlanningSceneMonitor::excludeWorldObjectsFromOctree
void excludeWorldObjectsFromOctree()
Definition: planning_scene_monitor.cpp:842
planning_scene_monitor::PlanningSceneMonitor::last_robot_motion_time_
ros::Time last_robot_motion_time_
Last time the state was updated.
Definition: planning_scene_monitor.h:507
planning_scene_monitor::PlanningSceneMonitor::DynamicReconfigureImpl
Definition: planning_scene_monitor.cpp:93
planning_scene_monitor::PlanningSceneMonitor::rm_loader_
robot_model_loader::RobotModelLoaderPtr rm_loader_
Definition: planning_scene_monitor.h:618
planning_scene_monitor::PlanningSceneMonitor::new_scene_update_
SceneUpdateType new_scene_update_
Definition: planning_scene_monitor.h:536
planning_scene_monitor::PlanningSceneMonitor::tf_buffer_
std::shared_ptr< tf2_ros::Buffer > tf_buffer_
Definition: planning_scene_monitor.h:514
ros::ServiceServer
planning_scene_monitor::PlanningSceneMonitor::state_update_timer_
ros::WallTimer state_update_timer_
timer for state updates.
Definition: planning_scene_monitor.h:616
planning_scene_monitor::PlanningSceneMonitor::SceneUpdateType
SceneUpdateType
Definition: planning_scene_monitor.h:96
moveit::core::AttachedBody
planning_scene_monitor::PlanningSceneMonitor::default_robot_scale_
double default_robot_scale_
default robot scaling
Definition: planning_scene_monitor.h:521
planning_scene_monitor::LockedPlanningSceneRW
This is a convenience class for obtaining access to an instance of a locked PlanningScene.
Definition: planning_scene_monitor.h:743
planning_scene_monitor::PlanningSceneMonitor::initialize
void initialize(const planning_scene::PlanningScenePtr &scene)
Initialize the planning scene monitor.
Definition: planning_scene_monitor.cpp:229
planning_scene_monitor::PlanningSceneMonitor::publish_update_types_
SceneUpdateType publish_update_types_
Definition: planning_scene_monitor.h:535
planning_scene_monitor::PlanningSceneMonitor::octomap_monitor_
std::unique_ptr< occupancy_map_monitor::OccupancyMapMonitor > octomap_monitor_
Definition: planning_scene_monitor.h:551
planning_scene_monitor::PlanningSceneMonitor::getRobotModel
const moveit::core::RobotModelConstPtr & getRobotModel() const
Definition: planning_scene_monitor.h:205
planning_scene_monitor::PlanningSceneMonitor::getDefaultAttachedObjectPadding
double getDefaultAttachedObjectPadding() const
Get the default attached padding.
Definition: planning_scene_monitor.h:279
planning_scene_monitor::PlanningSceneMonitor::last_update_time_
ros::Time last_update_time_
mutex for stored scene
Definition: planning_scene_monitor.h:506
planning_scene_monitor::PlanningSceneMonitor::CollisionBodyShapeHandles
std::map< std::string, std::vector< std::pair< occupancy_map_monitor::ShapeHandle, const Eigen::Isometry3d * > > > CollisionBodyShapeHandles
Definition: planning_scene_monitor.h:562
planning_scene_monitor::PlanningSceneMonitor::new_scene_update_condition_
boost::condition_variable_any new_scene_update_condition_
Definition: planning_scene_monitor.h:537
planning_scene_monitor::PlanningSceneMonitor::lockSceneRead
void lockSceneRead()
Lock the scene for reading (multiple threads can lock for reading at the same time)
Definition: planning_scene_monitor.cpp:1012
ros::CallbackQueue
planning_scene_monitor::PlanningSceneMonitor::unlockSceneRead
void unlockSceneRead()
Unlock the scene from reading (multiple threads can lock for reading at the same time)
Definition: planning_scene_monitor.cpp:1019
planning_scene_monitor::PlanningSceneMonitor::DEFAULT_PLANNING_SCENE_WORLD_TOPIC
static const std::string DEFAULT_PLANNING_SCENE_WORLD_TOPIC
Definition: planning_scene_monitor.h:126
planning_scene_monitor::LockedPlanningSceneRO::SingleUnlock::SingleUnlock
SingleUnlock(PlanningSceneMonitor *planning_scene_monitor, bool read_only)
Definition: planning_scene_monitor.h:699
planning_scene_monitor::LockedPlanningSceneRO::operator->
const planning_scene::PlanningSceneConstPtr & operator->() const
Definition: planning_scene_monitor.h:675
planning_scene_monitor::PlanningSceneMonitor::getTFClient
const std::shared_ptr< tf2_ros::Buffer > & getTFClient() const
Get the instance of the TF client that was passed to the constructor of this class.
Definition: planning_scene_monitor.h:285
planning_scene_monitor::PlanningSceneMonitor::root_nh_
ros::NodeHandle root_nh_
Definition: planning_scene_monitor.h:510
planning_scene_monitor::PlanningSceneMonitor::current_state_monitor_
CurrentStateMonitorPtr current_state_monitor_
Definition: planning_scene_monitor.h:554
planning_scene_monitor::PlanningSceneMonitor::checkFrameIgnored
bool checkFrameIgnored(const std::string &frame)
Definition: planning_scene_monitor.cpp:1493
planning_scene_monitor::PlanningSceneMonitor::stopPublishingPlanningScene
void stopPublishingPlanningScene()
Stop publishing the maintained planning scene.
Definition: planning_scene_monitor.cpp:362
planning_scene_monitor::PlanningSceneMonitor::excludeAttachedBodyFromOctree
void excludeAttachedBodyFromOctree(const moveit::core::AttachedBody *attached_body)
Definition: planning_scene_monitor.cpp:851
planning_scene_monitor::PlanningSceneMonitor::UPDATE_STATE
@ UPDATE_STATE
The state in the monitored scene was updated.
Definition: planning_scene_monitor.h:102
planning_scene_monitor::LockedPlanningSceneRO::SingleUnlock::~SingleUnlock
~SingleUnlock()
Definition: planning_scene_monitor.h:707
planning_scene_monitor::PlanningSceneMonitor::reconfigure_impl_
DynamicReconfigureImpl * reconfigure_impl_
Definition: planning_scene_monitor.h:623
planning_scene_monitor::PlanningSceneMonitor::queue_
ros::CallbackQueue queue_
Definition: planning_scene_monitor.h:511
planning_scene_monitor::PlanningSceneMonitor::stopSceneMonitor
void stopSceneMonitor()
Stop the scene monitor.
Definition: planning_scene_monitor.cpp:1054
planning_scene_monitor::PlanningSceneMonitor::stopWorldGeometryMonitor
void stopWorldGeometryMonitor()
Stop the world geometry monitor.
Definition: planning_scene_monitor.cpp:1163
planning_scene_monitor::PlanningSceneMonitor::DEFAULT_COLLISION_OBJECT_TOPIC
static const std::string DEFAULT_COLLISION_OBJECT_TOPIC
The name of the topic used by default for receiving collision objects in the world.
Definition: planning_scene_monitor.h:122
planning_scene_monitor::PlanningSceneMonitor::startStateMonitor
void startStateMonitor(const std::string &joint_states_topic=DEFAULT_JOINT_STATES_TOPIC, const std::string &attached_objects_topic=DEFAULT_ATTACHED_COLLISION_OBJECT_TOPIC)
Start the current state monitor.
Definition: planning_scene_monitor.cpp:1179
planning_scene_monitor::LockedPlanningSceneRO::SingleUnlock::planning_scene_monitor_
PlanningSceneMonitor * planning_scene_monitor_
Definition: planning_scene_monitor.h:714
planning_scene_monitor::PlanningSceneMonitor::excludeRobotLinksFromOctree
void excludeRobotLinksFromOctree()
Definition: planning_scene_monitor.cpp:747
planning_scene_monitor::PlanningSceneMonitor::getPlanningSceneServiceCallback
bool getPlanningSceneServiceCallback(moveit_msgs::GetPlanningScene::Request &req, moveit_msgs::GetPlanningScene::Response &res)
Definition: planning_scene_monitor.cpp:569
planning_scene_monitor::PlanningSceneMonitor::publish_planning_scene_
std::unique_ptr< boost::thread > publish_planning_scene_
Definition: planning_scene_monitor.h:533
planning_scene_monitor::PlanningSceneMonitor::last_robot_state_update_wall_time_
ros::WallTime last_robot_state_update_wall_time_
Last time the state was updated from current_state_monitor_.
Definition: planning_scene_monitor.h:602
planning_scene_monitor::PlanningSceneMonitor::get_scene_service_
ros::ServiceServer get_scene_service_
Definition: planning_scene_monitor.h:548
planning_scene_monitor::PlanningSceneMonitor::unlockSceneWrite
void unlockSceneWrite()
Lock the scene from writing (only one thread can lock for writing and no other thread can lock for re...
Definition: planning_scene_monitor.cpp:1033
planning_scene_monitor::PlanningSceneMonitor::robot_description_
std::string robot_description_
Definition: planning_scene_monitor.h:516
planning_scene_monitor::PlanningSceneMonitor::default_object_padd_
double default_object_padd_
default object padding
Definition: planning_scene_monitor.h:523
planning_scene_monitor::PlanningSceneMonitor::robot_model_
moveit::core::RobotModelConstPtr robot_model_
Definition: planning_scene_monitor.h:619
planning_scene_monitor::PlanningSceneMonitor::includeAttachedBodyInOctree
void includeAttachedBodyInOctree(const moveit::core::AttachedBody *attached_body)
Definition: planning_scene_monitor.cpp:873
planning_scene_monitor::PlanningSceneMonitor::stateUpdateTimerCallback
void stateUpdateTimerCallback(const ros::WallTimerEvent &event)
Definition: planning_scene_monitor.cpp:1232
ros::WallTime
planning_scene_monitor::PlanningSceneMonitor::setPlanningScenePublishingFrequency
void setPlanningScenePublishingFrequency(double hz)
Set the maximum frequency at which planning scenes are being published.
Definition: planning_scene_monitor.cpp:1342
planning_scene_monitor::PlanningSceneMonitor::default_robot_link_scale_
std::map< std::string, double > default_robot_link_scale_
default robot link scale
Definition: planning_scene_monitor.h:529
planning_scene_monitor::PlanningSceneMonitor::monitor_name_
std::string monitor_name_
The name of this scene monitor.
Definition: planning_scene_monitor.h:500
planning_scene_monitor::PlanningSceneMonitor::publish_planning_scene_frequency_
double publish_planning_scene_frequency_
Definition: planning_scene_monitor.h:534
planning_scene_monitor::PlanningSceneMonitor::state_update_mutex_
boost::mutex state_update_mutex_
Definition: planning_scene_monitor.h:597
planning_scene_monitor::PlanningSceneMonitor
PlanningSceneMonitor Subscribes to the topic planning_scene.
Definition: planning_scene_monitor.h:93
planning_scene_monitor::PlanningSceneMonitor::shape_handles_lock_
boost::recursive_mutex shape_handles_lock_
Definition: planning_scene_monitor.h:567
planning_scene_monitor::PlanningSceneMonitor::getRobotDescription
const std::string & getRobotDescription() const
Get the stored robot description.
Definition: planning_scene_monitor.h:255
planning_scene_monitor::PlanningSceneMonitor::startWorldGeometryMonitor
void startWorldGeometryMonitor(const std::string &collision_objects_topic=DEFAULT_COLLISION_OBJECT_TOPIC, const std::string &planning_scene_world_topic=DEFAULT_PLANNING_SCENE_WORLD_TOPIC, const bool load_octomap_monitor=true)
Start the OccupancyMapMonitor and listening for:
Definition: planning_scene_monitor.cpp:1118
callback_queue.h
planning_scene_monitor::PlanningSceneMonitor::AttachedBodyShapeHandles
std::map< const moveit::core::AttachedBody *, std::vector< std::pair< occupancy_map_monitor::ShapeHandle, std::size_t > > > AttachedBodyShapeHandles
Definition: planning_scene_monitor.h:560
planning_scene_monitor::PlanningSceneMonitor::getLastUpdateTime
const ros::Time & getLastUpdateTime() const
Return the time when the last update was made to the planning scene (by any monitor)
Definition: planning_scene_monitor.h:416
planning_scene_monitor::LockedPlanningSceneRO::planning_scene_monitor_
PlanningSceneMonitorPtr planning_scene_monitor_
Definition: planning_scene_monitor.h:718
occupancy_map_monitor.h
planning_scene_monitor::PlanningSceneMonitor::UPDATE_NONE
@ UPDATE_NONE
No update.
Definition: planning_scene_monitor.h:99
planning_scene_monitor::MOVEIT_CLASS_FORWARD
MOVEIT_CLASS_FORWARD(CurrentStateMonitor)
planning_scene_monitor::PlanningSceneMonitor::scene_
planning_scene::PlanningScenePtr scene_
Definition: planning_scene_monitor.h:502
planning_scene_monitor::PlanningSceneMonitor::newPlanningSceneWorldCallback
void newPlanningSceneWorldCallback(const moveit_msgs::PlanningSceneWorldConstPtr &world)
Callback for a new planning scene world.
Definition: planning_scene_monitor.cpp:694
planning_scene_monitor::LockedPlanningSceneRO::LockedPlanningSceneRO
LockedPlanningSceneRO(const PlanningSceneMonitorPtr &planning_scene_monitor)
Definition: planning_scene_monitor.h:654
planning_scene_monitor::PlanningSceneMonitor::nh_
ros::NodeHandle nh_
Last time the robot has moved.
Definition: planning_scene_monitor.h:509
planning_scene_monitor::PlanningSceneMonitor::DEFAULT_JOINT_STATES_TOPIC
static const std::string DEFAULT_JOINT_STATES_TOPIC
The name of the topic used by default for receiving joint states.
Definition: planning_scene_monitor.h:116
planning_scene_monitor::PlanningSceneMonitor::currentStateAttachedBodyUpdateCallback
void currentStateAttachedBodyUpdateCallback(moveit::core::AttachedBody *attached_body, bool just_attached)
Callback for a change for an attached object of the current state of the planning scene.
Definition: planning_scene_monitor.cpp:930
ros::WallTimerEvent
planning_scene.h
collision_detection::CollisionPluginLoader
Definition: collision_plugin_loader.h:75
planning_scene_monitor::PlanningSceneMonitor::DEFAULT_PLANNING_SCENE_TOPIC
static const std::string DEFAULT_PLANNING_SCENE_TOPIC
The name of the topic used by default for receiving full planning scenes or planning scene diffs.
Definition: planning_scene_monitor.h:129
planning_scene_monitor::LockedPlanningSceneRO::MOVEIT_STRUCT_FORWARD
MOVEIT_STRUCT_FORWARD(SingleUnlock)
planning_scene_monitor::PlanningSceneMonitor::MONITORED_PLANNING_SCENE_TOPIC
static const std::string MONITORED_PLANNING_SCENE_TOPIC
Definition: planning_scene_monitor.h:136
ros::Time
planning_scene_monitor::PlanningSceneMonitor::includeRobotLinksInOctree
void includeRobotLinksInOctree()
Definition: planning_scene_monitor.cpp:783
planning_scene_monitor::PlanningSceneMonitor::getStateUpdateFrequency
double getStateUpdateFrequency() const
Get the maximum frequency (Hz) at which the current state of the planning scene is updated.
Definition: planning_scene_monitor.h:357
planning_scene_monitor::PlanningSceneMonitor::waitForCurrentRobotState
bool waitForCurrentRobotState(const ros::Time &t, double wait_time=1.)
Wait for robot state to become more recent than time t.
Definition: planning_scene_monitor.cpp:961
planning_scene_monitor::PlanningSceneMonitor::attachObjectCallback
void attachObjectCallback(const moveit_msgs::AttachedCollisionObjectConstPtr &obj)
Callback for a new attached object msg.
Definition: planning_scene_monitor.cpp:733
class_forward.h
planning_scene_monitor::PlanningSceneMonitor::startSceneMonitor
void startSceneMonitor(const std::string &scene_topic=DEFAULT_PLANNING_SCENE_TOPIC)
Start the scene monitor (ROS topic-based)
Definition: planning_scene_monitor.cpp:1040
planning_scene_monitor::LockedPlanningSceneRO
This is a convenience class for obtaining access to an instance of a locked PlanningScene.
Definition: planning_scene_monitor.h:651
planning_scene_monitor::PlanningSceneMonitor::newPlanningSceneCallback
void newPlanningSceneCallback(const moveit_msgs::PlanningSceneConstPtr &scene)
Definition: planning_scene_monitor.cpp:584
planning_scene_monitor::PlanningSceneMonitor::planning_scene_subscriber_
ros::Subscriber planning_scene_subscriber_
Definition: planning_scene_monitor.h:540
planning_scene_monitor::PlanningSceneMonitor::includeWorldObjectsInOctree
void includeWorldObjectsInOctree()
Definition: planning_scene_monitor.cpp:826
planning_scene_monitor::PlanningSceneMonitor::ignored_frames_
std::set< std::string > ignored_frames_
Definition: planning_scene_monitor.h:626
planning_scene_monitor::PlanningSceneMonitor::excludeAttachedBodiesFromOctree
void excludeAttachedBodiesFromOctree()
Definition: planning_scene_monitor.cpp:814
planning_scene_monitor::PlanningSceneMonitor::configureCollisionMatrix
void configureCollisionMatrix(const planning_scene::PlanningScenePtr &scene)
Configure the collision matrix for a particular scene.
Definition: planning_scene_monitor.cpp:1402
planning_scene_monitor::PlanningSceneMonitor::dt_state_update_
ros::WallDuration dt_state_update_
the amount of time to wait in between updates to the robot state
Definition: planning_scene_monitor.h:606
planning_scene_monitor::PlanningSceneMonitor::UPDATE_GEOMETRY
@ UPDATE_GEOMETRY
The geometry of the scene was updated. This includes receiving new octomaps, collision objects,...
Definition: planning_scene_monitor.h:109
planning_scene_monitor::PlanningSceneMonitor::providePlanningSceneService
void providePlanningSceneService(const std::string &service_name=DEFAULT_PLANNING_SCENE_SERVICE)
Create an optional service for getting the complete planning scene This is useful for satisfying the ...
Definition: planning_scene_monitor.cpp:562
planning_scene_monitor::PlanningSceneMonitor::getMonitoredTopics
void getMonitoredTopics(std::vector< std::string > &topics) const
Get the topic names that the monitor is listening to.
Definition: planning_scene_monitor.cpp:478
planning_scene_monitor::PlanningSceneMonitor::getUpdatedFrameTransforms
void getUpdatedFrameTransforms(std::vector< geometry_msgs::TransformStamped > &transforms)
Definition: planning_scene_monitor.cpp:1349
planning_scene_monitor::PlanningSceneMonitor::getPlanningScenePublishingFrequency
double getPlanningScenePublishingFrequency() const
Get the maximum frequency at which planning scenes are published (Hz)
Definition: planning_scene_monitor.h:310
planning_scene_monitor::PlanningSceneMonitor::clearUpdateCallbacks
void clearUpdateCallbacks()
Clear the functions to be called when an update to the scene is received.
Definition: planning_scene_monitor.cpp:1336
planning_scene_monitor::PlanningSceneMonitor::clearOctomap
void clearOctomap()
Definition: planning_scene_monitor.cpp:589
planning_scene_monitor::PlanningSceneMonitor::UPDATE_SCENE
@ UPDATE_SCENE
The entire scene was updated.
Definition: planning_scene_monitor.h:112
DurationBase< WallDuration >::toSec
double toSec() const
planning_scene_monitor::LockedPlanningSceneRO::initialize
void initialize(bool read_only)
Definition: planning_scene_monitor.h:687
planning_scene_monitor::PlanningSceneMonitor::parent_scene_
planning_scene::PlanningScenePtr parent_scene_
Definition: planning_scene_monitor.h:504
ros::WallDuration
planning_scene_monitor::PlanningSceneMonitor::requestPlanningSceneState
bool requestPlanningSceneState(const std::string &service_name=DEFAULT_PLANNING_SCENE_SERVICE)
Request a full planning scene state using a service call Be careful not to use this in conjunction wi...
Definition: planning_scene_monitor.cpp:529
planning_scene_monitor::LockedPlanningSceneRO::SingleUnlock::read_only_
bool read_only_
Definition: planning_scene_monitor.h:715
planning_scene_monitor::PlanningSceneMonitor::getDefaultObjectPadding
double getDefaultObjectPadding() const
Get the default object padding.
Definition: planning_scene_monitor.h:273
planning_scene_monitor::PlanningSceneMonitor::startPublishingPlanningScene
void startPublishingPlanningScene(SceneUpdateType event, const std::string &planning_scene_topic=MONITORED_PLANNING_SCENE_TOPIC)
Start publishing the maintained planning scene. The first message set out is a complete planning scen...
Definition: planning_scene_monitor.cpp:376
planning_scene_monitor::PlanningSceneMonitor::monitorDiffs
void monitorDiffs(bool flag)
By default, the maintained planning scene does not reason about diffs. When the flag passed in is tru...
Definition: planning_scene_monitor.cpp:313
planning_scene_monitor::PlanningSceneMonitor::update_callbacks_
std::vector< boost::function< void(SceneUpdateType)> > update_callbacks_
Definition: planning_scene_monitor.h:571
planning_scene_monitor::PlanningSceneMonitor::UPDATE_TRANSFORMS
@ UPDATE_TRANSFORMS
The maintained set of fixed transforms in the monitored scene was updated.
Definition: planning_scene_monitor.h:105
ros::Duration
collision_plugin_loader.h
planning_scene_monitor::PlanningSceneMonitor::getDefaultRobotPadding
double getDefaultRobotPadding() const
Get the default robot padding.
Definition: planning_scene_monitor.h:261
planning_scene_monitor::PlanningSceneMonitor::getRobotModelLoader
const robot_model_loader::RobotModelLoaderPtr & getRobotModelLoader() const
Get the user kinematic model loader.
Definition: planning_scene_monitor.h:200
planning_scene_monitor::PlanningSceneMonitor::planning_scene_publisher_
ros::Publisher planning_scene_publisher_
Definition: planning_scene_monitor.h:532
planning_scene_monitor::PlanningSceneMonitor::link_shape_handles_
LinkShapeHandles link_shape_handles_
Definition: planning_scene_monitor.h:564
planning_scene_monitor::PlanningSceneMonitor::includeWorldObjectInOctree
void includeWorldObjectInOctree(const collision_detection::World::ObjectConstPtr &obj)
Definition: planning_scene_monitor.cpp:913
planning_scene_monitor::PlanningSceneMonitor::scene_update_mutex_
boost::shared_mutex scene_update_mutex_
if diffs are monitored, this is the pointer to the parent scene
Definition: planning_scene_monitor.h:505
planning_scene_monitor::PlanningSceneMonitor::includeAttachedBodiesInOctree
void includeAttachedBodiesInOctree()
Definition: planning_scene_monitor.cpp:798
DurationBase< WallDuration >::isZero
bool isZero() const
ros::NodeHandle
ros::Subscriber
planning_scene_monitor::LockedPlanningSceneRW::operator->
const planning_scene::PlanningScenePtr & operator->()
Definition: planning_scene_monitor.h:756
planning_scene_monitor::PlanningSceneMonitor::PlanningSceneMonitor
PlanningSceneMonitor(const std::string &robot_description, const std::shared_ptr< tf2_ros::Buffer > &tf_buffer=std::shared_ptr< tf2_ros::Buffer >(), const std::string &name="")
Constructor.
Definition: planning_scene_monitor.cpp:151
planning_scene_monitor::PlanningSceneMonitor::shape_transform_cache_lookup_wait_time_
ros::Duration shape_transform_cache_lookup_wait_time_
the amount of time to wait when looking up transforms
Definition: planning_scene_monitor.h:611
planning_scene_monitor::PlanningSceneMonitor::DEFAULT_ATTACHED_COLLISION_OBJECT_TOPIC
static const std::string DEFAULT_ATTACHED_COLLISION_OBJECT_TOPIC
The name of the topic used by default for attached collision objects.
Definition: planning_scene_monitor.h:119
robot_model_loader.h
planning_scene_monitor::PlanningSceneMonitor::lockSceneWrite
void lockSceneWrite()
Lock the scene for writing (only one thread can lock for writing and no other thread can lock for rea...
Definition: planning_scene_monitor.cpp:1026


planning
Author(s): Ioan Sucan , Sachin Chitta
autogenerated on Thu Feb 27 2025 03:27:54