4.ROS 多机通信 虚拟机[作为从机]-控制树莓派或者odroid 或者ros[作为主机]
2017-12-10 17:01
253 查看
ROS最牛逼的地方就是它的通信机制了,不仅仅是进程间通信方便,就连不同设备间通信也很方便,只需添加几行代码,你就可以实现多电脑间的 Topi c共享, 远程控制等功能。下面就让我们一起来实现吧!
这里假设我们有两个电脑:树莓派或者odroid A 为主机端(称为电脑A),电脑 或者虚拟机 B 为控制端(称为电脑B)。最终要实现在树莓派或者odroid A 上运行roscore,并且运行 Turtlesim 程序,然后在
电脑 或者虚拟机B 上运行键盘控制程序,控制 Turtlesim 小乌龟移动
电脑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:~$
使用如下指令,分别在电脑A和电脑B的打开 hosts 文件:
在电脑A端的 hosts文件 中添加如下加粗指令:
同理,在电脑B端的 hosts 文件中,加入如下加粗指令:
使用如下指令,分别在电脑A和电脑B的打开 .bashrc 文件
在电脑A端和电脑B端打开的 .bashrc 文件的最后一行,加入如下代码:
[注意] 此处假设电脑A为主机,如果改成电脑B为主机,则只需要将此步中的 [hostname_A] 改成 [hostname_B] 即可
最好在电脑B输入如下 否则偶尔控制不到A
现在,你就可以用电脑 B 控制电脑 A 中的小乌龟尽情遨游啦! ~\(≧▽≦)/~啦啦啦
这里假设我们有两个电脑:树莓派或者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 中的小乌龟尽情遨游啦! ~\(≧▽≦)/~啦啦啦
相关文章推荐
- Ubuntu16.04虚拟机+ROS+树莓派控制小车
- 主机不连网,与虚拟机通信,安装虚拟网卡
- 虚拟机与宿主机web 服务器通信指南
- Arp工作原理及欺骗原理 局域网的网络流通不是根据IP地址进行,而是根据MAC地址进行传输。 当主机A要和主机B通信时,这时候假定A,B刚开机,或者ARP缓存表是空的。既然谈到通信,那么一般来说,
- Centos7 实现虚拟机和主机通信
- 【已解决】WinPhone模拟器报错:模拟器没法确定来宾虚拟机通信的主机ID地址。某些功能已被禁用
- ROS_Kinetic_25 在ubuntu16.04使用Leap_motion并作为手势输入控制Gazebo中的机器人
- win主机与虚拟机Ubuntu通信
- python3 socket主机与虚拟机通信
- vmware workstation 9.0.2中 虚拟机上网以及与宿主主机通信问题解决方案【3】
- 设备VMnet0上的网桥因桥接的以太网接口关闭而暂时停止运行。(此虚拟机可能无法与主机或网络中的其他计算机通信)
- 蜜罐技术——通过布置一些作为诱饵的主机、网络服务或者信息,诱使攻击方对它们实施攻击,从而可以对攻击行为进行捕获和分析
- NAT连接虚拟机和主机的通信(静态IP配置完整图解,测试通过可用)--结束篇
- VMware安装 Win7虚拟机安装与宿主机相互通信及相互之间的文件共享
- 设备 VMnet0 上的网桥当前未运行。此虚拟机无法与主机或网络中的其他计算机通信。
- oracle virtualbox里的宿主机和虚拟机如何相互通信?(使用NAT)
- 虚拟机CentOS与本地主机通信
- 如何实现虚拟机与宿主机之间的串口通信
- 让Hyper-V虚拟机即可上外网,也可与主机通信