当前位置: 首页 > news >正文

【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_manager 和 scene_manager_msgs 包添加到 catkin 工作空间。

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

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

    #include <corosect_manipulation/scene_manager.h>
    
  4. 创建 SceneManager 类的对象:

    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

相关文章:

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

scene_manager Scene Manager包是由 Robotnik 创建的 ROS 包&#xff0c;旨在帮助构建和与 MoveIt 机器人的规划场景进行交互。 背景信息 MoveIt 规划场景 是一个用于存储机器人周围世界的表示&#xff08;外部碰撞&#xff09;以及机器人自身状态&#xff08;内部碰撞和当…...

数据结构单向链表的插入和删除(一)

链表 一、链表结构&#xff1a; &#xff08;物理存储结构上不连续&#xff0c;逻辑上连续&#xff1b;大小不固定&#xff09;二、单链表&#xff1a;三、单项链表的代码实现&#xff1a;四、开发可用的链表&#xff1a;四、单链表的效率分析&#xff1a; 一、链表结构&#x…...

鸿蒙网络编程系列30-断点续传下载文件示例

1. 断点续传简介 在文件的下载中&#xff0c;特别是大文件的下载中&#xff0c;可能会出现各种原因导致的下载暂停情况&#xff0c;如果不做特殊处理&#xff0c;下次还需要从头开始下载&#xff0c;既浪费了时间&#xff0c;又浪费了流量。不过&#xff0c;HTTP协议通过Range…...

深入拆解TomcatJetty(二)

深入拆解Tomcat&Jetty&#xff08;二&#xff09; 专栏地址&#xff1a;https://time.geekbang.org/column/intro/100027701 1、Tomcat支持的IO模型和应用层协议 IO模型&#xff1a; NIO&#xff1a;非阻塞 I/O&#xff0c;采用 Java NIO 类库实现。NIO2&#xff1a;异…...

单元化架构,分布式系统的新王!

0 关键收获 单元化架构通过减少故障的爆炸半径来增加系统弹性单元化架构是那些任何停机时间都被认为是不可接受的&#xff0c;或者可以显著影响最终用户的系统的一个好选择单元化架构通过强制使用固定大小的单元作为部署单元&#xff0c;并倾向于扩展而不是扩展的方法&#xf…...

【力扣打卡系列】滑动窗口与双指针(乘积小于K的子数组)

坚持按题型打卡&刷&梳理力扣算法题系列&#xff0c;语言为go&#xff0c;Day6 乘积小于K的子数组 题目描述解题思路 双指针移动&#xff0c;遍历右端点right&#xff0c;滑动左端点left子数组的个数&#xff1a;固定右端点r&#xff0c;子数组的个数其实就是从l到r的元…...

浅谈微前端【qiankun】的应用

一、为什么要使用微前端 微前端的核心理念是将一个大型的单体前端应用拆分成多个独立的小型应用&#xff0c;以便各个应用能够独立开发、部署和更新。这带来了以下几个好处&#xff1a; 独立开发与部署&#xff1a;各个团队可以独立开发自己的子应用&#xff0c;快速上线新功能…...

【JavaEE】——四次挥手,TCP状态转换,滑动窗口,流量控制

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;断开连接的本质 二&#xff1a;四次挥手 1&#xff1a;FIN 2&#xff1a;过程梳理 …...

D42【python 接口自动化学习】- python基础之函数

day42 高阶函数 学习日期&#xff1a;20241019 学习目标&#xff1a;函数&#xfe63;- 55 高阶函数&#xff1a;函数对象与函数调用的用法区别 学习笔记&#xff1a; 函数对象和函数调用 # 函数对象和函数调用 def foo():print(foo display)# 函数对象 a foo print(a) # &…...

GitLab 老旧版本如何升级?

