< >
Home » ROS2与MoveIt2教程 » ROS2与MoveIt2入门教程-规划场景监视器

ROS2与MoveIt2入门教程-规划场景监视器

说明:

  • 介绍规划场景监视器

概述:

  • PlanningSceneMonitor是用于维护规划场景最新状态的推荐接口。 RobotState、CurrentStateMonitor、PlanningScene、PlanningSceneMonitor 和PlanningSceneInterface之间的关系一开始可能会令人感到困惑。本节教程旨在厘清这些关键概念。

RobotState

  • RobotState是机器人的一个快照,包含RobotModel和关节值集合。

CurrentStateMonitor

  • CurrentStateMonitor(CSM)可以看作是RobotState的一个ROS封装器。它会订阅一个提供的JointState消息话题,该话题为单自由度执行器(例如旋转关节或棱柱关节)提供最新的传感器值,并使用这些关节值更新其内部的RobotState。除了单自由度关节外,机器人还可以有多自由度的关节,例如浮动关节和平面关节。为了维护附加有多自由度关节的链接和其他坐标系的最新坐标变换信息,CSM会存储一个TF2 Buffer,该缓冲区使用TF2 TransformListener在其内部数据中设置它们的坐标变换。

PlanningScene

  • PlanningScene是机器人世界的一个快照,该世界包括RobotState和任意数量的碰撞物体。规划场景可用于碰撞检测以及获取环境相关信息。

PlanningSceneMonitor

PlanningSceneMonitor用ROS接口封装了一个PlanningScene以维持PlanningScene的最新状态。要访问PlanningSceneMonitor底层的PlanningScene,请使用提供的LockedPlanningSceneRW和LockedPlanningSceneRO类。

PlanningSceneMonitor 具有下列对象,它们拥有各自的ROS接口,用于维持规划场景各个子级组件的最新状态:

  • CurrentStateMonitor用于通过一个robot_state_subscriber_和一个tf_buffer_以及一个会侦听其他发布者规划场景差分消息的规划场景订阅者来跟踪RobotState的更新。

  • OccupancyMapMonitor用于通过ROS话题和服务来跟踪OccupancyMap的更新。

PlanningSceneMonitor具有以下订阅者节点:

  • collision_object_subscriber_—侦听提供的CollisionObject消息话题,这些消息可能会在规划场景中添加、删除或修改碰撞对象,并将它们传递到受监视的规划场景中

  • planning_scene_world_subscriber_—侦听提供的PlanningSceneWorld消息话题,这些消息可能包含碰撞对象信息和/或占用地图信息。该订阅者节点对于保持规划场景监视器同步很有用

  • attached_collision_object_subscriber_—侦听提供的AttachedCollisionObject消息话题,这些消息会决定将碰撞物体附加到机器人状态中的链接上,或者从链接上将物体分离开。

PlanningSceneMonitor具有以下服务:

  • get_scene_service_ —获取完整规划场景状态的一项可选服务。

PlanningSceneMonitor会用以下参数进行初始化:

  • startSceneMonitor—启动planning_scene_subscriber_;

  • startWorldGeometryMonitor—启动collision_object_subscriber_、planning_scene_world_subscriber_和OccupancyMapMonitor;

  • startStateMonitor—启动CurrentStateMonitor和attached_collision_object_subscriber;

  • startPublishingPlanningScene—启动另一个线程,用于在提供的话题上发布整个规划场景,供其他PlanningSceneMonitor订阅;

  • providePlanningSceneService—启动get_scene_service_。

PlanningSceneInterface

PlanningSceneInterface是一个很有用的类,用于通过C++ API向MoveGroup的PlanningSceneMonitor发布更新,而无需创建您自己的订阅者和服务客户​​端。如果没有MoveGroup或MoveItCpp,它可能会无法正常工作。

英语原文地址:https://moveit2_tutorials.picknik.ai/doc/planning_scene_monitor/planning_scene_monitor_tutorial.html

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ros2与moveit2入门教程