• ROS中的分布式通信


    ROS是一个分布式的计算框架,一个运行中的ROS系统可以包含分布在多台计算机上多个节点。根据系统的配置方式,任何节点可能随时需要与任何其他节点进行通信。

    要进行局域网通信首先我们需要通过路由器来进行组网,并且将计算机设置为固定IP,这样可以根据IP查找局域网内的计算机。

    一、固定IP

    固定IP可以采用在设置中配置的方式,进入设置->wifi设置->ipv4

    ipv4方式     手动
    地址         192.168.0.100
    掩码         255.255.255.0
    网关         192.168.0.1
    DNS          8.8.8.8
    
    • 1
    • 2
    • 3
    • 4
    • 5

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fFxM77Q8-1661269391148)(/home/lovess/biji/ROS/picture/10-1.png)]

    二、修改hosts文件

    分别修改不同计算机的 /etc/hosts 文件,在该文件中加入对方的IP地址和计算机名:

    主机端:

    从机的IP    从机计算机名
    
    • 1

    从机端:

    主机的IP    主机计算机名
    
    • 1

    设置完毕,可以通过 ping 命令测试网络通信是否正常。

    IP地址查看名: ifconfig

    计算机名称查看: hostname

    三、配置主机IP

    配置主机的 IP 地址,~/.bashrc 追加

    export ROS_MASTER_URI=http://主机IP:11311
    export ROS_HOSTNAME=主机IP
    
    • 1
    • 2

    四、配置从机IP

    配置从机的 IP 地址,从机可以有多台,每台都做如下设置:~/.bashrc 追加

    export ROS_MASTER_URI=http://主机IP:11311
    export ROS_HOSTNAME=从机IP
    
    • 1
    • 2

    五、测试

    1.主机启动 roscore(必须)

    2.主机启动订阅节点,从机启动发布节点,测试通信是否正常

    3.反向测试,主机启动发布节点,从机启动订阅节点,测试通信是否正常

  • 相关阅读:
    微服务【Ribbon负载均衡&源码解析&饥饿加载】第2章
    嵌入式 QT多界面切换
    Linux 主机之间无密访问
    MySQL中CONCAT()函数拼接出现NULL的问题
    网络原理---网络初识
    盒子模型——内边距以及外边距以及外边距让盒子水平居中
    【前端】JavaScript
    杨辉三角-
    JVM源码剖析之线程的创建过程
    clone()方法使用时遇到的问题解决方法(JAVA)
  • 原文地址:https://blog.csdn.net/weixin_43903639/article/details/126495144