ROS:节点名称重名

news2024/11/23 17:10:10

目录

  • 一、前言
  • 二、rosrun设置命名空间与重映射
    • 2.1设置命名空间
    • 2.2rosrun名称重映射
    • 2.3rosrun命名空间与名称重映射叠加
  • 三、launch文件设置命名空间与重映射
  • 四、编码设置命名空间与重映射
    • 4.1C++ 实现:重映射
    • 4.2C++ 实现:命名空间
    • 4.3Python 实现:重映射

一、前言

ROS 中创建的节点是有名称的,C++初始化节点时通过API:ros::init(argc,argv,"xxxx");来定义节点名称,在Python中初始化节点则通过 rospy.init_node("yyyy") 来定义节点名称。在ROS的网络拓扑中,是不可以出现重名的节点的,因为假设可以重名存在,那么调用时会产生混淆,这也就意味着,不可以启动重名节点或者同一个节点启动多次,的确,在ROS中如果启动重名节点的话,之前已经存在的节点会被直接关闭,如何解决?

在ROS中给出的解决策略是使用命名空间或名称重映射。
命名空间就是为名称添加前缀,名称重映射是为名称起别名。这两种策略都可以解决节点重名问题,两种策略的实现途径有多种:
rosrun 命令
launch 文件
编码实现
以上三种途径都可以通过命名空间或名称重映射的方式,来避免节点重名。

二、rosrun设置命名空间与重映射

2.1设置命名空间

语法: rosrun 包名 节点名 __ns:=新名称

rosrun turtlesim turtlesim_node __ns:=/xxx
rosrun turtlesim turtlesim_node __ns:=/yyy

结果
rosnode list查看节点信息,显示结果:

/xxx/turtlesim
/yyy/turtlesim

2.2rosrun名称重映射

语法: rosrun 包名 节点名 __name:=新名称

rosrun turtlesim  turtlesim_node __name:=t1 |  rosrun turtlesim   turtlesim_node /turtlesim:=t1(不适用于python)
rosrun turtlesim  turtlesim_node __name:=t2 |  rosrun turtlesim   turtlesim_node /turtlesim:=t2(不适用于python)

结果
rosnode list查看节点信息,显示结果:

/t1
/t2

2.3rosrun命名空间与名称重映射叠加

语法: rosrun 包名 节点名 __ns:=新名称 __name:=新名称

rosrun turtlesim turtlesim_node __ns:=/xxx __name:=tn

结果
rosnode list查看节点信息,显示结果:

/xxx/tn

三、launch文件设置命名空间与重映射

在 node 标签中有两个属性: name 和 ns,二者分别是用于实现名称重映射与命名空间设置

launch文件

<launch>

    <node pkg="turtlesim" type="turtlesim_node" name="t1" />
    <node pkg="turtlesim" type="turtlesim_node" name="t2" />
    <node pkg="turtlesim" type="turtlesim_node" name="t1" ns="hello"/>

</launch>

注:在 node 标签中,name 属性是必须的,ns 可选。

结果
rosnode list查看节点信息,显示结果:

/t1
/t2
/t1/hello

四、编码设置命名空间与重映射

4.1C++ 实现:重映射

名称别名设置
核心代码:ros::init(argc,argv,"zhangsan",ros::init_options::AnonymousName);

执行:
会在名称后面添加时间戳。

4.2C++ 实现:命名空间

核心代码

std::map<std::string, std::string> map;
  map["__ns"] = "xxxx";
  ros::init(map,"wangqiang");

执行
节点名称设置了命名空间。

4.3Python 实现:重映射

名称别名设置
核心代码:rospy.init_node(“lisi”,anonymous=True)

执行
会在节点名称后缀时间戳。

参考视屏:赵虚左ros入门
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/725617.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python3在Windows上设置环境变量方法

Python3在Windows上设置环境变量方法&#xff0c;在环境变量中添加Python目录&#xff1a; 在命令提示框中(cmd) : 输入 path%path%;C:\Python 按下"Enter"。 注意: C:\Python 是Python的安装目录。 也可以通过以下方式设置&#xff1a; 右键点击"计算机&q…