极狐GitLab 正式对外推出 GitLab 专业升级服务 https://dl.gitlab.cn/cm33bsfv&#xff01; 专业的技术人员为您的 GitLab 老旧版本实例进行专业升级&#xff01;服务详情可以在官网查看详细解读&#xff01; 那些因为老旧版本而被攻击的例子 话不多说&#xff0c;直接上图&a…...

现今 CSS3 最强二维布局系统 Grid 网格布局

深入学习 CSS3 目前最强大的布局系统 Grid 网格布局 Grid 网格布局的基本认识 Grid 网格布局: Grid 布局是一个基于网格的二位布局系统&#xff0c;是目前 CSS 最强的布局系统&#xff0c;它可以同时对列和行进行处理&#xff08;它将网页划分成一个个网格&#xff0c;可以任…...

【图解版】力扣第146题:LRU缓存

力扣第146题&#xff1a;LRU缓存 一、LRU算法1. 基本概念2. LRU 和 LFU 的区别&#xff1a;3. 为什么 LRU 不需要记录使用频率&#xff1f; 二、Golang代码实现三、代码图解1. LRUCache、DLinkedNode两个结构体2. 初始化结构体对象3. addToHead函数4. removeNode函数5. moveToH…...

数据库知识点整理

DDL DDL-数据库操作 show databases ------------ 查看所有数据库 select database(); ----------查看当前数据库 create database 数据库名&#xff1b;---- 创建数据库 use 数据库名&#xff1b; --------------使用数据库 drop database 数据库名&#xff1b;--…...

【JVM】内存模型

文章目录 内存模型的基本概念案例 程序计数器栈Java虚拟机栈局部变量表栈帧中局部变量表的实际状态栈帧中存放的数据有哪些 操作数栈帧数据 本地方法栈 堆堆空间是如何进行管理的? 方法区静态变量存储 直接内存直接内存的作用 内存模型的基本概念 在前面的学习中,我们知道了字…...

代码随想录:二叉树的四种遍历

144. 二叉树的前序遍历 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullpt…...

【Linux】从多线程同步到生产者消费者模型:多线程编程实践

目录 1.线程的同步 1.1.为什么需要线程的同步&#xff1f; 2.2.条件变量的接口函数 2.生产消费模型 2.1 什么是生产消费模型 2.2.生产者消费者模型优点 2.3.为何要使用生产者消费者模型 3.基于BlockingQueue的生产者消费者模型 3.1为什么要将if判断变成while&#xff…...

如何在word里面给文字加拼音?

如何在word里面给文字加拼音&#xff1f;在现代社会&#xff0c;阅读已经成为了我们日常生活中不可或缺的一部分。尤其是在学习汉语的过程中&#xff0c;拼音的帮助显得尤为重要。为了帮助大家更好地理解和掌握汉字的发音&#xff0c;许多教师和学生都希望能够在Word文档中为文…...

Detr论文精读

摘要&#xff1a; 作者提到&#xff0c;该方法将物体检测看做直接的集合预测&#xff0c;在传统的目标检测算法中&#xff0c;会先生成候选区域&#xff0c;然后对每个候选区域进行单独的预测&#xff08;包括物体的分类和预测框的回归&#xff09;&#xff0c;集合预测就是直…...

找寻孤独伤感视频素材的热门资源网站推荐

在抖音上&#xff0c;伤感视频总是能够引起观众的共鸣&#xff0c;很多朋友都在寻找可以下载伤感视频素材的地方。作为一名资深的视频剪辑师&#xff0c;今天我来分享几个提供高清无水印伤感素材的网站&#xff0c;如果你也在苦苦寻找这些素材&#xff0c;不妨看看以下推荐&…...

大模型~合集13

我自己的原文哦~ https://blog.51cto.com/whaosoft/12302606 #TextRCNN、TextCNN、RNN 小小搬运工周末也要学习一下~~虽然和世界没关 但还是地铁上看书吧, 大老勿怪 今天来说一下 文本分类必备经典模型 模型 SOTA&#xff01;模型资源站收录情况 模型来源论文 RAE ​​ht…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...