подготовкА команды в RoboCup SSL

ЧИТАЙТЕ, КАК МЫ НАЛАЖАЛИ

Введение

Однажды, мы взялись помочь знакомым ребятам (естественно не бесплатно) попасть на RoboCup SSL. В общем поучаствовали в разработке мобильной платформы для участия с ней в соревнованиях. Перед самой поездкой в Австралию выяснилось, что организатор изменил регламент по обеспечению связи между роботами и… В общем идея использовать Wi-Fi для связи провалилась. Надо сказать, что изначально она была не очень потому что Wi-Fi очень плохо работает в условиях, когда рядом есть ещё пара сотен других сетей, но ребята настояли на использовании его родимого. Мы покривились и сделали… Никогда мы так не ошибались.

Что было?

Для обеспечения связи мобильных роботов с базовой станцией, роль которой выполнял персональный компьютер, применялся модуль ESP8266EX фирмы Espressif Systems. С помощью этого модуля была реализована схема общения роботов с базовой станцией, которая представлена на рисунке 1
Рисунок 1 – Структура сети
Согласно информации, которая была получена от представителей ассоциации RoboCup во время проведения соревнований не будут отключаться другие Wi-Fi точки. Так было изначально… При большом скоплении устройства использующие Wi-Fi создают помехи и перебои со связью другим устройствам, в связи с чем ожидаются высокие значения задержек на передачу информации от мобильных роботов к базовой станции. В общем организатор запретил использование Wi-Fi на этой почве. И, конечно, он безусловно прав в своем решении!

Как стали выкручиваться?

Мы начали гуглить и выяснили, что другими командами было принято решение использовать радиомодуль NRF24L01+ фирмы Nordic Semiconductor. Внешний вид модуля представлен на рисунке 2
Данный радио модуль успешно применялся и применяется такими командами как ER-Force (призеры 2017 года), RoboTurk, RoboFEI, KgpKubs, Tiger Mannheim (призеры 2018 года), RoboTeam Twente и другими. На базе данного модуля мы решили реализовать следующее техническое решение.

В текущей версии роботов микроконтроллер STM32F407VGT6 обменивался данными с модулем ESP8266EX по интерфейсу SPI. Затем модуль ESP8266EX передавал данные по Wi-Fi по сети, к которой он был подключен и, таким образом, данные попадали на персональный компьютер, где обрабатывались и в ответ с компьютера отправлялись управляющие команды. В случае построения сети на базе предложенных модулей структурная схема сети выглядела так, как показано на рисунке 3

Рисунок 2 – Радиомодуль NRF24L01+
Рисунок 3 – Структура сети на базе NRF24L01+
На рисунке 3 видно, что для построения сети используется отдельный модуль на передачу и отдельный модуль на прием. Это необходимо для обеспечения стабильной связи с наименьшим временем задержки. Снижение задержки достигалось за счёт отсутствия необходимости постоянного переключения модуля между режимами «прием» и «передача».

Что пришлось доколхозить

Ввиду того, что на тот момент комплект мобильных роботов разработан и находился в эксплуатации не представлялось возможным произвести полную переработку с целью замены модулей связи. Таким образом, для того, чтобы встроить новый канал связи в мобильных роботов было предложено использовать имеющиеся на материнской плате свободные интерфейсные разъемы. Условная схема подключения модулей NRF24L01+ к текущей версии материнской платы показана на рисунке 4
Рисунок 4 – Схема подключения двух модулей NRF24L01+ к материнской плате робота
На материнской плате было расположено два разъема для подключения датчиков положения от оптической мыши, которые в итоге не пригодились и висели мертвым грузом. Таким образом, на материнской плате был один свободный интерфейс SPI, к которому мы и подключили наши два модуля. Это потребовало переработки программного обеспечения мобильного робота, которая не затронула конечного пользователя, но в корне поменяла работу связи. Ввиду того, что на рынке не было аналогов маршрутизаторов для NRF24L01+ нам потребовалось разработать базовую станцию, которая показана
на рисунке 3. Базовая станция осуществляла связь мобильных роботов с персональным
компьютером. Так как, в текущей версии системы использовалась сеть на базе Wi- Fi, а подключение к роутеру осуществлялось через Ethernet, то для того, чтобы избежать существенных изменений в системе управления верхнего уровня требовалось максимально сохранить структуру общения персонального компьютера с базовой станцией. Базовая станция представляла собой печатную плату, на которой было расположено два модуля NRF24L01+, источник питания, микроконтроллер STM32F407VGT6, микросхема преобразователь физического уровня Ethernet. Функциональная схема печатной платы базовой станции изображена на рисунке 5. Внешний облик базовой станции представлен на рисунке 6.
Рисунок 5 – Функциональная схема платы базовой станции

