两台Ubuntu系统(如台式机与机器人),通过网线连接,共享ROS节点。

一、准备工作

例如我的台式机Ubuntu作为电脑A,机器人机载电脑Ubuntu作为电脑B。

要实现多机通信,首先要求两台电脑连接同一个局域网(wifi或网线),然后分别打开终端查看对应的IP地址 ifconfig

注意如果电脑连接了多个网络,一定要确认两个系统共处的局域网的IP。例如:

1
2
3
4
5
6
7
# 电脑A IP
ifconfig
# enp4s0: 169.254.128.255

# 电脑B IP
ifconfig
# eth0: 169.254.128.20

二、ROS通讯

(1)检测通讯

测试能否通过IP实现通讯。

  • 电脑A:ping [ip_B]
  • 电脑B:ping [ip_A]

(2)设置ROS_MASTER_URI

选择两台电脑的其中一台作为主机(例如台式机),设置对应的ROS master,从机上(例如机器人机载电脑)设置ROS_MASTER_URI。

打开两个电脑的.bashrc

1
sudo gedit ~/.bashrc

在主机上(电脑A)设置:

1
2
3
4
5
6
export ROS_HOSTNAME=ip_A
export ROS_MASTER_URI=http://ip_A:11311

# 例如
# export ROS_HOSTNAME=169.254.128.66
# export ROS_MASTER_URI=http://169.254.128.66:11311

在从机上(电脑B)设置:

1
2
3
4
5
6
export ROS_HOSTNAME=ip_B
export ROS_MASTER_URI=http://ip_A:11311

# 例如
# export ROS_HOSTNAME=169.254.128.20
# export ROS_MASTER_URI=http://169.254.128.66:11311

完成。

(3)测试

在主机上运行小乌龟仿真

1
2
3
roscore

rosrun turtlesim turtlesim_node

在从机上运行键盘控制器,控制主机的小乌龟运动

1
rosrun turtlesim  turtle_teleop_key