Обновление (03 / 06 / 2026): У нас есть большой запас всех наших продуктов, найти нас также в и    Как получить расценки

Интерфейс SBC с библиотекой uROS

В этом уроке мы узнаем, как использовать библиотеку 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.

Если вам понравился этот контент, вы можете подписаться на нас в Twitter, YouTube, Facebook or LinkedIn чтобы оставаться в курсе подобного контента.

Есть вопросы или пожелания?
Связаться с нами! Мы ответим <24 часов!

Значок
Контакты ArduSimple
Закрыто
ArduSimple – Высокоточное RTK-оборудование и решения для геодезических работ, упрощенные в использовании

Хотите узнать больше о GPS и RTK?

Если вы сейчас заняты, наши инженеры могут отправить вам 3 коротких электронных письма, в которых подробно объяснят все, что вам нужно знать для начала вашего проекта.