Стенд состоит из группы колесных роботов. Он предназначен для отработки алгоритмов и протоколов выполнения группой роботов миссий по перемещению в комнате с заранее неизвестными препятствиями к включающемуся в заранее неизвестном месте источнику света с минимизацией столкновений. Размеры роботов 10*10*10 см (Рис. 1). Каждый робот имеет два ведущих колеса и одну шаровую опору. Он может двигаться вперед, назад, влево, вправо, вращаться на месте, в левую и в правую сторону. Движение робота осуществляется вращением двигателей, которое задается управляющим сигналом типа ШИМ с контроллера робота в пределах от 1 до 2 мс, где 1,5 мс соответствует нулевой скорости вращения, а 1 мс и 2 мс соответствует максимальной скорости вращения двигателя по часовой и против часовой стрелки.
Сценарий для группы роботов:
- Все роботы стоят в углу или просто у стены большого помещения, в котором случайным образом расставлены прямоугольные препятствия разных размеров и превышающие в 3 раза высоту роботов.
- В двух других углах (или просто на двух других стенах) устанавливаются два источника света.
- Включается один источник света.
- Роботы начали движение.
- При встрече с препятствием роботы обходят его, разделяясь при необходимости на подгруппы.
- После прохождения большей части пути свет гаснет и загорается второй источник.
- В итоге все роботы должны достигнуть источника света, который включен.
Выберем систему координат с центром в месте расположения одного из источника света, как глобальную система координат. Каждый робот имеет свою локальную систему координат с центром в точке центра масс. Робот имеет бортовой магнитометр и четыре датчика освещенности с углом обзора 150 градусов, которые расположены так, как показано на Рисунке справа.
В передней части робота расположен датчик расстояния (Sharp GP2Y0A02YK0F), направление измерения дальности которого совпадает с направлением движения робота и имеет пределы измерения от 10 до 100 см. Отдельно взятый робот не имеет информации о своем местонахождении в глобальной системе координат и о местоположении своих соседей, но имеет знание о своем курсе движения, который получает от бортового магнитометра. Роботы обмениваются данными о своем состоянии в некоторые моменты времени. Для группового взаимодействия в каждом роботе установлен модуль передачи данных, который работает в двух режимах одновременно. Первый режим позволяет широковещательно передавать информацию о своем состоянии всем, кто слышит, второй режим сканирует сеть в рамках заданных частот и считывает данные от ближайших соседей. Важной особенностью группы является то, что роботы не знают от кого именно получают информацию, но знают за счет дополнительной информации о мощности сигнала с какого расстояния получают данные. В каждый момент времени с определенной частотой дискретизации робот пересчитывает курс на источник света по датчикам освещенности и данным магнитометра. Сначала робот вычисляет направление на источник в своей локальной системе координат, а потом переводит это направление в глобальную систему координат по данным магнитометра.
Вместе с расчетом курса движения каждый робот вычисляет свою степень уверенности в нем. Показания курса и уверенности являются параметрами состояния робота, которые он передает (вещает) в сеть. От соседей робот получает их состояния (информацию о курсе и уверенности). На основе этих данных робот корректирует свой курс, пользуясь протоколом типа локального голосования. Кроме того, в алгоритм выбора фактического курса движения робота вносится поправка для избегания столкновений с препятствиями.
В зависимости от расстояния до препятствия робот действует по одному из трех сценариев:
- Если датчик расстояния показывает расстояние больше 100 см это означает, что видимых препятствий по курсу движения нет. И желаемый курс рассчитывается исходя из данных от соседей и своего расчета курса.
- Если показания датчика расстояния менее 40 см, то робот старается остановиться и его основной целью становится поиск направления движения, в котором расстояния до препятствия будет больше 40 см. При этом робот уже не использует данные от других роботов и датчиков света. В этом режим робот направления вращения и поворачивается на месте по часовой стрелке или против нее до тех пор, пока не найдет возможное направление движения.
- Если показания датчика расстояния более 40 см, но менее 100 см, то робот добавляет в свой, рассчитанный по датчикам освещенности, курс поправку на поворот, которая задается в зависимости от физических параметров робота. Выбор знака добавления поправки выбирается исходя из показаний датчиков освещенности: если сумма показаний датчиков 0 и 1 равна сумме показаний датчиков 2 и 3 , то знак выбирается случайным образом, если сумма 0 и 1 больше суммы показаний 2 и 3 , то знак (влево, т.е. против часовой стрелки), если меньше , то знак + (вправо, т.е. по часовой стрелке).
При выборе соседей робот ориентируется на заданное ограничение по их количеству, которое установлено в зависимости от производительности модуля передачи данных. Если робот детектирует в близи большее количество соседей, то он случайным образом выбирает из них нужное количество для считывания данных.
На борту робота используются два микрокомпьютера: Arduino micro и ESP8266. Для унификации оба микрокомпьютера прошиваются через Arduino IDE. Скетч прошивка микрокомпьютера Arduino зашивается через UART порт, а скетч ESP прошивается через точку доступа WiFi. Микрокомпьютер Arduino считывает данные с датчиков, формирует данные для отправки соседям и управляет двигателями. Микрокомпьютер ESP8266 рассылает свои данные и получает данные от соседей. При этом работа микрокомпьютеров не требует синхронизации.
Описанный выше протокол работы группы роботов обеспечивает каждому роботу четко заданный алгоритм действий в условиях, когда он не знает координат своего местоположения и координат своих соседей, когда у него нет знания о месторасположении и параметрах препятствий. Робот пользуется только показаниями своих датчиков, и он знает, что рядом есть другие такие же роботы, от которых он может получить информацию об их курсе и их уверенности в нем. Если робот получает информация о том, что соседние роботы движутся с отличным от его собственного курса курсом и достаточно сильно в нем уверены, то он делает вывод, что впереди может быть препятствие, и его надо начать обходить.
Демонстрация работы протокола: