如何通过网络将 ros 节点连接到主题
How to connect ros nodes to topics over a network
假设我有一个机器人,带有 raspberry pi,或一个 jetson,运行 ROS。我想在我的笔记本电脑上查看传感器读数或 RVIZ 上的某些内容。或者也许使用连接到我的笔记本电脑的有线 Xbox 控制器来控制机器人......无论如何我可以在我的笔记本电脑上写一个节点,它可以通过局域网连接到机器人的 roscore (rpi/jetson),或者zigbee 模块之类的?
或者我是否必须在笔记本电脑上创建另一个 roscore 实例,并让它们通过 zigbee module/lan 相互通信?那会很乏味...请不要告诉我这是唯一的选择。
编辑:关于使用 LAN 连接机器人和计算机的部分已经解释...如果有人现在可以告诉我如何使用 RF 模块将它连接到机器人的 roscore,我将不胜感激
如果机器人电脑(如jetson或pi)和笔记本电脑在同一个局域网,那么你只需要一台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 主题在同一台机器上一样。您的代码应该不需要更改。
查看官方 wiki Running ROS across Multiple Machines 了解更多信息。
假设我有一个机器人,带有 raspberry pi,或一个 jetson,运行 ROS。我想在我的笔记本电脑上查看传感器读数或 RVIZ 上的某些内容。或者也许使用连接到我的笔记本电脑的有线 Xbox 控制器来控制机器人......无论如何我可以在我的笔记本电脑上写一个节点,它可以通过局域网连接到机器人的 roscore (rpi/jetson),或者zigbee 模块之类的?
或者我是否必须在笔记本电脑上创建另一个 roscore 实例,并让它们通过 zigbee module/lan 相互通信?那会很乏味...请不要告诉我这是唯一的选择。
编辑:关于使用 LAN 连接机器人和计算机的部分已经解释...如果有人现在可以告诉我如何使用 RF 模块将它连接到机器人的 roscore,我将不胜感激
如果机器人电脑(如jetson或pi)和笔记本电脑在同一个局域网,那么你只需要一台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 主题在同一台机器上一样。您的代码应该不需要更改。
查看官方 wiki Running ROS across Multiple Machines 了解更多信息。