Skip to content

Commit e47dc6f

Browse files
author
John Stechschulte
authored
updates to PlanningSceneMonitor tutorial (#567)
1 parent 86d30b4 commit e47dc6f

1 file changed

Lines changed: 14 additions & 14 deletions

File tree

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,47 @@
11
Planning Scene Monitor
22
==================================
33

4-
The :planning_scene_monitor:`PlanningSceneMonitor` is the recommended interface for maintaining an up to date planning scene. The relationship between :moveit_core:`RobotState`, :planning_scene_monitor:`CurrentStateMonitor`, :planning_scene:`PlanningScene`, :planning_scene_monitor:`PlanningSceneMonitor`, and :planning_interface:`PlanningSceneInterface` can be really confusing at first. This tutorial aims to make clear these key concepts.
4+
The :planning_scene_monitor:`PlanningSceneMonitor` is the recommended interface for maintaining an up-to-date planning scene. The relationship between :moveit_core:`RobotState`, :planning_scene_monitor:`CurrentStateMonitor`, :planning_scene:`PlanningScene`, :planning_scene_monitor:`PlanningSceneMonitor`, and :planning_interface:`PlanningSceneInterface` can be really confusing at first. This tutorial aims to make clear these key concepts.
55

66
RobotState
77
----------
88
The :moveit_core:`RobotState` is a snapshot of a robot. It contains the :moveit_core:`RobotModel` and a set of joint values.
99

1010
CurrentStateMonitor
1111
-------------------
12-
The :planning_scene_monitor:`CurrentStateMonitor` (CSM) can be thought of as a ROS wrapper for the RobotState. It subscribes to a provided topic for :sensor_msgs:`JointState` messages that provide up to date sensor values for single degree of freedom actuators such as revolute or prismatic joints and updates it's internal RobotState with those joint values. In addition to the single degree of freedom joints, a robot can have joints with multiple degrees of freedom such as floating and planar joints. To maintain up-to-date transform information for links and other frames attached with multiple-degree-of-freedom joints, the CSM stores a TF2 :tf2:`Buffer` that uses a TF2 :tf2:`TransformListener` to set their transforms in its internal data.
12+
The :planning_scene_monitor:`CurrentStateMonitor` (CSM) can be thought of as a ROS wrapper for the RobotState. It subscribes to a provided topic for :sensor_msgs:`JointState` messages that provide up-to-date sensor values for single degree of freedom actuators, such as revolute or prismatic joints, and updates its internal RobotState with those joint values. In addition to the single degree of freedom joints, a robot can have joints with multiple degrees of freedom such as floating and planar joints. To maintain up-to-date transform information for links and other frames attached with multiple-degree-of-freedom joints, the CSM stores a TF2 :tf2:`Buffer` that uses a TF2 :tf2:`TransformListener` to set their transforms in its internal data.
1313

1414
PlanningScene
1515
-------------
16-
The :planning_scene:`PlanningScene` can be seen as a snapshot of the world and that includes both the RobotState and any number of collision objects. The Planning Scene can be used for collision checking as well as getting information about the environment.
16+
The :planning_scene:`PlanningScene` is a snapshot of the world that includes both the RobotState and any number of collision objects. The Planning Scene can be used for collision checking as well as getting information about the environment.
1717

1818
PlanningSceneMonitor
1919
--------------------
20-
The :planning_scene_monitor:`PlanningSceneMonitor` wraps a PlanningScene with ROS interfaces for keeping the PlanningScene up to date. To access the PlanningSceneMonitor's underlying PlanningScene, you can use the provided :planning_scene_monitor:`LockedPlanningSceneRW` and :planning_scene_monitor:`LockedPlanningSceneRO` classes.
20+
The :planning_scene_monitor:`PlanningSceneMonitor` wraps a PlanningScene with ROS interfaces for keeping the PlanningScene up to date. To access the PlanningSceneMonitor's underlying PlanningScene, use the provided :planning_scene_monitor:`LockedPlanningSceneRW` and :planning_scene_monitor:`LockedPlanningSceneRO` classes.
2121

22-
The PlanningSceneMonitor has the following objects which have their own ROS interfaces for keeping sub-components of the planning scene up to date:
22+
The PlanningSceneMonitor has the following objects, which have their own ROS interfaces for keeping sub-components of the planning scene up to date:
2323

2424
* A :planning_scene_monitor:`CurrentStateMonitor` for tracking updates to the RobotState via a ``robot_state_subscriber_`` and a ``tf_buffer_``, as well as a planning scene subscriber for listening to planning scene diffs from other publishers.
25-
* An OccupancyMapMonitor for tracking updates an OccupancyMap via ROS topics and services.
25+
* An OccupancyMapMonitor for tracking updates to an OccupancyMap via ROS topics and services.
2626

2727
The PlanningSceneMonitor has the following subscribers:
2828

29-
* ``collision_object_subscriber_`` - Listens to a provided topic for :moveit_msgs:`CollisionObject` messages that might add, remove or modify collision objects in the planning scene and passes them into its monitored planning scene
30-
* ``planning_scene_world_subscriber_`` - Listens to a provided topic for :moveit_msgs:`PlanningSceneWorld` messages that may contain collision object information and or octomap information. This is useful for keeping planning scene monitors in sync
31-
* ``attached_collision_object_subscriber_`` - Listens on a provided topic for :moveit_msgs:`AttachedCollisionObject` messages that determine the attaching / detaching of objects to links in the robot state.
29+
* ``collision_object_subscriber_`` - Listens to a provided topic for :moveit_msgs:`CollisionObject` messages that might add, remove, or modify collision objects in the planning scene and passes them into its monitored planning scene
30+
* ``planning_scene_world_subscriber_`` - Listens to a provided topic for :moveit_msgs:`PlanningSceneWorld` messages that may contain collision object information and/or octomap information. This is useful for keeping planning scene monitors in sync
31+
* ``attached_collision_object_subscriber_`` - Listens on a provided topic for :moveit_msgs:`AttachedCollisionObject` messages that determine the attaching/detaching of objects to links in the robot state.
3232

3333
The PlanningSceneMonitor has the following services:
3434

3535
* ``get_scene_service_`` - Which is an optional service to get the full planning scene state.
3636

3737
The PlanningSceneMonitor is initialized with:
3838

39-
* ``startSceneMonitor`` - Which starts the ``planning_scene_subscriber_``
40-
* ``startWorldGeometryMonitor`` - Which starts the ``collision_object_subscriber_``, the ``planning_scene_world_subscriber_``, and the OccupancyMapMonitor.
41-
* ``startStateMonitor`` - Which starts the CurrentStateMonitor and the ``attached_collision_object_subscriber_``.
42-
* ``startPublishingPlanningScene`` - Which starts another thread for publishing the entire planning scene on a provided topic for other PlanningSceneMonitor's to subscribe to
39+
* ``startSceneMonitor`` - Which starts the ``planning_scene_subscriber_``,
40+
* ``startWorldGeometryMonitor`` - Which starts the ``collision_object_subscriber_``, the ``planning_scene_world_subscriber_``, and the OccupancyMapMonitor,
41+
* ``startStateMonitor`` - Which starts the CurrentStateMonitor and the ``attached_collision_object_subscriber_``,
42+
* ``startPublishingPlanningScene`` - Which starts another thread for publishing the entire planning scene on a provided topic for other PlanningSceneMonitors to subscribe to, and
4343
* ``providePlanningSceneService`` - Which starts the ``get_scene_service_``.
4444

4545
PlanningSceneInterface
4646
----------------------
47-
The :planning_interface:`PlanningSceneInterface` is a useful class for publishing updates to a MoveGroup's :planning_scene_monitor:`PlanningSceneMonitor` through a C++ API without creating your own subscribers and service clients. It may not work without MoveGroup or MoveItCpp
47+
The :planning_interface:`PlanningSceneInterface` is a useful class for publishing updates to a MoveGroup's :planning_scene_monitor:`PlanningSceneMonitor` through a C++ API without creating your own subscribers and service clients. It may not work without MoveGroup or MoveItCpp.

0 commit comments

Comments
 (0)