ros名称、命名空间和重映射

一 概论

名称就是代号,ros中的节点、话题和参数的名称必须是唯一的,这很容易想到,如果你认识两个叫一样名字的人,单凭一个名字你是分辨不出来说的这个人到底是谁,所以 ros中的名称必须是唯一的。

但是,这个规定与现实不符啊,分明现实中就有这种情况啊,所以我们很容易想到两种办法

1 把两个人的名字前加点东西,如三班的A和四班的A(命名空间)

2 分别叫这两个人的小名,或者绰号。(重映射)

通过这种方式就可以解决名字冲突的问题。

ros中这两种方式分别叫做命名空间和重映射。

二 命名空间

我们在安装软件时,两个软件文件夹中可能都有readme.txt,我们可以通过/来限定命名空间

/home/user1/readme.txt /home/user2/readme.txt

其中的命名空间就是/home/user1

这可以在ros中写为

rosrun turtlesim turtlesim_node __ns:=/home/user1

注意是两个"_"组成的"__",则用rostopic list输出的节点为

/home/user1/turtlesim

三 重映射

如果你不想起的名字和别人的名字相同,那么你可以通过重映射来改变自己的名字

如我们想要两个turtlesim包中的turtlesim_node节点,分别叫做A和B,我们可以采取下面的操作

rosrun turtlesim turtlesim_node __name:=A
rosrun turtlesim turtlesim_node __name:=B

这时再通过rosnode list 读取节点名称,我们发现节点名称变为

/A
/B

也许机智的你想到,可不可以直接


rosrun turtlesim turtlesim_node __name:=/home/user1/A

如果这样可以的话直接不就ok了吗?

答案是不行的,这样混淆了命名空间和名称的概念,如果你这么做,ros会提醒你:node names cannot contain /

所以有时必须把两条指令组合起来使用

rosrun turtlesim turtlesim_node __name:=A __ns:=/home/user1

这时节点名为

/home/user1/A

四 总结

ros中的名称是唯一的,我们有两种方法可以处理此问题命名空间(__ns:=)和重映射(__name:=),有时可能需要两者组合使用。

时间: 2024-11-08 20:21:37

ros名称、命名空间和重映射的相关文章

【OpenCV入门教程之十七】OpenCV重映射 & SURF特征点检测合辑

本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/30974513 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 知乎:http://www.zhihu.com/people/mao-xing-yun 邮箱: [email protected] 写作当前博文时配套使用的OpenCV版本: 2.4.9 本篇文章中,我们一起探讨了OpenCV中

【OpenCV新手教程之十七】OpenCV重映射 & SURF特征点检測合辑

本系列文章由@浅墨_毛星云 出品.转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/30974513 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 知乎:http://www.zhihu.com/people/mao-xing-yun 邮箱: [email protected] 写作当前博文时配套使用的OpenCV版本号: 2.4.9 本篇文章中,我们一起探讨了OpenCV

【opencv入门】重映射 & SURF特征点检测合辑

一.OpenCV重映射 1.重映射的概念简析 重映射,就是把一幅图像中某位置的像素放置到另一个图片指定位置的过程.为了完成映射过程, 我们需要获得一些插值为非整数像素的坐标,因为源图像与目标图像的像素坐标不是一一对应的.一般情况下,我们通过重映射来表达每个像素的位置 (x,y),像这样 : g(x,y) = f ( h(x,y) ) 在这里, g() 是目标图像, f() 是源图像, 而h(x,y) 是作用于 (x,y) 的映射方法函数. 来看个例子.若有一幅图像 I ,想满足下面的条件作重映射

hi3531的pcie atu资源重映射

1. 设置ATU 区域号寄存器为需要配置的地址转换区编号. 2. 设置ATU Region Lower Base Address Register 和ATU Region Upper Base Address Register.(在此区域内的目标地址将由区域号寄存器所在的ATU 转换) 3. 设置ATU Region Limit Address Register. 4. 设置ATU Region Lower Target Address Register 和ATU Region Upper Ta

存储器的重映射

存储器的重映射的原因是什么? 重映射到底是怎样进行映射的? 如果不进行重映射会有什么影响? 存储器的重映射,布布扣,bubuko.com

STM32重映射(PinRemap)的使用,注意!

STM32重映射,内容和细节稍后补充,这里只说几个注意点,花了我一晚上的时间调试终于找到问题所在了... 芯片: STM32f107vct6 晶振: 25M 通过分频器与锁相环,使系统时钟为72M 背景: SPI3的重映射使用 一. 重映射函数原型: void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState) STM32f107vct6不是FPGA,重映射是固定的,无法自行指定,要查表,看看映射到了哪 比如SPI

(十)stm32 GPIO口复用,重映射 RCC_APB2Periph_AFIO

什么时候需要用到RCC_APB2Periph_AFIO--复用IO时钟的使用 需要用到外设的重映射功能时才需要使能AFIO的时钟 外部中断(EXTI)中与AFIO有关的寄存器是AFIO-EXTICR1.2.3,它们是用来选择EXTIx外部中断的输入脚之用 举例:重映射USART2 USART2的TX/RX在PA.2/3 PA.2已经被Timer2的channel3使用需要把USART2的TX/RX重映射到PD.5/6库函数的调用 (1)使能被重新映射到的I/O端口时钟 RCC_APB2Perip

管脚重映射和复用

1. [转载]STM32的功能引脚重映射和复用功能_meshine_新浪博客  http://blog.sina.com.cn/s/blog_a2ba6cce01010n7r.html 2. 5.10. STM32重映射功能-STM32(初学宝典)神舟IV号开发板 - 商路通   http://www.3566t.com/news/vima/3497220.html

ARM基础:MMU 异常向量表 重映射

/******************************************************************************************************************参考:说明:在学习裸机中断时重新遇到这个几个词,这次就要搞明白了. *****************************************************************************************************