首页 > 解决方案 > 为什么 gmapping 包不在真实机器人的多个机器人中运行(不是模拟)?

问题描述

我已经从机器人 tb3_0 的树莓派运行这个命令来运行/tb3_0/turtlebot3_core节点

pi@raspberrypi:~ $ ROS_NAMESPACE=tb3_0 roslaunch turtlebot3_bringup turtlebot3_robot.launch

然后我gmapping在 pc 终端运行 tb3_0 机器人的包

amirul@nmy-lab:~$ ROS_NAMESPACE=tb3_0 roslaunch turtlebot3_slam turtlebot3_gmapping.launch set_base_frame:=tb3_0/base_footprint set_odom_frame:=tb3_0/odom set_map_frame:=tb3_0/map

但是 gmapping 包显示警告消息

[警告] [1635496431.864557793]:MessageFilter [target=odom]:到目前为止已删除 100.00% 的消息。请将 [ros.gmapping.message_notifier] rosconsole 记录器转为 DEBUG 以获取更多信息。

我认为我没有将节点发布robot_state_publisher/tb3_0/gmapping节点。如何robot_state_publisher在 tb3_0 ROSNAMESPACE 中运行节点?谢谢!

这是运行节点的 rqt_graph rqt_graph

标签: ros

解决方案


这取决于您的启动方式robot_state_publisher。如果使用启动文件,您可以使用该ns属性将命名空间应用于节点。但是,如果要发布命名空​​间转换,则应使用tf_prefix参数。举个例子

<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher">
    <param name="publish_frequency" value="50.0"/>
    <param name="tf_prefix" value="tb3_0" />
</node>

推荐阅读