#raspberry-pi #ros #esp8266 #arduino-esp8266
#raspberry-pi #ros #esp8266 #arduino-esp8266
Вопрос:
Этот пост связан с ROS (операционной системой робота) и ESP8266, а также был перекрестно размещен на ROS Answers и Robotics Stack Exchange.
У меня ROS Melodic работает на Raspberry Pi 4, и мне нужно отправить информацию (в виде строк) по Wi-Fi на несколько ESP8266. Я только начинаю, так что пока это всего лишь один ESP8266. Для связи я использую, socket_node
найденный в пакете ROS rosserial_server
(wiki пакета).
Ссылаясь на изображение ниже, подчиненный узел публикует в теме, /Topic_data_over_wifi
на которую подписан узел, работающий на ESP8266:
Проблема в том, что узел /rosserial_server_socket_node
остается плавающим!
Я дважды проверил названия тем и IP-адреса и в какой-то момент заставил узел /rosserial_server_socket_node
фактически подключиться к остальной сети ROS, как показано в разделе «Что я хочу». Однако это было всего один раз (случайность?) и я больше никогда не мог /rosserial_server_socket_node
подключиться к сети ROS.
rosserial_server
socket_node
используется с настройками по умолчанию (порт 11411). Я пробовал другие номера портов, но разницы не было. После запуска всех узлов вот выходные данные rostopic list
(кроме обычных /rosout и /rosout_agg):
- /commands_from_master_node
- /topic_data_over_wifi
Цель: мне нужно найти способ подключить ESP8266 и Raspberry pi 4 через Wi-Fi с использованием ROS. Более конкретно, мне нужно получить данные с подчиненного узла (на Raspberry Pi) на узел, работающий на ESP8266.
Я уже просмотрел этот пост с несколькими TCP-соединениями, но не нашел ничего, что могло бы решить мою проблему.
Любые входные данные / предложения будут очень оценены.
Ответ №1:
В зависимости от программного обеспечения, работающего на ESP, может быть вариантом использовать мост ROS MQTT. Недостатком является то, что вам понадобится дополнительный брокер MQTT (я не уверен, но, насколько я помню, mqtt_bridge является клиентом MQTT и требует такого брокера, как Mosquitto). Вы можете добавлять клиентов MQTT в ESP и подключать их к одному брокеру и подписываться на сообщения MQTT. Другими словами, вы создаете сеть MQTT для ESP с помощью их боркера и добавляете ROS в эту сеть через mqtt_bridge. Если вы не используете специальное программное обеспечение ROS на ESP, оно должно работать нормально.
Комментарии:
1. Спасибо за это предложение, MQTT действительно помог мне достичь того, чего я хотел. Однако, есть ли у вас какие-либо идеи, почему
rosserial_server socket_node
не работает? Мне нравится использовать как можно меньше «внешних инструментов», и теперь я должен использовать MQTT pub-sub для этой единственной цели, в то время как у меня уже есть другая хорошо настроенная система pub-sub!2. Не уверен, почему это не сработало, Вы проверили это github.com/agnunez/espros
3. Я действительно сталкивался с этим, но я думаю, что это только для одного подключения (это верно?). В конечном итоге мне нужно будет подключиться к нескольким ESP8266, поэтому я на самом деле не пробовал.