В этом уроке мы узнаем, как использовать библиотеку uROS для micropython: https://github.com/mgtm98/uRos
АФК — это операционная система для роботов, в которой различные «узлы» взаимодействуют с центральным сервером посредством TCP-сообщений в формате JSON.
Эта библиотека позволяет нам реализовать узел ROS в нашем SBC. Он подключится к серверу и сможет отправлять (опубликовать) или получать (подписываться) сообщения.
Код для отправки сообщения выглядит следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Импортировать сеть от Урос Импортировать * от uros.std_msgs Импортировать std_Bool LAN = сеть.локальная сеть () локальная сеть.активный(Правда) лан.если конфиг(( "10.0.0.1", "255.255.255.0", "10.0.0.2", "8.8.8.8" )) в то время как(лан.положение дел() != 3 ): Распечатать( ""., конец="" ) время.спать(1) Распечатать( "Связано!" ) уРос = Рос( "10.0.0.2", 9090 ) #создание нового объекта uRos MSG = std_Bool(данные = Правда ) #создание объекта msg строки Ros уРос.публиковать( "юРосТопик", сообщение ) #публикация объекта msg Распечатать("сделано") |
В этом коде мы сначала подключаемся к сети LAN, а затем к серверу ROS; мы определяем формат нашего сообщения и, наконец, публикуем.
На ПК мы выполняем код на питоне, который действует как сервер ROS. Для простоты этот код представляет собой просто сервер сокетов, который выводит данные на консоль.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | Импортировать гнездо Импортировать системы защиту сокет_сервер(хост, порт): s = гнездо.розетка (розетка.AF_INET, сокет.SOCK_STREAM) с.bind((хост, порт)) s.Слушать(1) в то время как Правда: соединение, адрес = s.принимаем () Распечатать(«Подключено», адрес) в то время как Правда: данные = сопп.получен(1024) if не данные: перерыв Распечатать(данные) соединение.близко() Распечатать("соединение закрыто") с.близко() Распечатать("закрыто") socket_server( '10.0.0.2', 9090 ) Распечатать("сделано") |
В результате отображаются данные, полученные на сервере:
Если мы изучим данные, мы увидим две части:
1. Определение нашего сообщения uRosTopic. Это отправляется только один раз для каждого нового типа сообщения.
2. И опубликованные данные. Это отправляется каждый раз, когда мы публикуем новое значение.
Теперь вы готовы подключить свой SBC к любому устройству ROS через Ethernet, определить собственное сообщение и отправить его с помощью всего нескольких строк кода Python.