ROS多机器人通信(Linux应用,新的切入点,跟风进步)
2017-12-27 02:58
429 查看
ROS多机器人通信http://blog.csdn.net/ktigerhero3/article/details/78109049
ROS设计的灵魂就在于其分布式计算。一个优秀的节点不需要考虑在哪台机器上运行,它允许实时分配计算量以最大化的利用系统资源。(有一个特例——驱动节点必须运行在跟硬件设备有物理连接的机器上)。在多个机器人上使用ROS是一件很简单的事,你只需要记住一下几点:
1.你只需要一个master,只要在一个机器上运行它就可以了。
所有节点都必须通过配置 ROS_MASTER_URI连接到同一个master。
2.任意两台机器间任意两端口都必须要有完整的、双向连接的网络。(参考ROS/NetworkSetup).
3.每台机器都必须向其他机器广播其能够解析的名字。(参考 ROS/NetworkSetup).
本文实现两台安装了ubantu系统和ROS的电脑之间的通信。
步骤:
(1)相关软件安装
(2)获取两个主机的ip地址和主机名
(3)配置ros连接两台电脑并运行示例
首先当然两台系统要安装ROS,然后是同步包,实现两台系统同步
系统连接需要安装ssh
分别在两台机器上
(1)查看ip地址
台式为192.168.1.35
笔记本为192.168.1.6
(2)查看主机名
(1)首先查看两台电脑的ssh是否启动
如果看到sshd那说明ssh-server已经启动了,没启动就重启
(2)使用ssh连接电脑
首先互相ping对方电脑
出现如下说明网络通了。
2
3
注意如果笔记本用wifi连接,台式用有线,可能会ping不通,就要想办法ping通网络.
参考http://blog.csdn.net/ktigerhero3/article/details/70792676
ssh连接配置方法。
在笔记本和台式机上都使用
ssh username@ip_address -p port
连接上对方的电脑。都能够成功后
(3)配置ROS_MASTER_URI
设台式机的ip为192.168.1.35,笔记本的ip为192.168.1.6
(a)台式机操作如下
设置台式机为master
只有台式机上启动
新建控制台
2
(b)笔记本操作如下
2
注意配置好ROS_MASTER_URI后,在ROS_MASTER_URI这台机器上运行roscore就行了,否则运行多个roscore就收不到信号。
台式机的listener收到如下信息说明ros不同机器通信成功.
参考:
http://wiki.ros.org/cn/ROS/Tutorials/MultipleMachines
http://blog.csdn.net/heyijia0327/article/details/42065293
https://answers.ros.org/question/90536/ros-remote-master-can-see-topics-but-no-data/
ROS设计的灵魂就在于其分布式计算。一个优秀的节点不需要考虑在哪台机器上运行,它允许实时分配计算量以最大化的利用系统资源。(有一个特例——驱动节点必须运行在跟硬件设备有物理连接的机器上)。在多个机器人上使用ROS是一件很简单的事,你只需要记住一下几点:
1.你只需要一个master,只要在一个机器上运行它就可以了。
所有节点都必须通过配置 ROS_MASTER_URI连接到同一个master。
2.任意两台机器间任意两端口都必须要有完整的、双向连接的网络。(参考ROS/NetworkSetup).
3.每台机器都必须向其他机器广播其能够解析的名字。(参考 ROS/NetworkSetup).
本文实现两台安装了ubantu系统和ROS的电脑之间的通信。
步骤:
(1)相关软件安装
(2)获取两个主机的ip地址和主机名
(3)配置ros连接两台电脑并运行示例
1.相关软件安装
首先当然两台系统要安装ROS,然后是同步包,实现两台系统同步sudo apt-get install chrony1
系统连接需要安装ssh
sudo apt-get install openssh-server1
2.获取两个主机的ip地址和主机名
分别在两台机器上 (1)查看ip地址
ifconfig1
台式为192.168.1.35
笔记本为192.168.1.6
(2)查看主机名
hostname1
3配置ros连接两台电脑并运行示例
(1)首先查看两台电脑的ssh是否启动ps -e|grep ssh1
如果看到sshd那说明ssh-server已经启动了,没启动就重启
sudo /etc/init.d/ssh restart1
(2)使用ssh连接电脑
首先互相ping对方电脑
ping 192.168.1.351
出现如下说明网络通了。
64 bytes from 192.168.1.6: icmp_seq=1 ttl=64 time=0.293 ms 64 bytes from 192.168.1.6: icmp_seq=2 ttl=64 time=0.403 ms 64 bytes from 192.168.1.6: icmp_seq=3 ttl=64 time=0.389 ms1
2
3
注意如果笔记本用wifi连接,台式用有线,可能会ping不通,就要想办法ping通网络.
参考http://blog.csdn.net/ktigerhero3/article/details/70792676
ssh连接配置方法。
在笔记本和台式机上都使用
ssh username@ip_address -p port
连接上对方的电脑。都能够成功后
(3)配置ROS_MASTER_URI
设台式机的ip为192.168.1.35,笔记本的ip为192.168.1.6
(a)台式机操作如下
设置台式机为master
只有台式机上启动
roscore1
新建控制台
export ROS_MASTER_URI=http://192.168.1.35:11311 rosrun rospy_tutorials listener.py1
2
(b)笔记本操作如下
export ROS_MASTER_URI=http://192.168.1.35:11311 rosrun rospy_tutorials talker.py1
2
注意配置好ROS_MASTER_URI后,在ROS_MASTER_URI这台机器上运行roscore就行了,否则运行多个roscore就收不到信号。
台式机的listener收到如下信息说明ros不同机器通信成功.
参考:
http://wiki.ros.org/cn/ROS/Tutorials/MultipleMachines
http://blog.csdn.net/heyijia0327/article/details/42065293
https://answers.ros.org/question/90536/ros-remote-master-can-see-topics-but-no-data/
相关文章推荐
- (二)ROS中控制机器人运动(示例运行)__新的适合自己的进步切入点,跟风榜样
- 崛起背后的隐秘故事-“机器人版 Linux”ROS
- linux常用命令笔记(3压缩解压命令、网络通信命令、Shell应用技巧)
- 例说linux内核与应用数据通信(一):加入一个系统调用
- Linux程序设计学习笔记----网络通信编程API及其示例应用
- ROS机器人操作系统教学与应用的思考
- 串行通信总结(实现两个单片机之间的通信)(很好的例子,跟风进步)
- ORB_SLAM2应用实践_ROS小强机器人
- 例说linux内核与应用数据通信(三):读写内核设备驱动文件
- Unix/Linux C++应用开发-进程通信消息队列
- linux进程间的通信(Perl):FIFO应用示例
- 例说linux内核与应用数据通信(四):映射设备内核空间到用户态
- linux应用之----进程通信
- 例说linux内核与应用数据通信(四):映射设备内核空间到用户态
- ROS下多机器人实现通信
- 例说linux内核与应用数据通信(一):添加一个系统调用
- Linux基本应用之NFS---实现两台主机间的通信
- Linux学习笔记之网络通信命令、系统关机、sehll应用技巧....
- 【ROS】计算机、机器人之间的网络通信配置
- 【Linux的高级应用编程】进程间的通信机制