rosserial_server wifi连接Raspberry pi ESP8266

问题描述

该帖子与ROS(机器人操作系统)和ESP8266有关,并且也交叉发布在ROS AnswersRobotics Stack Exchange上。

我在RaspBerry Pi 4上运行了ROS Melodic,需要通过wifi向多个ESP8266发送信息(作为字符串)。我只是刚刚开始,所以现在它只是一个ESP8266。为了进行通信,我使用了ROS软件包socket_node(软件包wiki)中的rosserial_server

参见下图,从节点发布到主题/Topic_data_over_wifi,该主题由ESP8266上运行的节点订阅

pictures from rqt_graph

问题是,节点/rosserial_server_socket_node仍然 浮动

我仔细检查了主题和IP地址的名称,并在某一时刻获得了节点/rosserial_server_socket_node来实际链接到ROS网络的其余部分,如“我想要的”部分所示。但是,那只是一次(fl幸?),我再也无法/rosserial_server_socket_node加入ROS网络了。

rosserial_server的{​​{1}}用于其认设置(端口11411)。我确实尝试了其他端口号,但没有区别。启动所有节点后,以下是socket_node输出(除了通常的 / rosout / rosout_agg ):

  • / commands_from_master_node
  • / topic_data_over_wifi

目标:我需要找到一种使用ROS使用ROS通过wifi连接ESP8266和RaspBerry pi 4的方法更具体地说,我需要从从节点(在RaspBerry Pi上)获取数据到在ESP8266上运行的节点。

我已经看过这篇multiple-TCP-connections帖子,但是没有找到可以解决我问题的信息。

任何意见/建议将不胜感激。

解决方法

根据ESP上运行的软件,可以选择使用ROS MQTT bridge。缺点是您将需要一个额外的MQTT代理(我不确定,但是我记得mqtt_bridge是MQTT客户端,并且需要像Mosquitto这样的代理)。您可以将MQTT客户端添加到ESP,并将它们连接到同一代理,并订阅MQTT消息。换句话说,您为带有ESP的ESP创建MQTT网络,并通过mqtt_bridge将ROS添加到该网络。如果您不在ESP上运行ROS专用软件,则应该可以正常工作。