Как допилили софт

Ввиду аппаратных изменений в системе, связанных с изменением структурной схемы сети передачи данных потребовалось внести соответствующие изменения в программную часть нижнего и верхнего уровня.

В результате введенных изменений изменился весь стек технологий, которые отвечали за передачу данных, начиная с физического уровня и заканчивая прикладным. По этой причине потребовалось внести соответствующие изменения в управляющей программе.
Рисунок 6 – Внешний облик базовой станции
  • 1
    В первую очередь потребовалось внести изменения в протокол канального уровня. Учитывая принцип работы микросхемы NRF24L01+, необходимо было реализовать работу с двумя модулями (приемник, передатчик). Управление микросхемой модуля осуществлялось путем записи значений в регистры микросхемы по интерфейсу SPI. Данный факт потребовал создания регистрового протокола обмена данными с модулем, вместо управления с помощью AT-команд, как это было реализовано в случае работы с Wi-FI модулем ESP8266EX.

  • 2
    Во-вторых, потребовалось внести изменения в протокол прикладного уровня, так как было необходимо реализовать протокол управления ведомым устройством. В тот момент эта задача решалась микросхемой Wi-Fi модуля.

  • 3
    В-третьих, в системе появлялось новое устройство - базовая станция. Базовая станция в новой системе управления выполняла роль «моста», который реализовывал передачу данных из беспроводного канала связи на базе модуля NRF24L01+ в сеть, построенную на базе интерфейса Ethernet. Также для базовой станции, как для ведущего устройства в системе, потребовалась реализация алгоритма работы с двумя модулями NRF24L01+ и реализация протокола прикладного уровня для ведущего устройства.

  • 4
    В-четвертых, потребовалось реализовать протокол сетевого уровня для работы с 6-тью роботами. В тот момент каждый робот являлся частью сети, построенной на базе стека TCP/IP. Это означало, что каждый робот имел собственный IP адрес, который он получал при подключении к сети от Wi-Fi роутера. В новой предложенной структуре сети, за адресацию робота отвечала базовая станция. Сама базовая станция имела свой собственный IP адрес, который выдавался персональным компьютером пользователя, что позволило минимизировать изменения в программе управления верхнего уровня.
Также, требовалось внести соответствующие изменения в технологическое программное обеспечение с помощью которого производилась настройка работы сети.

В роботах также требовалось изменить систему получения адресов. В изначальной версии системы передачи данных адресация осуществлялась посредством получения IP-адресов.

В результате всё вышеописанное потребовало создания нового API для обеспечения работы пользователя с роботами. Важно отметить, что все описанные изменения практически не затрагивали программы управления верхнего уровня конечного пользователя.

Таким образом, все описанные изменения потребовали от пользователя добавления в протокол обмена данными с базовой станцией дополнительного байта данных, который содержал адрес робота, которому необходимо передать данные от ПК через базовую станцию.

Мы были очень рады, что получилось выкрутиться и довольно быстро и безболезненно решить проблему… Всё-таки, было ощущение, что мы виноваты, ведь мы знали, что Wi-Fi для таких применений – ЗЛО.

ДРУГИЕ СТАТЬИ

    ХОТИТЕ ПОРАБОТАТЬ С НАМИ?

    Заполните форму ниже и мы свяжемся с вами, чтобы обсудить сотрудничество