如何通过网络将 ros 节点连接到主题

问题描述

假设我有一个运行 ROS 的机器人,带有 raspBerry pi 或 jetson。我想在笔记本电脑上查看传感器读数或 RVIZ 上的某些内容。或者也许使用连接到我的笔记本电脑的有线 XBox 控制器来控制机器人......无论如何我可以在我的笔记本电脑上编写一个节点,该节点可以通过 LAN 网络或 zigbee 连接到机器人的 roscore(rpi/jetson)模块什么的?

或者我是否必须在我的笔记本电脑上创建另一个 roscore 实例,并让它们通过 zigbee 模块/局域网相互通信?那会很乏味...请不要告诉我这是唯一的选择。

编辑:已经解释了关于使用 LAN 连接机器人和计算机的部分......如果有人现在能告诉我如何使用 RF 模块将其连接到机器人的 roscore,我将不胜感激

解决方法

如果机器人计算机(例如 jetson 或 pi)和笔记本电脑在同一个 LAN 上,那么您只需要运行一个 roscore,比如在机器人上。

您需要设置两个环境变量,ROS_MASTER_URIROS_IPROS_MASTER_URI 应在两台计算机上设置为 http://ROBOT_IP:11311,而 ROS_IP 应设置为其所在计算机的 IP 地址。换句话说,在机器人电脑上,ROS_IP 等于 ROS_MASTER_URI 中的 IP 地址,但在笔记本电脑上,它等于笔记本电脑的 IP 地址。

一旦设置了这些环境变量,您就可以使用 ROS 主题与机器人“交谈”,就像这些 ROS 主题在同一台机器上一样。您的代码应该不需要更改。

有关详细信息,请参阅官方维基 Running ROS across Multiple Machines