ROS是一个分布式计算环境。一个运行中的ROS系统可以包含分布在多台计算机上多个节点。根据系统的配置方式,任何节点可能随时需要与任何其他节点进行通信。
因此,ROS对网络配置有某些要求:
-
所有端口上的所有机器之间必须有完整的双向连接。
-
每台计算机必须通过所有其他计算机都可以解析的名称来公告自己。
实现
1.准备 设置固定IP
先要保证不同计算机处于同一网络中,最好分别设置固定IP,如果为虚拟机,需要将网络适配器改为桥接模式;
查看IP 网关 掩码 对应填入
填完后,点击Apply即可
2.配置文件修改
分别修改不同计算机的 /etc/hosts 文件,在该文件中加入对方的IP地址和计算机名:
主机端:
从机的IP 从机计算机名
192.168.50.171 ubuntu
从机端:
主机的IP 主机计算机名
192.168.50.172 ubuntu
设置完毕,重启两个虚拟机
重启后可以通过 ping 命令测试网络通信是否正常。
IP地址查看名: ifconfig
计算机名称查看: hostname
ping IP
ping hostname
3.配置主机IP
配置主机的 IP 地址
~/.bashrc 追加
export ROS_MASTER_URI=http://主机IP:11311
export ROS_HOSTNAME=主机IPexport ROS_MASTER_URI=http://192.168.50.172:11311
export ROS_HOSTNAME=192.168.50.172
终端输入 source .bashrc
4.配置从机IP
配置从机的 IP 地址,从机可以有多台,每台都做如下设置:
~/.bashrc 追加
export ROS_MASTER_URI=http://主机IP:11311
export ROS_HOSTNAME=从机IPexport ROS_MASTER_URI=http://192.168.50.172:11311
export ROS_HOSTNAME=192.168.50.171
终端输入source .bashrc
测试
1.主机启动 roscore(必须)
2.主机启动订阅节点
rosrun turtlesim turtlesim_node
从机启动发布节点,测试通信是否正常
rosrun turtlesim turtle_teleop_key
3.反向测试,主机启动发布节点,从机启动订阅节点,测试通信是否正常