You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ROS Kinetic:工作站发布数据机器人无法接收问题求助

ROS Kinetic跨设备通信问题排查与解决

核心问题现象

工作站(Ubuntu 16.04 + ROS Kinetic)向机器人(Ubiquityrobot镜像Ubuntu 16.04 + ROS Kinetic)发布rostopic时,机器人仅能识别topic名称,但无法接收实际数据;反向(机器人发→工作站收)通信完全正常。已关闭防火墙,roswtf检测到节点间无法建立连接。

配置问题分析

从提供的配置细节看,主机名解析不匹配是核心诱因:

  • 工作站.bashrc中声明ROS_HOSTNAME=$(hostname).local,即自身ROS节点对外暴露的地址是maisa-K53E.local;
  • 机器人/etc/hosts中仅映射了10.42.0.201 maisa-K53E,未添加.local后缀,导致机器人无法正确解析工作站的ROS节点地址——ROS Master仅同步了topic元信息,但机器人找不到发布节点的实际通信端口,因此收不到数据。

修复步骤

1. 修正主机名解析映射(二选一即可)

方案A:调整工作站ROS_HOSTNAME配置

编辑工作站~/.bashrc,将ROS_HOSTNAME改为无.local后缀的主机名,或直接使用固定IP(更稳定):

# 替换原ROS_HOSTNAME行,二选一
export ROS_HOSTNAME=maisa-K53E
# 或直接指定IP
export ROS_IP=10.42.0.201

修改后执行source ~/.bashrc使配置生效。

方案B:更新机器人hosts文件

编辑机器人/etc/hosts,给工作站主机名添加.local后缀:

10.42.0.201  maisa-K53E maisa-K53E.local

2. 验证双向网络连通性

  • 工作站端执行:ping ubiquityrobot.local,确认能正常收到响应;
  • 机器人端执行:ping maisa-K53E(若选方案A)或ping maisa-K53E.local(若选方案B),确认连通正常。

3. 测试通信恢复

  • 工作站启动测试发布节点:
    rostopic pub /test_topic std_msgs/String "data: 'test_msg'" -r 1
    
  • 机器人端执行:rostopic echo /test_topic,检查是否能持续收到数据;
  • 可通过rosnode info <发布节点名>查看节点连接状态,确认订阅节点已成功建立连接。

4. 补充机器人端ROS环境配置(可选但推荐)

机器人作为ROS Master,建议在~/.bashrc中明确声明Master地址,避免环境变量异常:

export ROS_MASTER_URI=http://localhost:11311
export ROS_IP=0.0.0.0  # 或使用机器人自身IP 10.42.0.1

内容的提问来源于stack exchange,提问作者Shravista Kashyap

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 03:05:29