目标:掌握 ROS 分布式网络配置,实现多台设备协同工作
ROS 采用分布式网络通信:
说明:上图展示了 Talker 和 Listener 如何通过 Master 建立联系
关键点:如果地址(ROS_IP)写错了,他们就无法面谈!
作用:告诉程序“快递驿站”(Master)在哪个 IP 地址上。
类比:就像你寄快递时必须知道快递点的地址。
设置示例: http://192.168.1.100:11311
http://192.168.1.100:11311
作用:告诉别人“你自己的家地址”(本机 IP)。
类比:如果你给别人的地址是错的,快递员就没法把包裹送到你家。
重要规则:
在开始之前,请确保:
ping
ssh
假设机器人 IP 为 192.168.1.100,电脑为 192.168.1.111。
192.168.1.100
192.168.1.111
机器人端 (Robot):
export ROS_MASTER_URI=http://192.168.1.100:11311 export ROS_IP=192.168.1.100
你的电脑 (ROS2GO):
export ROS_MASTER_URI=http://192.168.1.100:11311 export ROS_IP=192.168.1.111
为了避免频繁修改,可将配置写入 .ros_master.sh 并通过 source 使用。
.ros_master.sh
source
touch .ros_master.sh && chmod +x .ros_master.sh # 写入配置 echo '## set $ROS_MASTER_URI and $ROS_IP for Multi Machine Communicate export ROS_MASTER_URI=http://192.168.1.100:11311 IP=$(ip addr show wlan0 | grep -w inet | awk '{print $2}' | awk -F / '{print $1}') export ROS\_IP=${IP}' >> ~/.ros_master.sh
执行脚本:
source ~/.ros_master.sh
自动提取 IP 常用命令:
export ROS_IP=
警告:如果未联网导致获取 IP 为空,启动 ROS 会报错。
症状:rostopic list 有显示,但 rostopic echo 没东西。
rostopic list
rostopic echo
排查清单:
ROS_IP
直接用 /etc/hostname 听起来很方便,但是:
/etc/hostname
建议:新手和专业测试一律使用 纯 IP 模式,这是最稳妥的选择。
课后任务:
rostopic