当前位置:   article > 正文

保姆级教程|如何配置ROS1主从机_ros1主从配置

ros1主从配置

机器人开发经常遇到使用两个板子通信问题,比如一个板子跑底层的运动控制,一个板子跑定位导航。为了确保两个板子之间的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 文件

  1. 打开 .bashrc 文件进行编辑:

     

    nano ~/.bashrc

  1. 在文件末尾添加以下内容:

     

    # 设置ROS Master URI export ROS_MASTER_URI=http://192.168.31.125:11311 # 设置本地ROS主机名 export ROS_HOSTNAME=192.168.31.125

  1. 保存并关闭文件,然后使修改生效:

     

    source ~/.bashrc

修改第二个板子 (nvidia-desktop) 的 .bashrc 文件

  1. 打开 .bashrc 文件进行编辑:

     

    nano ~/.bashrc

  1. 在文件末尾添加以下内容:

     

    # 设置ROS Master URI export ROS_MASTER_URI=http://192.168.31.125:11311 # 设置本地ROS主机名 export ROS_HOSTNAME=192.168.31.126

  1. 保存并关闭文件,然后使修改生效:

     

    source ~/.bashrc

这样配置完成后,两个板子应该可以通过ROS进行低延迟通信。确保在每次修改后使用 source ~/.bashrc 命令使配置生效。

附录1:设置ROS Master URI 为什么设为11311,设为别的可以吗?

设置 ROS_MASTER_URI 中的端口号 11311 是因为这是ROS默认使用的端口号,但你可以将其设置为其他未被占用的端口号,只要确保双方都使用相同的端口即可。

以下是详细说明:

使用默认端口 11311

  • 原因11311 是ROS默认的主节点(Master)端口号。这样设置可以避免修改默认设置,减少配置错误的可能性。

  • 好处:大多数ROS文档和示例都使用 11311,遵循默认值可以简化配置和调试。

使用自定义端口

你可以将端口号设置为其他值,只要确保双方一致并且端口未被其他服务占用。

修改端口号步骤

  1. 选择一个未被占用的端口号:例如 11411

  1. 配置ROS Master

    1. 在运行ROS Master的板子上(假设为 ubuntu-22),设置 .bashrc 文件:

       

      export ROS_MASTER_URI=http://192.168.31.125:11411 export ROS_HOSTNAME=192.168.31.125

  1. 连接到ROS Master

    1. 在另一块板子(假设为 nvidia-desktop)上,设置 .bashrc 文件:

       

      export ROS_MASTER_URI=http://192.168.31.125:11411 export ROS_HOSTNAME=192.168.31.126

  1. 使更改生效

     

    source ~/.bashrc

验证自定义端口配置

  1. 启动ROS Master

     

    roscore -p 11411

      或者

     

    roscore --port 11411

  1. 网络连接测试:在每个板子上运行 ping 命令测试到对方板子的连接:

     

    ping 192.168.31.126 # 在 ubuntu-22 上 ping 192.168.31.125 # 在 nvidia-desktop 上

  1. ROS通信测试:使用 rostopicrosnode 命令测试ROS话题和节点通信。例如:

     

    rostopic pub /test_topic std_msgs/String "data: 'Hello from board1'" # 在 ubuntu-22 上 rostopic echo /test_topic # 在 nvidia-desktop 上

总结

  • 默认端口 11311 是最常用和推荐的设置,因为它是ROS的默认值,简化了配置过程。

  • 自定义端口 可以使用,但需要确保双方配置一致,并且选定的端口未被其他服务占用。

这样无论你选择使用默认端口还是自定义端口,都可以实现两个板子之间的低延迟ROS通信。

附录2:取消主从机配置

如果不再想使用ROS的主从机配置,可以通过重置相关的环境变量来恢复默认配置。以下是具体步骤:

1. 清除ROS_HOSTNAMEROS_MASTER_URI环境变量

在当前终端会话中运行以下命令:

 

unset ROS_HOSTNAME unset ROS_MASTER_URI

2. 从.bashrc文件中移除相关设置

编辑您的~/.bashrc文件,移除之前添加的关于ROS_HOSTNAMEROS_MASTER_URI的行:

 

nano ~/.bashrc

找到并删除以下行:

 

export ROS_HOSTNAME=192.168.41.3 export ROS_MASTER_URI=http://192.168.41.3:11311

保存并退出编辑器,然后重新加载.bashrc文件:

 

source ~/.bashrc

3. 验证恢复默认设置

在终端中运行以下命令,确保相关环境变量已被清除:

 

echo $ROS_HOSTNAME echo $ROS_MASTER_URI

这两个命令应该不输出任何内容,表示环境变量已经被清除。

4. 运行roscore

现在可以尝试再次运行roscore,验证是否已经恢复默认配置:

 

roscore

通过以上步骤,您应该能够将ROS恢复到默认的配置,不再使用主从机设置。如果仍然遇到问题,请提供具体的错误信息以便进一步诊断。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/1002867
推荐阅读
相关标签
  

闽ICP备14008679号