您的位置:首页 > 其它

4.ROS 多机通信 虚拟机[作为从机]-控制树莓派或者odroid 或者ros[作为主机]

2017-12-10 17:01 253 查看
ROS最牛逼的地方就是它的通信机制了,不仅仅是进程间通信方便,就连不同设备间通信也很方便,只需添加几行代码,你就可以实现多电脑间的 Topi c共享, 远程控制等功能。下面就让我们一起来实现吧!

这里假设我们有两个电脑:树莓派或者odroid  A 为主机端(称为电脑A),电脑 或者虚拟机 B 为控制端(称为电脑B)。最终要实现在树莓派或者odroid  A 上运行roscore,并且运行 Turtlesim 程序,然后在

电脑 或者虚拟机B 上运行键盘控制程序,控制 Turtlesim 小乌龟移动


1. 查看电脑A和电脑B的 IP 和 Hostname

电脑B控制端输入
ros@ros-vm:~$ hostname

ros-vm

ros@ros-vm:~$ hostname -I

192.168.0.119 

ros@ros-vm:~$ 

电脑A控制端输入

odroid@odroid:~$ hostname

odroid

odroid@odroid:~$ hostname -I

192.168.0.122 

odroid@odroid:~$ 


2. 修改hosts文件内容

使用如下指令,分别在电脑A和电脑B的打开 hosts 文件:

$ sudo vim /etc/hosts


在电脑A端的 hosts文件 中添加如下加粗指令:

127.0.0.1       localhost
127.0.1.1         [ hostname_A ]

[IP_A]            [ hostname_A ]
[IP_B]            [ hostname_B ]




同理,在电脑B端的 hosts 文件中,加入如下加粗指令:

127.0.0.1       localhost
127.0.1.1         [ hostname_B ]

[IP_B]            [ hostname_B ]
[IP_A]            [ hostname_A ]

***





3. 修改 .bashrc 文件

使用如下指令,分别在电脑A和电脑B的打开 .bashrc 文件

$ sudo gedit ~/.bashrc


在电脑A端和电脑B端打开的 .bashrc 文件的最后一行,加入如下代码:

export ROS_MASTER_URI=http://[hostname_A]:11311


[注意] 此处假设电脑A为主机,如果改成电脑B为主机,则只需要将此步中的 [hostname_A] 改成 [hostname_B] 即可

最好在电脑B输入如下 否则偶尔控制不到A




4. 运行小乌龟程序


电脑A端:

首先启动 ROS:
$ roscore

然后 Ctrl + T 打开新的控制台,运行:
$ rosrun turtlesim turtlesim_node



电脑B端:

$ rosrun turtlesim turtle_teleop_key


 现在,你就可以用电脑 B 控制电脑 A 中的小乌龟尽情遨游啦! ~\(≧▽≦)/~啦啦啦
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