Автономная парковка автомобиле-подобного робота Lego NXT


В предыдущей статье я представил свое одно из первых детищ: робота 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*.

Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Arduino Bluetooth CraftDuino DIY Google IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение