如何实现不同主机下,ros1-ros1-webviz的通信,即在主机b中运行ros程序,然后连通到主机a的ros1,然后再在主机a的webviz上展示
主机A和主机B的ros系统配置
1.分别查看各自主机的ip以及hostname:
查看ip命令:
ifconfig
查看hostname命令:
hostname
2.查看计算机之间是否能直接通信:在A、B计算机终端分别ping对方IP地址
若通信成功,可以看到显示接收到包的time,通常是0.3ms左右;
若显示以下结果,则通常是物理连接的问题,检查你的网线跟路由器设置:
From 192.168.1.2 icmp_seq=3 Destination Host Unreachable
3.修改A、B机hosts文件内容
即修改/etc文件夹下的hosts文件,将两电脑的IP和主机名绑定,并重启网络设置使其生效
执行sudo gedit /etc/hosts
命令,打开hosts文件:
A机修改如下:
在host文件中添加一下两行命令,luofx-virtual-machine
为A的hostname,luofx-virtual-machine1
为B的hostname
192.168.118.141 luofx-virtual-machine
192.168.118.142 luofx-virtual-machine1
###B机修改与A机相同:
在host文件中添加一下两行命令,luofx-virtual-machine
为A的hostname,luofx-virtual-machine1
为B的hostname
192.168.118.141 luofx-virtual-machine
192.168.118.142 luofx-virtual-machine1
添加完成后重启A、B两机网络设置,终端命令:
sudo /etc/init.d/networking restart
4.ROS环境设置:修改~/.bashrc文件
本文中将A机:luofx-virtual-machine
作为主机master, 通过如下命令编辑~/.bashrc文件
sudo gedit ~/.bashrc
在A机这边的~/.bashrc文件最后添加
export ROS_HOSTNAME=luofx-virtual-machine
export ROS_MASTER_URI=http://luofx-virtual-machine:11311
在B机这边的~/.bashrc文件最后添加
export ROS_HOSTNAME=luofx-virtual-machine1
export ROS_MASTER_URI=http://luofx-virtual-machine:11311
5.相互ping
在A机上ping B机:
ping luofx-virtual-machine1
同时在B机上ping A机
ping luofx-virtual-machine
6.ros-ros通信:
打开主机A,终端roscore启动ROS,在主机B中直接rostopic list 查看话题,同时B中运行的ros,在A中也能看到rostopic
7.webviz展现:
1.主机A:
webviz启动:npm run build
,然后npm run docs-dev
2.主机A:
启动ROS bridge:
source /opt/ros/melodic/setup.bash
roslaunch rosbridge_server rosbridge_websocket.launch
3.主机B:运行ros
4.主机A:
查看topic 并在webviz看数据展示
如:小乌龟:
rosrun turtlesim turtlesim_node
,出现小乌龟窗口
rosrun turtlesim turtle_teleop_key
,开启另一个节点,在该终端上通过键盘控制乌龟的运动
bag包:
rosbag play test.bag
然后可以发现在webviz上就可以获取主机B运行的ros程序的topic消息。