赞
踩
在机器人开发经常遇到使用两个板子通信问题,比如一个板子跑底层的运动控制,一个板子跑定位导航。为了确保两个板子之间的ROS通信流畅,我们需要在两个板子的.bashrc
文件中添加必要的环境变量配置。首先,确保你的 /etc/hosts
文件中包含对方板子的IP和主机名解析。接下来,我们详细说明如何修改两个板子的.bashrc
文件。
ubuntu-22
) 的 /etc/hosts
文件在 /etc/hosts
文件中添加第二个板子的IP和主机名解析:
sudo nano /etc/hosts
添加以下内容:
192.168.31.126 nvidia-desktop
nvidia-desktop
) 的 /etc/hosts
文件在 /etc/hosts
文件中添加第一个板子的IP和主机名解析:
sudo nano /etc/hosts
添加以下内容:
192.168.31.125 ubuntu-22
ubuntu-22
) 的 .bashrc
文件打开 .bashrc
文件进行编辑:
nano ~/.bashrc
在文件末尾添加以下内容:
# 设置ROS Master URI export ROS_MASTER_URI=http://192.168.31.125:11311 # 设置本地ROS主机名 export ROS_HOSTNAME=192.168.31.125
保存并关闭文件,然后使修改生效:
source ~/.bashrc
nvidia-desktop
) 的 .bashrc
文件打开 .bashrc
文件进行编辑:
nano ~/.bashrc
在文件末尾添加以下内容:
# 设置ROS Master URI export ROS_MASTER_URI=http://192.168.31.125:11311 # 设置本地ROS主机名 export ROS_HOSTNAME=192.168.31.126
保存并关闭文件,然后使修改生效:
source ~/.bashrc
这样配置完成后,两个板子应该可以通过ROS进行低延迟通信。确保在每次修改后使用 source ~/.bashrc
命令使配置生效。
设置 ROS_MASTER_URI
中的端口号 11311
是因为这是ROS默认使用的端口号,但你可以将其设置为其他未被占用的端口号,只要确保双方都使用相同的端口即可。
以下是详细说明:
11311
原因:11311
是ROS默认的主节点(Master)端口号。这样设置可以避免修改默认设置,减少配置错误的可能性。
好处:大多数ROS文档和示例都使用 11311
,遵循默认值可以简化配置和调试。
你可以将端口号设置为其他值,只要确保双方一致并且端口未被其他服务占用。
选择一个未被占用的端口号:例如 11411
。
配置ROS Master:
在运行ROS Master的板子上(假设为 ubuntu-22
),设置 .bashrc
文件:
export ROS_MASTER_URI=http://192.168.31.125:11411 export ROS_HOSTNAME=192.168.31.125
连接到ROS Master:
在另一块板子(假设为 nvidia-desktop
)上,设置 .bashrc
文件:
export ROS_MASTER_URI=http://192.168.31.125:11411 export ROS_HOSTNAME=192.168.31.126
使更改生效:
source ~/.bashrc
启动ROS Master:
roscore -p 11411
或者
roscore --port 11411
网络连接测试:在每个板子上运行 ping
命令测试到对方板子的连接:
ping 192.168.31.126 # 在 ubuntu-22 上 ping 192.168.31.125 # 在 nvidia-desktop 上
ROS通信测试:使用 rostopic
和 rosnode
命令测试ROS话题和节点通信。例如:
rostopic pub /test_topic std_msgs/String "data: 'Hello from board1'" # 在 ubuntu-22 上 rostopic echo /test_topic # 在 nvidia-desktop 上
默认端口 11311
是最常用和推荐的设置,因为它是ROS的默认值,简化了配置过程。
自定义端口 可以使用,但需要确保双方配置一致,并且选定的端口未被其他服务占用。
这样无论你选择使用默认端口还是自定义端口,都可以实现两个板子之间的低延迟ROS通信。
如果不再想使用ROS的主从机配置,可以通过重置相关的环境变量来恢复默认配置。以下是具体步骤:
ROS_HOSTNAME
和ROS_MASTER_URI
环境变量在当前终端会话中运行以下命令:
unset ROS_HOSTNAME unset ROS_MASTER_URI
.bashrc
文件中移除相关设置编辑您的~/.bashrc
文件,移除之前添加的关于ROS_HOSTNAME
和ROS_MASTER_URI
的行:
nano ~/.bashrc
找到并删除以下行:
export ROS_HOSTNAME=192.168.41.3 export ROS_MASTER_URI=http://192.168.41.3:11311
保存并退出编辑器,然后重新加载.bashrc
文件:
source ~/.bashrc
在终端中运行以下命令,确保相关环境变量已被清除:
echo $ROS_HOSTNAME echo $ROS_MASTER_URI
这两个命令应该不输出任何内容,表示环境变量已经被清除。
roscore
现在可以尝试再次运行roscore
,验证是否已经恢复默认配置:
roscore
通过以上步骤,您应该能够将ROS恢复到默认的配置,不再使用主从机设置。如果仍然遇到问题,请提供具体的错误信息以便进一步诊断。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。