多机器人场景下如何让tb3_0的slam_gmapping订阅/scan_new话题
问题核心原因
你执行的命令存在两个问题:
- 你提前设置了
ROS_NAMESPACE=tb3_0,所有未显式加全局前缀/的话题都会自动带上tb3_0/命名空间前缀,你写的scan:=scan_new实际会把gmapping的scan输入映射到tb3_0/scan_new,和你需要的全局话题/scan_new不匹配。 - gmapping的私有参数不需要加
set_前缀,rosrun中设置节点私有参数的规则是_参数名:=参数值。
正确命令
ROS_NAMESPACE=tb3_0 rosrun gmapping slam_gmapping scan:=/scan_new _base_frame:=tb3_0/base_footprint _odom_frame:=tb3_0/odom _map_frame:=tb3_0/map
验证方法
命令启动后,可以执行下面的命令确认gmapping订阅的话题是否正确:
rosnode info /tb3_0/slam_gmapping
在输出的Subscriptions字段中,能看到订阅的话题包含/scan_new即为配置成功。
内容的提问来源于stack exchange,提问作者AmirulJ
相关产品推荐
相关产品推荐

