ROS多机通信

来源:互联网 发布:淘宝图片版权怎么看 编辑:程序博客网 时间:2024/05/29 12:48

 ROS 电脑通信准备

    
    参考链接:http://wiki.ros.org/cn/ROS/Tutorials/MultipleMachines 主要介绍ROS节点在多机器上运行的配置


一、由于ROS底层是基于TCP/IP的,所以如果希望节点运行在不同的机器上,就需要设置好机器之间的网络连接。    

    
    1、查看网络配置:查看电脑的ip和主机名hostname 命令:ifconfig ; hostname

    注:只要在同一个局域网下就能进行通信。可以是同一个无线路由器下的两台电脑,也可以有其中一台电脑通过有线连接无线路由器,另一台连接其无线。

    2、修改/etc/hosts文件

        目的是将ip与两台电脑的hostname绑定,两台电脑之间通过hostname就可以找到对方。修改之后,ping ip和ping hostname都可以找到对方的信息。

        将本机ip和本机hostname都添加进/etc/hosts  两个之间是tab键,不是空格
        如: 192.168.0.50    sl-desktop
            
        将另外的机器的ip和对应的hostname添加进/etc/hosts
        如: 192.168.0.85    sl-thinkpad-x201i
        
        修改完之后,重启网络: sudo /etc/init.d/networking restart

        注:该文件下还有127开头的回环测试ip不用修改

二、实现电脑之间的通信

    3、两台电脑上装上chrony包,实现时间同步
        
        sudo apt-get install chrony
        
    配置方法参见:http://www.cnblogs.com/wzy5223/p/5345378.html

    4、在两台电脑上安装ssh服务器
        
        sudo apt-get install openssh-server

        ps aux| grep ssh 查看sshd守护进程是否启动
        如果没有启动,调用sudo /etc/init.d/ssh start启动他

    5、检查网络连通
        
        ping -c4 hostname #发送4个封装包

            sl@sl-desktop:~$ ping -c4 localhost
            PING localhost (127.0.0.1) 56(84) bytes of data.
            64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.034 ms
            64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.028 ms
            64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.029 ms
            64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.033 ms

            --- localhost ping statistics ---
            4 packets transmitted, 4 received, 0% packet loss, time 2997ms
            rtt min/avg/max/mdev = 0.028/0.031/0.034/0.002 ms


三、多机测试实验,采用listener和talker节点


    6. 两台电脑的连网情况
        192.168.0.50    sl-desktop
        192.168.0.85    sl-thinkpad-x201i
    配置文件:sl-desktop中 /etc/hosts
            127.0.0.1    localhost
            127.0.1.1    sl-desktop
            192.168.0.50    sl-desktop        #台式机的ip\thosts
            192.168.0.85    sl-thinkpad-x201i    #笔记本的ip\thosts
            # The following lines are desirable for IPv6 capable hosts
            ::1     ip6-localhost ip6-loopback
            fe00::0 ip6-localnet
            ff00::0 ip6-mcastprefix
            ff02::1 ip6-allnodes
            ff02::2 ip6-allrouters
        sl-thinkpad-x201i中 /etc/hosts
            127.0.0.1    localhost
            127.0.1.1    sl-thinkpad-x201i
            192.168.0.50    sl-desktop
            192.168.0.85    sl-thinkpad-x201i
            # The following lines are desirable for IPv6 capable hosts
            ::1     ip6-localhost ip6-loopback
            fe00::0 ip6-localnet
            ff00::0 ip6-mcastprefix
            ff02::1 ip6-allnodes
            ff02::2 ip6-allrouters    
    7.台式机连接到笔记本
        $ ssh sl@sl-thinkpad-x201i #输入密码,登陆进笔记本的系统

    8.在台式机sl-desktop端
        开启一个终端,输入roscore 启动主节点
    9.在笔记本sl-thinkpad-x201i端
        $export ROS_MASTER_URI=http://sl-desktop:11311   #使笔记本识别ROS主节点运行的机器IP:port
        $rosrun rospy_tutorials listener  #启动rospy_tutorials程序包的listener节点
    10.在台式机端sl-desktop
        开启一个终端,输入
        $rosrun m_pkg listener #也可以是ros系统自带的/roscpp_tutorials/listener 或/rospy_tutorials/listener
        开启另一个终端,输入
        $rosrun m_pkg talker  #也可以是ros系统自带的/roscpp_tutorials/talker 或/rospy_tutorials/talker
    
    此时,在台式机端的talker节点不断地发送消息:
        sl@sl-desktop:~/m_ros_ws$ rosrun roscpp_tutorials talker
        [ INFO] [1468647284.621422803]: hello world 0
        [ INFO] [1468647284.721507150]: hello world 1
        [ INFO] [1468647284.821481159]: hello world 2
        [ INFO] [1468647284.921490613]: hello world 3
        [ INFO] [1468647285.021490583]: hello world 4
        [ INFO] [1468647285.121480628]: hello world 5
        [ INFO] [1468647285.221478280]: hello world 6
        [ INFO] [1468647285.321491770]: hello world 7
        [ INFO] [1468647285.421494102]: hello world 8
        [ INFO] [1468647285.521490956]: hello world 9

        [ INFO] [1468647285.621495987]: hello world 10

    在台式机另一终端的m_pkg/listener节点收到消息:

        sl@sl-desktop:~$ rosrun m_pkg listener
        [ INFO] [1468647141.267843843]: I heard: [hello world 3]
        [ INFO] [1468647141.367775039]: I heard: [hello world 4]
        [ INFO] [1468647141.467773422]: I heard: [hello world 5]
        [ INFO] [1468647141.567728851]: I heard: [hello world 6]
        [ INFO] [1468647141.667776271]: I heard: [hello world 7]
        [ INFO] [1468647141.767750576]: I heard: [hello world 8]
        [ INFO] [1468647141.867797181]: I heard: [hello world 9]
        [ INFO] [1468647141.967771322]: I heard: [hello world 10]
        [ INFO] [1468647142.067683258]: I heard: [hello world 11]
        [ INFO] [1468647142.167728250]: I heard: [hello world 12]

    在笔记本的rospy_tutorials/listener节点也收到消息:
        sl@sl-thinkpad-x201i:~$ rosrun rospy_tutorials listener
        [INFO] [WallTime: 1468647594.039604] /listener_4656_1468647584896I heard hello world 12
        [INFO] [WallTime: 1468647594.139758] /listener_4656_1468647584896I heard hello world 13
        [INFO] [WallTime: 1468647594.239264] /listener_4656_1468647584896I heard hello world 14
        [INFO] [WallTime: 1468647594.339432] /listener_4656_1468647584896I heard hello world 15
        [INFO] [WallTime: 1468647594.441040] /listener_4656_1468647584896I heard hello world 16
        [INFO] [WallTime: 1468647594.543232] /listener_4656_1468647584896I heard hello world 17
        [INFO] [WallTime: 1468647594.639349] /listener_4656_1468647584896I heard hello world 18


    注意:这里在笔记本上的节点接收到消息有延迟,从12个开始的.


0 0
原创粉丝点击