《深入理解计算机系统》(9)内存管理

1、物理和虚拟寻址 物理寻址 主存被组织成一个由 M 个连续的字节大小的单元组成的数组。每字节都有一个唯一的物理地址。CPU 访问内存最自然的方式就是使用物理地址&#xff0c;称为物理寻址。下图是一个物理寻址的示例&#xff0c;该示例的上下文是一个加载指令&#xff0c;它…

群载波应急广播主机的应用

一、 概述 群载波主机是专为山洪灾害预警、气象预警、地质灾害预警设计的一款智能IP群载波主机。该群载波主机可通过网络实现与控制中心通讯&#xff0c;用户可实时远程控制功放的开关机状态以及检测设备的主要信息。群载波主机主要用于接收网络信号&#xff0c;与控制中心通讯…

如何在Ubuntu系统中添加硬盘

这里写自定义目录标题 一. 安装磁盘二. 查看和新建硬盘分区2.1 查看硬盘分区2.2 创建硬盘分区 三. 分区格式化四. 分区挂载到目录五. 配置启动挂载 众所周知&#xff0c;在Linux系统中有一个著名的说法&#xff0c;即”一切皆文件“。包括磁盘在内的各种连接到系统的设备都用文…

视频怎么实现倒放?分享这3个方法给大家!

如果你曾经想过将自己喜欢的视频倒放播放&#xff0c;你可能会发现这是一项相当具有挑战性的任务。尽管许多视频播放器提供了倒放功能&#xff0c;但有时候这些功能可能不够灵活&#xff0c;甚至根本不支持倒放。在本文中&#xff0c;我们将介绍几种可帮助你倒放视频的方法。 …

减噪 低振纹|拓尔微TMI8421打印机马达驱动解决方案

打印机作为现代办公不可或缺的设备为我们的工作带来了便利&#xff0c;但也会遇到一些”鸡肋“问题&#xff0c;如产生噪音或机器发热等问题&#xff0c;不仅无法高效的打印文件资料还会给安静的办公室环境带来噪音干扰&#xff0c;打乱工作思绪...... 一台高效稳定且减噪的打…

langchain源码阅读系列(三)之Chain模块

原文首发于博客文章langchain源码阅读 本节是langchian源码阅读系列第三篇&#xff0c;下面进入Chain模块&#x1f447;&#xff1a; LLM 应用构建实践笔记 Chain链定义 链定义为对组件的一系列调用&#xff0c;也可以包括其他链&#xff0c;这种在链中将组件组合在一起的想…

Python中读取与写入文件时的编码方式

在《Python中文件的读取》与《Python中文件的写入》中提到通过文件对象调用read()函数和write()函数实现文件的读写。以上方法能够正确地取或写入英文时&#xff0c;当要读写的内容是中文时&#xff0c;则需要考虑编码方式。 1 读取已经存在的数据 1.1 创建文件 创建一个txt…

【码银送书第二期】《高并发架构实战:从需求分析到系统设计》

很多软件工程师的职业规划是成为架构师&#xff0c;但是要成为架构师很多时候要求先有架构设计经验&#xff0c;而不做架构师又怎么会有架构设计经验呢&#xff1f;那么要如何获得架构设计经验呢&#xff1f; 一方面可以通过工作来学习&#xff0c;观察所在团队的架构师是如何…

nginx脚本,Nginx变量截取字符串,拼接字符串,nginx打印日志,添加修改HTTP请求头,添加修改HTTP响应头

nginx变量 nginx变量命名&#xff0c;以$开头。 举例&#xff1a;nginx.conf 文件中有下面这一行配置&#xff1a;set $var "hello world";特点&#xff1a;我们看到,Nginx 变量名前面有一个 $ 符号,这是语法上的要求强调&#xff1a;所有的 Nginx 变量在 Nginx 配…

热门实践丨如何结合实际业务进行 ECS 规格选型与容量验证

作者&#xff1a;赵佳佳 随着云原生技术的蓬勃发展以及云产品价格愈发低廉&#xff0c;越来越多 Geek 开发者、技术爱好者选择 OSS 对象存储、ECS 云服务器等基础产品构建自己的网站、网盘等应用。但对于企业而言&#xff0c;面对种类与规格的丰富的 ECS 云服务器&#xff0c;…

