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
- ROS多机通信
- ROS多机通信
- ros多机之间通信
- ROS多终端通信
- ROS多机器人通信
- ROS多机通信/在多台机器上使用ROS系统/多台电脑使用同一个主节点ROS master/ROS多机ssh通信
- ros 多个电脑通信
- ROS学习(2):多机通信的网络配置
- 关于ROS多机通信的总结 1.0
- 关于ROS多机通信的总结 1.1
- ROS 多机器运行及通信
- ROS 多台电脑之间进行通信
- ROS下多机器人实现通信
- ROS多台计算机之间网络通信
- 4.ROS 多机通信 虚拟机[作为从机]-控制树莓派或者odroid 或者ros[作为主机]
- ROS通信原理介绍
- 机器人ros通信
- ROS 节点通信
- 树状数组点修改+段求值
- andriod开发中的几个基本概念及关系SDK ADT Platform API
- python网络爬虫实例(一):爬取糗事百科
- 2016.7.15_模拟赛t1 立方体
- 什么是ANR 如何避免它
- ROS多机通信
- 招聘贴
- 动态规划——最长公共子序列问题(LCS)
- Android Design Support Library(一):FloatingActionButton、TextInputLayout、TextInputEditText简单用法
- 一点点orcale
- VS2010断点设置技巧
- 测试
- phpstudy搭建laravel5.2
- 欢迎使用CSDN-markdown编辑器