В предыдущей статье я представил свое одно из первых детищ: робота Lego NXT с управлением из ROS. Теперь робот научился самостоятельно парковаться. Итак, на данный момент робот умеет обнаруживать свободное пространство для парковки и выполнять маневр параллельной парковки.
Для решения задачи используются следующие датчики: ультразвуковой сенсор, инфракрасный дальномер, энкодеры колес, а также установлены датчики смартфона (камера, электронный компас, гироскоп, акселерометр). Датчики улучшают управляемость системы и позволяют получать данные о положении робота в пространстве, а также расстояние до различных препятствий. Ультразвуковой сенсор определяет свободное место парковки, оценивает возможность совершения маневра парковки, а также учитывает и корректирует параллельность положения робота относительно стоянки во время перемещения в случае скольжения или пробуксовки колес. Установленный дополнительно инфракрасный дальномер (SHARP GP2012F83) позволяет избежать столкновения с объектами при выполнении маневра парковки, двигаясь назад.
В общем виде архитектура всей системы выглядит следующим образом:
На смартфоне выполняется узел RosJava и соединяется с ядром ROS через WiFi. Пока данные с датчиков смартфона не участвуют в работе алгоритма парковки по ряду причин. В ближайших планах использовать визуальную одометрию, в частности viso2.
Основные узлы:
parking ‒ узел написан на python и выполняется на ПК. Рассчитывает величину свободного пространства и траекторию маневра параллельной парковки. Собственно это ядро алгоритма.
lcp_proxy ‒ узел прослойка между ROS и Lego NXT из пакета lejos-ros-pkg
Вся схема узлов представлена на рисунке ниже.
Запись заезда
Все исходные коды можно посмотреть тут
PS. Работа выполнялась совместно с моей студенткой (а теперь коллегой) Саловской Аней. За что ей большое спасибо!
0 комментариев на «“Автономная парковка автомобиле-подобного робота Lego NXT”»
очень интересно.
а какими методами рассчитывали величину нишы и траекторию заезда?
Ширину ниши взяли от длины робота (примерно 1.2*длину робота). Как только робот обнаруживает, что он проехал минимальное необходимое свободное пространства он начинает парковаться. А траекторию заезда определяли методом идейно похожим на A*.