ROS NodeHandle 命名空间 参数读取

本文介绍了ROS中的命名空间概念,包括全局和局部命名空间的使用,特别强调了`~`符号代表当前节点的命名空间。文章详细讲解了参数读取的方法,如`ros::param::param`和`nh_.param`,并提醒读者在操作时注意路径匹配。最后,作者总结了在使用参数和订阅Topic时应注意命名空间的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

将命名空间相关知识梳理一下,最近在命名空间上吃了大亏,浪费了很多时间,特别是涉及到后面的参数读取以及订阅发布Topic。

命名空间

全局

全局命名空间,就是默认路jin为全局的命名空间,和绝对路jin的概念相仿。定义时需要注意下面的几点。

1.node不带任何命名空间
ros::NodeHandle node;

2.此时参数路jin均为"imu_mti/imu_mti_sequence"
node.param<int>("imu_mti/imu_mti_sequence", sequence, 100);
ros::param::param<int>("imu_mti/imu_mti_sequence", sequence, 100);

3.此时订阅的topic为"imu"
sub =new message_filters::Subscriber<sensor_msgs::Imu>(node, “imu”, 100);

局部

局部命名空间,就是默认路jin为局部的命名空间,和相对路jin的概念相仿。定义时需要注意下面的几点。

1.node带有命名空间
ros::NodeHandle node("/myname");

2.此时参数路jin为"/myname"+"imu_mti/imu_mti_sequence"-> "/myname/imu_mti/imu_mti_sequence"
node.param<int>("imu_mti/imu_mti_sequence", sequence, 100);

3.此时参数路jin为"imu_mti/imu_mti_sequence",不受node影响
ros::param::param<int>("imu_mti/imu_mti_sequence", sequence, 100);

3.此时订阅的topic为"/myname"+"imu"->"/myname/imu"
sub =new message_filters::Subscriber<sensor_msgs::Imu>(node, “imu”, 100);

特别地

特别地,下面的 ~ 表示当前节点的命名空间

1.node带有命名空间"~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值