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

树莓派4如何与运行Gazebo的PC通信并获取其中的传感器话题数据

前置准备

PC端运行环境为Ubuntu 18.04 + ROS Melodic,树莓派优先安装匹配的Ubuntu 18.04系统与ROS Melodic版本,同版本ROS通信不存在兼容性问题,配置成本最低。如果树莓派无法安装ROS Melodic,可在PC端额外部署ros1_bridge用ROS2跨版本通信,不在本方案讨论范围内。

第一步:配置局域网连通环境
  • 将PC和树莓派接入同一个有线/无线局域网,临时关闭两边防火墙避免端口拦截:两端分别执行sudo ufw disable
  • 分别查询两台设备的局域网IP:PC和树莓派都执行ip a,记下PC的IP为PC_IP,树莓派的IP为PI_IP
  • 测试连通性:PC端执行ping PI_IP,树莓派端执行ping PC_IP,确认双向都能ping通无丢包后再进行后续配置,建议给两台设备配置静态局域网IP,避免后续IP变动导致通信中断。
第二步:配置ROS多机通信环境变量

本方案中roscore运行在PC端,两台设备的ROS_MASTER_URI都需要指向PC,同时各自配置自身IP为ROS_HOSTNAME避免域名解析失败。

PC端配置

  • 编辑用户目录下的.bashrc文件,末尾添加两行内容:
export ROS_MASTER_URI=http://PC_IP:11311
export ROS_HOSTNAME=PC_IP
  • 执行source ~/.bashrc让配置生效

树莓派端配置

  • 编辑树莓派用户目录下的.bashrc文件,末尾添加两行内容:
export ROS_MASTER_URI=http://PC_IP:11311
export ROS_HOSTNAME=PI_IP
  • 执行source ~/.bashrc让配置生效
    注意替换上述配置中的PC_IP、PI_IP为你实际查询到的两台设备的局域网IP
第三步:基础通信功能验证
  • PC端打开终端执行roscore启动ROS主节点
  • 新开一个PC终端,执行rostopic pub /test_topic std_msgs/String "data: 'test'" -r 1循环发布测试话题
  • 树莓派端打开终端,执行rostopic list,能看到/test_topic就说明话题列表同步正常,再执行rostopic echo /test_topic,能持续收到PC端发布的字符串消息即代表基础通信配置成功。
第四步:UUV模拟器传感器数据获取

低带宽传感器数据获取

PC端正常启动Gazebo 9与UUV模拟器后,树莓派端执行rostopic list即可看到模拟器发布的所有传感器话题,包括IMU、深度计、声呐等小数据量话题,直接在树莓派的ROS节点中订阅对应话题即可拿到数据,和本地PC订阅没有差异。

摄像头流高带宽数据优化

原始摄像头raw话题数据量很大,直接传输容易出现卡顿、延迟高的问题,按以下步骤优化:

  • 先在UUV模拟器的摄像头传感器配置文件中,降低update_rate(帧率)、width、height(分辨率)参数到你实际需要的数值,减少原始数据量
  • 树莓派端不要订阅原始/xxx/image_raw话题,订阅模拟器自动发布的/xxx/image_raw/compressed压缩图像话题即可,带宽占用仅为原始图像的1/10左右,需要提前在树莓派安装压缩图像依赖:执行sudo apt install ros-melodic-compressed-image-transport
  • 树莓派端拿到压缩图像数据后,用cv_bridge即可转成OpenCV格式进行后续处理。
常见问题排查
  • 能ping通但看不到话题:检查两边的ROS_MASTER_URI和ROS_HOSTNAME配置是否正确,是否已经执行source ~/.bashrc生效,防火墙是否关闭
  • 能看到话题但收不到数据:检查两边ROS_HOSTNAME是否配成了自身的IP,是否存在IP变动的情况
  • 摄像头流卡顿:优先用压缩图像话题,不要订阅原始raw话题,必要时继续降低图像分辨率和帧率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:00:01