当前位置: 首页 > 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…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...