ROS 入门 —— 分布式通信

ROS 入门 —— 分布式通信

本文章通过一台电脑通过 ROS 控制另一台电脑上的小海龟运动为例介绍分布式通信,本博客中的两台电脑在统一局域网下

通信机制

话题通信机制:

通信过程:

  • Talker注册

  • Listener注册

  • ROS Master 进行信息匹配

  • Listener 发送连接请求

  • Talker 确认连接请求并反馈给 Listener 确认信息

  • Listener 尝试与 Talker 建立网络连接

  • Talker 向 Listener 发布数据

服务通信机制:

通信过程:

  • Talker注册

  • Listener注册

  • ROS Master 进行信息匹配并向 Listener 提供 Talker 的 TCP 地址信息

  • Listener 尝试与 Talker 建立网络连接

  • Talker 向 Listener 发布服务数据

参数管理机制:

  • Talker 使用 RPC 向 ROS Master 发送参数设置数据

  • ROS Master 将参数保存到列表中

  • Listener 通过 RPC 向 Master 发送参数查找请求

  • ROS Master 向 Listener 发送参数值

这里我们主机上的小海龟节点就是一个 listener,我们的从机上的小海龟的控制节点就是 talker,我们这里就是在不同的机器上使用 talker 发送运动信息,在另一台机器上进行监听接收即可

环境准备

首先我们需要在两台计算机上安装 net-tools,这样我们才能使用 ifconfig 进行 ip 查看,这里的两台计算机的 ip 分别如下:


然后我们需要修改 hosts 文件,添加对方的 ip 与计算机名称:

这里首先我们要修改 hosts 文件的权限

cd /etc
sudo chmod 777 hosts

添加好之后如图:


注意这里我们添加的 ip 对应的名称一定要与对方 ip 对应的名称一致

然后我们使用 ping 命令查看是否能够 ping 通,这里我们 ping 对方的 ip 或计算机名称都可以,这里我们已经成功 ping 通,我们就可以开始进行小海龟的控制了

双机通讯

我们在主机中打开 ROS-Master 即运行 roscore,然后我们从机的环境变量中设置主机的 ROS-Master:

# 在环境变量中设置下面内容
export ROS_MASTER_URI=http://ppqppl:11311
# 重载环境变量:
source ~/.bashrc

注意:这里直接写 ip 地址不能运行

然后我们在主机中先开启小海龟,再在从机中打开键盘控制节点:

在我们运行 ROS-Master 和 小海龟的时候,与前面完全相同,唯一不同的就是我们需要在另一台电脑上运行小海龟的键盘控制节点:

这里可以看到我们并没有开启小海龟的控制程序,但是我们在从机上队小海龟的控制已经生效了,控制小海龟进行运动

参考资料

ros多机通讯无法连接问题

posted @ 2023-03-17 20:12  ppqppl  阅读(159)  评论(0编辑  收藏  举报