有多少人工,就有多少智能

Ros2-Moveit2-PlanningSceneMonitor(规划场景监控)

PlanningSceneMonitor是维护最新规划场景的推荐接口。RobotStateCurrentStateMonitorPlanningScenePlanningSceneMonitorPlanningSceneInterface之间

关系一开始可能非常令人困惑。本教程旨在阐明这些关键概念。

机器人状态

RobotState 是机器人的快照。 它包含RobotModel和一组关节值。

当前状态监视器(CurrentStateMonitor)

CurrentStateMonitor (CSM) 可以看作是 RobotState 的 ROS 包装器。它订阅了JointState消息的指定主题,该消息为单自由度执行器(例如旋转关节或平移关节提供最新的传感器值,并使用这些关节值更新其内部 RobotState。除了单自由度关节外,机器人还可以拥有多自由度关节,例如浮动关节和平面关节。为了维护连杆和其他附有多自由度关节的框架的最新变换信息,CSM 存储了一个 TF2缓冲区,该缓冲区使用 TF2 TransformListener在其内部数据中设置它们的变换。

规划场景

PlanningScene是世界的快照其中包括 RobotState 和任意数量的碰撞对象。Planning Scene 可用于碰撞检查以及获取有关环境的信息。

规划场景监控

PlanningSceneMonitor使用 ROS 接口包装 PlanningScene 以使 PlanningScene 保持最新状态。要访问 PlanningSceneMonitor 的底层 PlanningScene,请使用提供的LockedPlanningSceneRWLockedPlanningSceneRO类。

PlanningSceneMonitor 具有以下对象,它们具有自己的 ROS 接口,用于使规划场景的子组件保持最新状态:

  • CurrentStateMonitor用于通过跟踪对 RobotState 的更新,以及规划场景订阅者用于监听来自其他发布者的规划场景差异
  • OccupancyMapMonitor 用于通过 ROS 主题和服务跟踪 OccupancyMap 的更新。

PlanningSceneMonitor 具有以下订阅者:

PlanningSceneMonitor 有以下服务:

  • get_scene_service_- 这是获取完整规划场景状态的可选服务。

PlanningSceneMonitor 的初始化方法如下:

  • startSceneMonitor- 这开始了planning_scene_subscriber_

  • startWorldGeometryMonitor- 启动collision_object_subscriber_planning_scene_world_subscriber_和 OccupancyMapMonitor,

  • startStateMonitor- 启动 CurrentStateMonitorattached_collision_object_subscriber_

  • startPublishingPlanningScene- 启动另一个线程,在提供的主题上发布整个规划场景,供其他 PlanningSceneMonitors 订阅

  • providePlanningSceneService- 这开始了get_scene_service_。

规划场景接口(PlanningSceneInterface)

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

 

 

posted @ 2024-09-02 11:04  lvdongjie-avatarx  阅读(41)  评论(0编辑  收藏  举报