假设我有一个运行 ROS 的机器人,带有 raspberry pi 或 jetson。我想在笔记本电脑上查看传感器读数或 RVIZ 上的某些内容。或者也许使用连接到我的笔记本电脑的有线 Xbox 控制器来控制机器人......无论如何我可以在我的笔记本电脑上编写一个节点,该节点可以通过 LAN 网络或 zigbee 连接到机器人的 roscore(rpi/jetson)模块什么的?
或者我是否必须在我的笔记本电脑上创建另一个 roscore 实例,并让它们通过 zigbee 模块/局域网相互通信?那会很乏味...请不要告诉我这是唯一的选择。
编辑:已经解释了关于使用 LAN 连接机器人和计算机的部分......如果有人现在能告诉我如何使用 RF 模块将其连接到机器人的 roscore,我将不胜感激
答案 0 :(得分:1)
如果机器人计算机(例如 jetson 或 pi)和笔记本电脑在同一个 LAN 上,那么您只需要运行一个 roscore
,比如在机器人上。
您需要设置两个环境变量,ROS_MASTER_URI
和 ROS_IP
。 ROS_MASTER_URI
应在两台计算机上设置为 http://ROBOT_IP:11311
,而 ROS_IP
应设置为其所在计算机的 IP 地址。换句话说,在机器人电脑上,ROS_IP
等于 ROS_MASTER_URI
中的 IP 地址,但在笔记本电脑上,它等于笔记本电脑的 IP 地址。
一旦设置了这些环境变量,您就可以使用 ROS 主题与机器人“交谈”,就像这些 ROS 主题在同一台机器上一样。您的代码应该不需要更改。
有关详细信息,请参阅官方维基 Running ROS across Multiple Machines。