【网络原理之三】应用层协议HTTP和HTTPS

HTTP什么是HTTP工作过程协议格式协议内容HTTP请求MethodURLURL的encode和decode Version请求报头请求正文 HTTP响应状态码响应报头 HTTPSHTTPS执行过程加密对称加密非对称加密 证书 HTTP 什么是HTTP HTTP&#xff1a;超文本传输协议。是一种应用非常广泛的应该层协议。 所谓 “…

Mybatis应用(3)——mybatis框架使用 mybatis项目应用初步 mybatis使用报错集锦

目录 引出mybatis框架使用1.导包&#xff1a;mybatis包分页的包pom.xml文件【war包】1.导包&#xff1a;mybatis包分页的包pom.xml文件【jar包】2.resources下配置mybatis-config.xml文件&#xff0c;以及log4j.properties文件3.在resources下建文件4.在UserMapper中写SQL myba…

若依v3.2问题解决:菜单路由不匹配 / 跳转路由页面空白

问题1解决方法 问题2解决方法 问题1 菜单路由不匹配 &#xff0c;在菜单管理中匹配代码中的相应组件&#xff0c;可是在页面上总是报匹配错误&#xff0c;下面是报错情况和相关数据库 解决方法 因为店铺管理是一个目录&#xff0c;而店铺详情和店铺列表是菜单&#xff0c;路…

UC伯克利LLM排行榜(Chatbot Arena Leaderboard)再更新!GPT-4稳居第一,Vicuna-33B登顶开源模型第一

UC伯克利LLM排行榜&#xff08;Chatbot Arena Leaderboard&#xff09;再更新&#xff01;GPT-4稳居第一&#xff0c;Vicuna-33B登顶开源模型第一 文章目录 1. LMSYS ORG更新「LLM排位赛」2. 全新评价机制&#xff1a;MT-Bench2.1 为什么选择 MT-Bench&#xff1f;2.2 用LLM评…

Vue 常用指令 v-bind 绑定动态值

v-bind 用于动态绑定一个或多个属性值&#xff0c;或者向另一个组件传递props值(这个后面再介绍)&#xff0c;应用场景:图片地址src、超链接href、动态绑定一些类、样式等等 绑定超链接 v-bind作用在属性上面绑定动态值。 v-bind 指令后接收一个参数&#xff0c;以冒号分割。v…

MySQL 第二天作业 操作表和用户权限

一、1.创建数据库 Market&#xff0c;在 Market 中创建数据表customers&#xff0c;customers表结构如表4.6所示&#xff0c;按要求进行操作。 (1&#xff09;创建数据库Market。 create database Market;(2&#xff09;创建数据表customers&#xff0c;在c_num字段上添加主键…

ModaHub魔搭社区:如何在 Jupyter Notebook 用一行代码启动 Milvus Lite?

目录 轻量版 Milvus 能做什么&#xff1f; 如何在 Jupyter Notebook 中使用向量数据库&#xff1f; 随着各种大语言模型&#xff08;LLM&#xff09;的涌现和 AI 技术变得越来越普遍&#xff0c;大家对于向量数据库的需求也变得越来越多。作为大模型的记忆体&#xff0c;向量…

【新星计划Linux】——常用命令(1)

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 目录 前言 一.常用命令 1.Linux的基本原则&#xff1a; 用户接口&#xff1a; 2.命令形…

多肽中间体:23927-13-1,Cyclo(-D-Ala-D-Ala),3,6-二甲基-2,5-哌嗪二酮,的解析说明

Cyclo(-D-Ala-D-Ala)&#xff0c;3,6-二甲基-2,5-哌嗪二酮&#xff0c;(3R,6R)-二甲基-哌嗪-2,5-二酮&#xff0c;(3R,6R)-3,6-二甲基哌嗪-2,5-二酮产品结构式&#xff1a; 产品规格&#xff1a; 1.CAS号&#xff1a;23927-13-1 2.分子式&#xff1a;C6H10N2O2 3.分子量&#x…