学习 ROS 2 时,两个程序都启动了,却看不到预期的话题连接,原因不一定是节点没有运行。节点名称、命名空间和话题名称是不同的信息;启动参数或重映射还可能改变最终名称。先把实际看到的名称记录下来,再与教程中的预期对照,排查会更清楚。
节点是 ROS 2 系统中的计算参与者,可以发布或订阅话题,也可以使用服务、动作和参数。话题名称则用于让发布端和订阅端找到对应的数据通道。节点存在不代表它一定发布了学习者想找的话题,也不代表另一个节点已经收到消息。
ROS 2 官方节点概念资料介绍了节点与话题、服务等接口的关系。学习时应确认所用发行版和文档版本,滚动开发版的内容不一定与每个已安装版本完全相同。
官方 Humble 版节点参数与名称重映射资料展示了为节点设置命名空间并重映射话题的例子。对于该示例中的相对话题名,最终名称包含命名空间;查看时应以运行中的完整名称为准,而不是只记住源代码里较短的名字。
例如,虚构的训练环境有两个小车组,分别使用不同命名空间。它们都可能有一个名为状态的话题,但完整名称不同。学习者如果只比较最后一段文字,可能误以为查看的是同一个通道;这个例子不代表实际机器人部署配置。
重映射可以在启动时为节点或其接口指定不同名称,具体效果取决于启动参数、名称类型和所用版本。修改一个节点的名称,不应被理解为自动修改所有其他节点的名称或连接。官方示例还说明了在同一进程中针对特定节点传入重映射参数的方式。
阅读启动文件时,先记录原名称、适用的重映射规则和观察到的完整名称。如果一个话题发布端与订阅端的最终名称不同,需要先核实配置;即使名称一致,也还要检查消息类型、发现过程和其他通信条件,不能立刻断定数据一定会送达。
在不连接真实运动设备的练习环境中,使用所装发行版提供的官方示例。记录启动了哪些节点、每个节点的完整名称、预期话题与实际观察到的话题。改变一项已理解的命名设置后,再记录变化;保留原始启动参数,便于同学重复。
如果教程使用的命令或输出与本机不同,先检查发行版、工作空间和教程版本。不要为了让示例看起来一致而随意修改生产机器人命名空间,也不要把课堂用的示例名称写成现场设备的既定配置。
一份清楚的求助记录可以写明:节点是否出现在列表中、观察的是哪个完整话题名、预期结果是什么、实际结果是什么,以及问题出现的时间。尚未检查的类型、网络或权限条件标为未知,不要写成已经排除。
相关学习内容可参考本站机器人节点与通信学习和参数记录中的节点与类型,也可浏览机器人培训资讯。真实设备的运行和修改应由负责人员遵循现场安全流程。