【scene_manager】与 MoveIt 机器人的规划场景进行交互

scene_manager

Scene Manager包是由 Robotnik 创建的 ROS 包,旨在帮助构建和与 MoveIt 机器人的规划场景进行交互。

背景信息

MoveIt 规划场景

  • 是一个用于存储机器人周围世界的表示(外部碰撞)以及机器人自身状态(内部碰撞和当前位置)的对象。
  • 碰撞环境可以使用 MoveIt 碰撞对象或 Octomap 构建。
  • 规划场景在路径规划期间被 MoveIt 使用,以获取无碰撞的轨迹。
  • 准确表示世界是非常重要的。
  • MoveIt 允许用户与规划场景中存在的碰撞对象进行交互(附加、分离对象)。

Scene Manager

  • 便于创建规划场景以及与规划场景的交互。
  • 继承自 moveit::planning_interface::PlanningSceneInterface 类的 C++ 类。
  • 提供一个 API,允许用户轻松与 MoveIt 规划场景进行交互。

优势

  • MoveIt 碰撞对象可以在 YAML 文件中轻松定义,并且可以随时修改。
  • 允许用户构建相同对象的矩阵(适用于托盘化应用)。
  • 添加了与对象交互的新功能(例如:相对于对象移动,启用/禁用与对象的碰撞检测等)。
  • 暴露 ROS 服务以调用所有 Scene Manager 功能,外部用户可以轻松与环境交互。
  • 包含 RViz 中对象名称的可视化。
  • 在 TF 树中发布相对于世界的对象框架。

如何将 Scene Manager 添加到项目中

  1. scene_managerscene_manager_msgs 包添加到 catkin 工作空间。

  2. 在将使用 Scene Manager 的 ROS 包中,在 CMakeLists.txtpackage.xml 文件中添加对上述包的依赖。

  3. 将 Scene Manager 库添加到您正在开发的 CPP 节点中:

    cpp 复制代码
    #include <corosect_manipulation/scene_manager.h>
  4. 创建 SceneManager 类的对象:

    cpp 复制代码
    ros::NodeHandle nh;
    // 初始化 Scene Manager
    bool wait = true;
    std::unique_ptr<SceneManager> scene_manager_ = std::make_unique<SceneManager>(nh, wait);

Scene Manager YAML

允许用户轻松将碰撞对象添加到规划场景中,每个对象需要添加以下属性:

  • spawn: 默认情况下,对象在 Scene Manager 初始化场景时被添加到规划场景中。
  • static: 静态对象无法被操作,也无法改变其在空间中的位置。
  • frame_id: 对象在场景中的位置相对于此坐标轴定义。
  • geometry: 几何形状(盒子)或网格文件的路径(package://ros_package_name/route_to_file_folder/mesh_file_name.stl)。
  • pose: 相对于 frame_id 坐标轴的 xyz 位移或 rpy 方向。
  • layout: 可用于添加当前对象的矩阵(例如:带有箱子的托盘)。

Scene Manager 功能

Scene Manager 类提供以下方法:

  • SceneManager::initScene(): 将 YAML 文件中定义的对象添加到规划场景中。
  • SceneManager::addObjects(vector object_ids): 将特定对象添加到规划场景中。
  • SceneManager::removeObjects(vector object_ids): 从规划场景中移除特定对象。
  • SceneManager::attachObjects(vector object_ids): 将碰撞对象附加到末端执行器。
  • SceneManager::detachObjects(vector object_ids): 从末端执行器分离碰撞对象。
  • SceneManager::moveRelativeTo(string object_id, rel_pose) : 以相对于给定对象的 frame_id 的相对姿态移动末端执行器。
  • SceneManager::allowCollision(string link_id, vector objects_id): 允许机器人链接或碰撞对象与其他碰撞对象之间发生碰撞。
  • SceneManager::restoreCollision(string link_id, vector objects_id): 恢复机器人链接或碰撞对象与其他碰撞对象之间的碰撞避免。

Scene Manager ROS 服务

Scene Manager 提供 ROS 服务以调用所有 Scene Manager 功能,外部用户可以轻松与机械臂和场景进行交互。

  • /scene_manager/add_objects
  • /scene_manager/remove_objects
  • /scene_manager/attach_objects
  • /scene_manager/detach_objects
  • /scene_manager/modify_object
  • /scene_manager/move_relative_to
相关推荐
星马梦缘1 分钟前
Matlab机器人工具箱使用5 轨迹规划
matlab·机器人·轨迹规划·空间插值
大任视点3 小时前
福莱新材:机器人产业爆发,电子皮肤产能加速释放
机器人
nenchoumi31194 小时前
全网首发!Realsense 全新 D555 相机开箱记录与 D435i、L515、D456 横向测评!
数码相机·计算机视觉·机器人·ros·realsense
工控小楠6 小时前
稳联技术EthernetIP转ModbusTCP网关连接发那科机器人与三菱PLC的集成方案
机器人·ethernet·modbus
BB8=_=NiMotion6 小时前
一体化伺服电机在管道焊缝检测爬行机器人中的应用案例
机器人
拓端研究室7 小时前
专题:2025人形机器人、工业机器人、智能焊接机器人、扫地机器人产业洞察报告 | 附158+份报告PDF、数据仪表盘汇总下载
microsoft·机器人·pdf
星马梦缘9 小时前
Matlab机器人工具箱7 搬运动画展示
matlab·机器人·仿真·逆解
星马梦缘1 天前
Matlab机器人工具箱使用2 DH建模与加载模型
人工智能·matlab·机器人·仿真·dh参数法·改进dh参数法
星马梦缘1 天前
Matlab机器人工具箱使用1 简单的描述类函数
matlab·矩阵·机器人·位姿·欧拉角·rpy角
神仙别闹2 天前
基于单片机的六足机器人控制系统设计
单片机·嵌入式硬件·机器人