• SLAM从入门到精通(ROS网络通信)


    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

            之前我们学习ros的时候,大部分都是基于仿真来做的。但是最终,我们还是要把ros部署到小车上的。这就带来一个问题,首先小车肯定是要上ros的,毕竟小车要行走在各个地方。然而,我们在本地也是需要对小车进行控制的。这种控制,有可能是调试,有可能是监控,也有可能是发送任务。不管怎么说,本地pc也是需要对小车进行通信的。另外,对于真正的使用者来说,他可能手里也有一个发送任务的android pad,也是要发送任务给小车的。所以,这里就引申出一个需求,ros网络应该怎么搭建。

    1、网络构建

            要保证所有的设备都能正常通信,那么构建一个合理的wifi网络是必不可少的。router可以选用工业级的路由器,2.4g或者5g都可以。pad和pc都是成熟的电子产品,一般就是android系统和windows系统。robot的话,则需要一个配置一个无线模块,配置好分配的ip。这样一个简单的网络就算构建好了。

    2、ip配置

            一般来说,所有的设备配置在同一个网段即可。比如,router配置成192.168.0.1或者192.168.0.254,pad配置成192.168.0.101,robot配置成192.168.0.102,pc配置成192.168.0.103即可。

    3、master的选择

            目前为止还有一个事情没有决定,那就是robot和pc谁是master的问题。网上大部分的案例,都把robot设置成master,pc和pad当成slave。这是可以的。不过因为pc还会涉及到交通管制、任务分配、客户的业务系统对接等工作,这时候把ros一部分master做的活,例如move_base中的全局搜路和局部搜路放到pc来做,这也是较为常见的情形。

    4、ros ip设置

            前面讨论了各个模块ip的设置,那么怎么把他们和ros绑定在一起呢。其实也不复杂。最主要的工作就是设置ROS_MASTER_URI和ROS_HOSTNAME。pad可以这样设置,

    1. export ROS_MASTER_URI=http://192.168.0.102:11311
    2. export ROS_HOSTNAME=192.168.0.101

            robot这样设置,

    1. export ROS_MASTER_URI=http://192.168.0.102:11311
    2. export ROS_HOSTNAME=192.168.0.102

            最后pc这样设置,

    1. export ROS_MASTER_URI=http://192.168.0.102:11311
    2. export ROS_HOSTNAME=192.168.0.103

            通过观察,我们发现不同设备中,ROS_MASTER_URI都是一样的,端口11311也是固定的。但是ROS_HOSTNAME都是每个设备自己的ip,所以从这也看得出robot是ros的核心,其他设备本质上都是slave设备。

    5、启动顺序

            既然robot是核心,那么启动设备的时候,必须等robot成功启动之后,其他的pad、pc才能顺利启动。也就是说,robot上面的roscore先启动,其他设备才连的上去。

    6、测试方法

            手上有robot的同学可以直接在arm开发板设置好ros之后,连同pc一起测试。暂时还没有机器人的同学,可以通过多虚拟机+网络桥接的办法看看可不可以实现多设备之间的ros组网。如果可以在一台设备上roscore启动成功,另外一台设备上rosrun启动成功,那代表我们的配置是没有问题的。这也间接说明了ROS_MASTER_URI和ROS_HOSTNAME是设置成功的。

    7、额外pad的开发

            目前pad的系统以andoird为主,ros提供了一个rosjava包,勉强支持ros开发。如果用着不顺手,可以通过xmlrpc + rosrun client的办法来解决,这也算一个折中的思路吧。

  • 相关阅读:
    逆波兰算法、中缀表达式转后缀表达式
    hdfs高可用文件系统架构
    Vert.x和Reactive简介
    状态模式详解
    国家电网王继业:企业数字化发展的“3-3-4”框架
    天堂2游戏出错如何解决
    提升网络安全防御能力的几个方面
    mac M3芯片 goland 2022.1 断点调试失败(frames are not available)问题,亲测有效
    计算机二级WPS 选择题(模拟和解析三)
    C //例 7.13 有一个3*4的矩阵,求所有元素中的最大值。
  • 原文地址:https://blog.csdn.net/feixiaoxing/article/details/133807903