Построение оптимальной траектории движения мобильного робота
Характеристика программных и аппаратных средств разработки. Изучение средств разработчика Turtlebot в ROS. Движение робота с указанием скоростей в точках. Исследование модулей картографирования и навигации. Особенность запуска и тестирования алгоритма.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 31.01.2019 |
Размер файла | 1,8 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Оглавление
- Введение
1. Программные и аппаратные средства разработки
1.1 ROS(Robotics Operation System)
1.2 Аппаратные средства разработки
1.3 Средства разработчика Turtlebot в ROS
2. Алгоритмы построения пути
2.1 Выбор алгоритма кратчайшего прохода по точкам
2.2 Алгоритм построения пути между двумя точками
2.3 Движение робота с указанием скоростей в точках
3. Программная реализация
3.1 Настройка среды для симуляции робота
3.2 Модули картографирования и навигации
3.3 Запуск и тестирование алгоритма
Заключение
Список литературы
Введение
Представленная работа посвящена исследованию методов разработки приложений для мобильных роботов, а также решению практической задачи: построить алгоритм, позволяющий задавать траекторию движения робота с указанием как координат точек траектории, так и проекций скоростей в этих точках.
Сложными ограничениями являются препятствия движения робота, безостановочное движение на поворотах, задание скоростей в точках маршрута робота.
Актуальность задачи обусловлена оптимизацией маршрута робота (а, следовательно и его эффективности) в различных областях науки, техники и домашнего хозяйства. Актуальность также обусловлена быстрым ростом аудитории пользователей мобильных роботов.
Выбор темы дипломной работы был сделан на основании актуальности, нужности и эффективности задачи для робототехники. Задача построения оптимальной траектории движения мобильного робота с учетом координат точек маршрута робота и ограничений на вектор скорости в этих точках может иметь широкий спектр практических применений. Такие алгоритмы движения востребованы при планировании движения наземных роботов, используемых в охранных системах, системах доставки грузов и т.д., а также воздушных роботов, отвечающих за системы доставки, патрулирования, наблюдения. Штатные алгоритмы планирования движения не позволяют задать ограничения на скорость робота в точках маршрута робота, что ведет к большему времени и расходам энергии на торможение/ускорение робота. Кроме того, использование сложных ограничений позволяет роботу выполнять более сложные маневры, например, движение с проскальзыванием колес.
Тема работы нова, так как, несмотря на то, что алгоритмы навигации, как теоретические, так и практические проработаны достаточно хорошо (например DWA планировщик в ROS [1]), существующие разработки траекторий со сложными ограничениями находятся на стадии теоретических изысканий [2] [3] [4]. Новизна работы также определяется использованием операционной системы ROS, которая была основана в 2007 году, однако широкое развитие получила лишь в последние 2-3 года за счет своей открытости, универсальности, грамотному сообществу. Благодаря открытому исходному коду возможно легко изучать и улучшать уже существующие алгоритмы.
Объектом исследований является мобильный робот iRobot Create и построенный на нём Turtlebot, а также система навигации ROS и её алгоритмы. В ROS также используются система rostopic и симулятор Gazebo.
Робототехника является одной из самых быстроразвивающихся отраслей. Повсеместно появляются роботы, способные выполнять несколько операций. Например, робот PR2 уже способен на многие действия для помощи в быту человека (рис. 1-2).
Рисунок 1. PR2 готовит еду.
Робот в наше время очень полезная штука, именно благодаря им, человек облегчает себе жизнь. Возьмём простой пример - вычислительная робототехника. Одна из крупнейших американских корпораций уже занялась заменой менеджеров на робототехнику, в результате которой было уволено 4000 сотрудников! Менеджеров, и, кстати, очень эффективных, сокращают не из желания сэкономить, а лишь потому, что они просто не справляются с объёмом работы в отличие от роботов. Роботы не знают усталости и могут работать хоть круглые сутки, главное, чтобы хватило заряда батареек. А про эффективность роботов не следует и говорить - то, что у людей может занять год работы, робот выполнит за месяц. При этом эффективность работы роботов гораздо выше, чем у людей, и экономии больше. Роботам не надо платить, они не болеют, не могут получить травму, с работой справляются эффективней людей, а риск, что робот пострадает - гораздо меньше. Роботы обладают возможностями гораздо выше человеческих способностей, поэтому так часто нами применяются [5].
Рисунок 2. PR2 доставляет почту.
Менее функциональные роботы, такие как icreate, roomba нашли свое применение в быту как роботы пылесосы. Они являются необходимыми и самыми популярными бытовыми роботами в мире. В настоящий момент уже несколько миллионов роботов Roomba iRobot во всем мире занимаются уборкой домов с момента их дебюта в 2002 году. Однако и они могут быть использованы в простейших исследовательских целях - например, решение задачи пройти по маршруту [6].
Рисунок 3. iRobot Roomba.
Также на основе роботов Roomba или Create собрана модель turtlebot, которая помимо двигающейся основы включает в себя Microsoft Kinect и другие модули. Именно эти роботы стали популярны в среде разработчиков благодаря простоте и доступности.
1. Программные и аппаратные средства разработки
1.1 ROS(Robotics Operation System)
ROS была разработана Willow Garage - консорциумом Американских университетов в 2007 году. Целью ее создания была разработка мета-интерфейса программного обеспечения для роботов. В ROS использовался открытый исходный код, и первоначально она позаимствовала приложения из Player Project и других open source проектов. Она работала стабильно, проще устанавливалась, к ней имелась относительно хорошая документация, легкий для понимания интерфейс и она вела себя больше как операционная система. За пять лет своего существования, ROS имела семь релизов и за это время включила в себя огромный функционал: драйверы, алгоритмы, графические интерфейсы моделирования и парадигмы управления. ROS стала полезным инструментом для многих исследователей и ученых, которые поделились своим кодом с ROS сообществом.
Компоненты ROS
Рассмотрим каждый отдельный компонент ROS:
· Инфраструктура: ROS обеспечивает инфраструктуру коммуникации по схеме публикации-подписки сообщений (publish-subscribe messaging), предназначенную для быстрого и легкого построения распределенных вычислительных систем.
· Инструменты: ROS предоставляет широкий набор инструментов для настройки, запуска, самоанализа, отладки, визуализации, ведения списка событий, тестирования и остановки распределенной вычислительной системы.
· Возможности: ROS предоставляет широкий набор библиотек, реализующих полезные функции робота, с упором на мобильность, взаимодействие с предметами и восприятие окружающей среды.
· Сообщество: ROS поддерживается и совершенствуется многочисленным сообществом, при этом очень большое внимание уделяется интеграции и документации.
Одна из самых поразительных особенностей ROS заключается в том, что она работает больше как операционная система, нежели как приложение. Во всех интерфейсах моделирования и управления используется архитектура клиент-сервер;
В ROS используются узлы (nodes), которые подсоединяются к мастеру (roscore), и являются соответственно клиентами и сервером. Существует два очень популярных симулятора. 2D симулятор - Stage и 3D симулятор - Gazebo.
Для Stage в ROS используется обертка - stageros, которая встраивает Stage в узлы ROS.
Gazebo позволяет моделировать в 3D, и поэтому использовать его не так просто, как Stage. Gazebo требователен к модели видеокарты и ресурсам системы.
Изначально Willow Garage установили ROS в разработанные ими роботы PR2 и Turtlebot. За последние годы было приложено много усилий, чтобы сделать ROS более аппаратно независимой и сейчас многие любительские, исследовательские и даже коммерческие роботы используют ROS для управления. Ученые, предприниматели, любители и промышленники часто представляют свой собственный пакет ROS для моделирования и управления конкретным роботом.
В Turtlebot и Billibot используется устройство Microsoft Kinect и, кроме того, в ROS частично поддерживается ей подобное устройство Xtion ASUS. В ROS также есть пакет для Android, так что роботом можно управлять, используя только мобильный телефон.
Рисунок 4. Модель робота Turtlebot.
Вот далеко не полный список роботов, использующих ROS: PR2, Turtlebot, Corobot, Roomba, KUKA youBot, Care-OBot, LEGO Mindstorms, AscTec Pelican/Hummingbird, Shadow Robot и Billibot [7].
ROS представляет собой надстройку над ОС, которая позволяет легко и просто разрабатывать системы управления роботам [8] и. По сути, ROS - это набор из различных широко (и не очень) известных библиотек, таких как:
· OpenCV - библиотека, содержащая алгоритмы компьютерного зрения и обработки изображений c открытым исходным кодом. Она разрабатывается на С/С++, Python, Java и многих других языках;
· PCL (Point Cloud Library) - библиотека содержит множество алгоритмов для обработки 2D/3D изображений и облаков точек;
· OGRE (Object-Oriented Graphics Rendering Engine) - это обектно-ориентированный графический движок, написанный на С, с открытым исходным кодом. Он предназначен для упрощения и визуализации моделирования поведения робота;
· OROCOS (Open Robot Control Software) - библиотека для управления роботами, например, расчета кинематики;
· CARMEN (Carnegie Mellon Robot Navigation Toolkit) - библиотека для управления мобильными роботами. Она предназначена для выполнения базовых операций, необходимых мобильным роботам, таких как: сенсорное управление, обход препятствий, построение пути и создание карт.
· А также множество других полезных библиотек. Например, есть библиотека поддерживающая работу с Arduino. Помимо этого в ROS есть драйвера для различных манипуляторов, сенсоров (включая MS Kinect) и датчиков. Но что же отличает ROS от простой сборки библиотек? Основополагающим преимуществом является клиент-серверная архитектура ROS - разработчики реализовали механизм пересылки сообщений между различными объектами, возможность построения распределенных систем, ROS предоставляет интерфейсы для разработки программ на языках C++ и Python [9].
Файловая система ROS
Понятие уровня файловой системы в основном охватывают ресурсы ROS, которые Вы встретите на диске:
· Пакеты: На уровне файловой системы основным блоком для организации программного обеспечения в ROS является пакет. Пакет ROS может содержать исходные коды и исполняемые файлы узлов, библиотеки, описание сообщений и сервисов, базы данных, файлы конфигурации, и другие ресурсы, которые логично организовать вместе. Каждый пакет должен содержать файл манифеста, который предоставляет метаданные о пакете, включая сведения о лицензии и зависимостях, а также флаги компилятора и так далее. Цель такого структурирования совершенно прозрачна - повышение возможности повторного использования [10].
Структура пакета выглядит следующим образом:
1. bin/: скомпилированные бинарники
2. include/package_name: заголовочные файлы для C++ (обязательно должны описываться в manifest.xml!)
3. msg/: типы сообщений
4. src/package_name/: исходный код на С++ и скрипты на Python'е, экспортируемые в другие пакеты
5. srv/: типы сервисов, предоставляемых пакетом
6. scripts/: скрипты на Python'е
7. CMakeLists.txt: CMake файл для сборки пакета
8. manifest.xml: манифест пакета
9. mainpage.dox: Doxygen-документация
В свою очередь, пакеты объединяются в стэки. На картинке вы можете увидеть пример такой структуры [11].
· Метапакет: представляет собой группу связанных пакетов.
· Пакет Манифеста: Манифесты (package.xml) объединяют метаданные о пакете, включая имя, версию, описание, информацию о лицензиях, зависимости и другие экспортируемые пакеты (предоставляют пакеты для других пакетов).
· Хранилища: содержат коллекцию пакетов.
· Сообщение: хранятся в my_package/msg/MyMessageType.msg
· Сервисы: хранятся в my_package/srv/MyServiceType.srv, определяют запросы и структуры данных.
Все вышеперечисленное это статика ROS, о динамике в следующем разделе.
Вычислительный граф ROS
Уровень вычислительного графа - концепция представления данных в ROS в различных формах обработки. При работе ROS, строится «граф» - сеть точка-точка (peer-to-peer network) из процессов, которые связываются друг с другом через инфраструктуру ROS, пример на рис. Рисунок 5. Пример графа ROS.
Рисунок 5. Пример графа ROS.
Основные составляющие вычислительного графа ROS:
· Узлы - это процессы, которые выполняют вычисления. ROS представляет из себя модульную систему, система управления роботом обычно включает в себя множество узлов, направленных на выполнение определённых функций. Каждый узел управляет каким-либо процессом, например, один узел управляет лазерным дальномером, один узел управляет колесными двигателями, один узел выполняет локализацию, один узел выполняет планирование пути, один узел обеспечивает графическое представление системы, и так далее. Узел ROS написан с использованием клиентских библиотек ROS, таких как roscpp или rospy.
· ROS Мастер обеспечивает связь между узлами. Без мастера узлы не смогут найти друг друга, обмениваться сообщениями, или вызывать сервисы.
· Сообщения - Узлы взаимодействуют друг с другом путем передачи сообщений. Сообщение - это структура данных, состоящая из полей с указанием типа поля. Поддерживаются стандартные типы (целые числа, с плавающей точкой, логические, и т.д.), а также массивы. Сообщения могут включать произвольно вложенные структуры и массивы (подобно синтаксису языка C).
· Темы - сообщения направляются через транспортную систему с семантикой писатель/подписчик. Узел посылает сообщение, опубликовав его в той или иной теме. Тема - это имя, которое используется для идентификации содержимого сообщения. Узел, который заинтересован в определенного рода данных может подключиться к нужной теме. Тема может иметь более одного писателя и более одного подписчика, один узел может писать и/или подписаться на несколько тем. В общем, писатели и подписчики не знают о существовании друг друга. Идея состоит в том, чтобы отделить производство информации от его потребления. Можно представить тему как строго типизированную шину сообщений.
· Сервисы: модель тем является очень гибким средством коммуникации, но его принцип многие-многим не подходит для взаимодействий вида запрос/ответ, которые часто требуются в распределенной системе. Такие запросы осуществляются через сервисы, которые определяются с помощью пары структур сообщений: одна для запроса и одна для ответа. Узел предлагает услугу под общим именем, клиент использует услугу путем отправки сообщения с запросом и ожидает ответ [12].
Вычислительный граф вместе с пакетами образует систему ROS.
Навигационный стек ROS
Система навигации, использующаяся в ROS называется навигационным стеком. Он, как и многие узлы ROS, унифицирован, каждый робот нуждается в предварительной настройке, но дальнейшая работа с ним одинакова для многих роботов.
Навигационный стек преобразует входящие параметры робота, такие как одометрию, данные с сенсоров и использует ros topic для отправки сообщений о скорости роботу.
Общая схема работы навигационного стека изображена на рис. 6. Она довольно сложна, однако в ней можно выделить главные детали - «цель» маршрута обрабатывается глобальным планировщиком, который передает управление локальному планировщику, который уже присылает конкретные значения скоростей роботу.
Рисунок 6. Навигационный стек ROS.
Навигационный стек требует также, чтобы робот публиковал информацию о связях между координатами, используя сообщения библиотеки tf (transform).
1.2 Аппаратные средства разработки
В данном разделе описаны аппаратные устройства используемые в работе. Это роботы iRobot Create, Turtlebot, устройство Kinect и их описание в ROS.
Irobot Create
iRobot Create - робот, разработанный компанией iRobot на базе платформы робота-пылесоса Roomba. Представлен в 2007 году. Create предназначен для разработчиков роботов, позволяет программировать поведение робота. В отличие от Roomba, который так же (в моделях изготовленных после октября 2005 г.) имел средства программирования поведения, Create разработан специально для данных задач и имеет более широкие возможности.
Одним из отличий от робота Roomba является замена вакуумного оборудования (применяемого Roomba для осуществления уборки) на специальный отсек для полезной нагрузки, снабженный 25-контактным разъёмом, используемым для связи с устанавливаемым в отсек оборудованием путём передачи цифровых или аналоговых сигналов. Create поддерживает протокол iRobot Roomba Open Interface.
Подключаемые устройства
Для Create поставляются практически все дополнительные аксессуары, разработанные компанией iRobot для своих домашних роботов. Так же дополнительно поставляется «командный модуль» включающий микроконтроллер с интерфейсом USB и четырьмя дополнительными разъёмами с интерфейсом DE-9.
Робот Create может управляться внешним компьютером, что позволяет преодолеть проблемы связанные с ограниченной вычислительной мощностью и ограниченным объёмом памяти встроенного вычислителя «командного модуля». Для этих целей часто используются миниатюрные компьютеры Gumstix [13].
Kinect
Изначально, Kinect разрабатывался как игровой контроллер компанией Microsoft. Это небольшая прямоугольная коробка на круглом тонком основании. Kinect состоит из двух датчиков глубины, цветной видеокамеры, а также микрофона.
Благодаря своей ценовой доступности и открытому SDK Kinect стал популярным средством для разработки как различных программ для персональных компьютеров, так и роботов. При работе с роботом Kinect устанавливается прямо на мобильного робота и служит ему камерой, сканером глубины.
Рисунок 7. Внешний вид контроллера Kinect.
Kinect интегрируется в ROS с помощью драйверов openni. Openni это некоммерческая организация, созданная для сертификации новых пользовательских интерфейсов, ориентированных на бесконтактное взаимодействие с пользователем. В их разработки входят драйвера openni_camera, openni_tracker. Первый описывает камеру Kinect и устройств, подобных ему, второй описывает систему слежения за движением в поле видимости.
Turtlebot
Рисунок 8. Turtlebot как расширение iRobot Create.
Это робот, который может создавать 3D-карту окружающего пространства. Irobot Create "носит" на себе платформу Kinect, способную записывать данные об окружающей местности и переносить их в виде 3D-изображения в ваш компьютер, с помощью сенсоров сканирует обстановку и передает полученные данные. И всё это есть в TurtleBot [14].
TurtleBot с первого взгляда напоминает белую многоярусную табуретку, места на ярусах зарезервированы для ноутбука и сенсора Kinect. Грубо говоря, это мобильная база для создания собственного мобильного робота. Но TurtleBot - это не только железо, но ещё и TurtleBot SDK - комплект разработчика, в который входят практически все необходимые инструменты для того, чтобы заставить робота делать то, что вы от него хотите (кстати, ПО, которое в него входит, открытое и разработано в рамках сообщества ROS) [15].
1.3 Средства разработчика Turtlebot в ROS
ROS предоставляет множество средств для разработки и тестирования алгоритмов для робота Turtlebot:
· Симулятор gazebo - дает возможность запускать любую конфигурацию окружения и любых роботов.
· Пакет с описанием Turtlebot -модель робота turtlebot в обобщенном формате urdf, используемая как в симуляторе, так и при разработке на реальном роботе.
· Пакет с описанием iRobot Create - базовая платформа, на которой основан Turtlebot, именно она определяет конфигурацию движущейся платформы робота turtlebot, например можно включить или выключить дифференциал.
Специально для запуска робота Turtlebot в симуляторе gazebo существует метапакет ROS - turtlebot_gazebo. При запуске данного пакета необходимо также указать конфигурацию окружения gazebo, например
· roslaunch turtlebot_gazebo turtlebot_playground.launch
запускает Turtlebot в симуляторе с окружением playground, описанным в соответствующем файле запуска (launch/playground.launch) в пакете gazebo_worlds. При этом создаются нужные ros topic для управления движения роботом, в частности топик cmd_vel/input/navi, в который можно посылать сообщения, содержащие значения проекций скоростей, а также угловую скорость, для задания движения робота.
Аналогично, для запуска навигации существует метапакет turtlebot_navigation, который добавляет в пакет turtlebot_gazebo файлы запуска системы SLAM (simultaneous localization and mapping) и системы навигации AMCL, которая также называется навигационным стеком ROS.
Для управления роботом с устройств ввода существует пакет turtlebot_teleop. С помощью него можно, например, управлять роботом с клавиатуры. При таком способе управления сообщения приходят в ros topic /cmd_vel/input/teleop. Запустить управление можно таким образом:
· roslaunch turtlebot_teleop keyboard_teleop.launch
Для визуализации всевозможных сообщений ros topic используется средство rviz. Для Turtlebot создан специальный пакет turtlebot_rviz_launchers, в котором есть два файла запуска
· view_robot.launch - настроен на обзор робота
· view_navigation.launch - настроен на обзор карты и навигационных сообщений
Режим обзора карты позволяет также задавать настроенному навигационному стеку цель (точку на карте), до которой нужно проложить маршрут.
2. Алгоритмы построения пути
В литературе существует множество алгоритмов построения пути, способных обходить препятствия. В основном, эти алгоритмы сводятся к решению задачи о графах
· Поиск А*
· Алгоритм Дейкстры
· Волновой алгоритм
· Маршрутные алгоритмы
· Навигационная сетка (Navmesh)
· Иерархические алгоритмы
· Обход препятствий
· Разделяй и властвуй
· Алгоритм поворота Креша
Сложность построения пути в задаче для робота обусловлена инертностью робота и его нелинейными размерами, поэтому большинство алгоритмов планирования пути для роботов составляют и используют оценочную карту (costmap), которая определяет «стоимость» прохода робота в той или иной точке карты, чем выше стоимость, тем «дороже» траектория, проходящая через эту точку. На рис. 9 показана оценочная карта, синие участки - движение затруднено, красные - невозможно, серые - свободное движение, темно-серые - неизвестная территория.
Рисунок 9. Пример оценочной карты.
Вторая серьезная проблема, с которой сталкиваются алгоритмы прокладывания маршрута состоит в изменчивости окружающего пространства, например робот располагает статичной картой помещения, однако на ней не изображены временные объекты (человек, другой робот, оказавшиеся в помещении). Для решения этой задачи картографирование делится на две части: локальное и глобальное. Глобальная карта - это статическая карта местности, а локальная - составляется в процессе движения робота и учитывает текущее состояние окружающего пространства.
Также как и карта, разделяются планировщики пути: глобальный и локальный.
2.1 Выбор алгоритма кратчайшего прохода по точкам
Для решения классической задачи коммивояжера [16] существует множество приближенных методов, для построения маршрута для робота можно воспользоваться одними из наиболее простых - жадными методами, к примеру - метод ближайшего соседа. В задаче с препятствиями этот метод необходимо модернизировать - расстояние между 2 точками считается с учетом объезда препятствий.
Применение более сложных методов поиска пути даст выигрыш в редких случаях, однако будет гораздо больше нагружать вычислительные ресурсы робота. программный картографирование навигация тестирование
2.2 Алгоритм построения пути между двумя точками
Навигация в ROS разделяется на три отдельных модуля [17]:
· Глобальный планировщик маршрута
· Локальный планировщик маршрута
· Модуль выхода из тупиковых ситуаций
Глобальный планировщик создает общий план маршрута, разделив его на путевые точки а также передает этот план локальному планировщику.
Локальный планировщик это модуль, отвечающий за наиболее оптимальное перемещение робота между двумя путевыми точками, установленными глобальным планировщиком. Именно локальный планировщик содержит алгоритмы для прокладывания оптимального пути между препятствиями. В данной работе используется алгоритм динамического окна (DWA - dynamic window approach):
· Фазовое пространство управления движением робота разбивается дискретно (, , ).
· Для каждой отобранной скорости выполняется моделирование движения робота от текущего состояния, чтобы предсказать, что произойдет, если применять данные скорости в течение некоторого (короткого) периода времени.
· В результате моделирования каждая траектория оценивается, используя метрику, которая включает такие характеристики, как: близость к препятствиям, близость к цели, близость к глобальному пути и скорости. Отбрасываются траектории, ведущие к столкновению.
· Выбирается траектория с наибольшим значением метрики и значения скоростей отправляются роботу.
· Повторять алгоритм пока робот не достигнет точки цели.
Рисунок 10. Выбор траекторий алгоритма DWA.
Описанный алгоритм не предполагает указание скоростей в конечных точках маршрута, однако он допускает конфигурирование таких вещей как максимальные линейная и угловая скорость, ускорение, а также стоимости прохождения маршрута, позволяющие видоизменять генерируемые траектории.
Все эти настройки можно найти в пакете move_base разделе params в файле base_local_planner.xml.
2.3 Движение робота с указанием скоростей в точках
Навигация ROS предполагает движение точка-точка, при этом робот разгоняется и тормозит с ускорением a, его скорость не превышает .
Навигация ROS не предполагает задание скоростей в конечных точках маршрута, однако данное условие можно выполнить задавая точки косвенно. Например, чтобы иметь в точке О заданные скорость и направление, роботу нужно передать координаты точки О*, находящейся дальше по пути за точкой О, необходимо только рассчитать координаты этой точки.
Рисунок 11. Фиктивная точка пути для обеспечения скорости в заданной точке.
Рассчитаем эту точку, пусть координаты и скорости точки О соответственно (), тогда из кинематики:
Тогда координаты фиктивной точки рассчитываются следующим образом:
Учитывая, что:
Получим окончательные формулы:
При достижении роботом заданной точки, текущее задание - двигаться в фиктивную точку отменяется и робот продолжает движение к следующей точке маршрута.
Для того, чтобы обеспечить роботу необходимый разгон до точки О необходима не одна, а две фиктивные точки, как показано на рис. 12.
Рисунок 12. Точки, необходимые для разгона и остановки робота.
Тогда точки О0 и О1 будут симметричны относительно искомой точки О. Конечные формулы для двух точек:
Таким образом, робот успевает разогнаться до нужной скорости в точке О. Если одна или обе из точек О0, О1 находятся в недоступной области (препятствие), то нужна более сложная криволинейная траектория разгона или торможения, ее рассмотрение находится за пределами данной работы.
3. Программная реализация
Реализация алгоритма происходит в два этапа, первый включает в себя реализацию алгоритма и его тестирование в рамках программной симуляции, запуск алгоритма на реальном роботе и его корректировка - будущий этап.
Для работы алгоритма как в симуляторе, так и на реальном роботе используется общая платформа ROS. Моделирование алгоритма производится в 4 этапа:
1. Запуск симуляции робота в симуляторе gazebo.
2. Составление карты территории.
3. Запуск модуля навигации.
4. Запуск разрабатываемого алгоритма.
В данной главе будут детально рассмотрены эти пункты.
3.1 Настройка среды для симуляции робота
Для осуществления работы алгоритма на симуляции требуется установка операционной системы Ubuntu 12.04 и метапакета ROS, включая следующие пакеты:
· ros-hydro-turtlebot-* - все, что связано с роботом turtlebot;
· ros-hydro-gmapping - модуль картографирования
· gazebo - программа для симуляции
· rviz - визуализация сообщений робота (например, построенная карта)
Запуск симуляции производится следующими действиями:
· Запуск робота в среде gazebo (можно писать собственный launch скрипт или использовать существующие) roslaunch turtlebot_gazebo turtlebot_playground.launch
· Запуск управления роботом с клавиатуры roslaunch turtlebot_teleop keyboard_teleop.launch
Для выполнения алгоритмов, связанных с навигацией робота, необходимо также настроить навигационный стек ROS.
Рисунок 13. Симуляция робота в gazebo.
3.2 Модули картографирования и навигации
В данной работе используется стандартный модуль картографирования gmapping, работающий по технологии SLAM (simultaneous localization and mapping, одновременная локализация и картографирование). Данная технология позволяет роботу, имеющему устройство лазерного сканирования, одновременно и составлять карту, и определять свое местоположение на карте. Пример карты показан на рис. 14.
Рисунок 14. Пример работы модуля картографии.
Модуль картографирования может работать как с симуляцией, так и с реальным роботом. Запуск программы gmapping для симуляции turtlebot производится следующим образом
Ш roslaunch turtlebot_gazebo gmapping_demo.launch
После запуска данной программы роботу необходимо обследовать территорию (вручную или в автоматическом режиме), чтобы составить карту, визуализировать карту можно программой rviz следующим образом:
Ш roslaunch turtlebot_rviz_launchers view_navigation.launch
После того, как карта составлена, ее необходимо сохранить на диск:
Ш rosrun map_server map_saver -f /tmp/map
Полученную карту можно использовать для работы модуля навигации, выполнив команду:
Ш roslaunch turtlebot_gazebo amcl_demo.launch map_file:=/tmp/map.yaml
Далее можно запускать программы, использующие навигацию ROS.
3.3 Запуск и тестирование алгоритма
Для того, чтобы запустить реализованный алгоритм необходимо наличие программы-сборщика catkin и его рабочего пространства. Проект собирается в пакет ROS и может быть запущен следующим образом [18]:
Ш ~/catkin_ws/ > catkin_make --pkg turtlebot_navigation_velocities
Ш rosrun turtlebot_navigation_velocities turtlebot_navigation_velocities
Проект строит оптимальный маршрут для робота по главе 3, чтобы удовлетворить условия заданных в точках скоростей, затем дает команды роботу для прохождения этого маршрута. В данном проекте для упрощения используется библиотека Actionlib [19], которая упрощает взаимодействие программы с роботом, в частности инкапсулирует отправку различных сообщений в rostopic. Тестирование алгоритма проводилось с помощью замеров скорости в точках пути и сравнении их с заданными. Замеры скорости и угла производились посредством чтения соответствующего ros topic. Результаты измерений показаны на рис. 15.
Рисунок 15. Результаты тестирования алгоритма, расхождение с заданными параметрами.
По результатам моделирования робот принимает необходимую скорость в заданных точках со средним отклонением скорости 4.7%, угла 2.6%, кроме описанных случаев, если одна из фиктивных точек недоступна для робота. В таких случаях требуется построение более сложной криволинейной траектории и выходит за рамки данной работы.
Заключение
Разработка алгоритмов навигации мобильных роботов является актуальной и новой задачей в сфере робототехники. Актуальность работы обусловлена широким распространением мобильных роботов именно в последние годы.
В настоящее время выполнено большое число исследований связанных с разработкой управления мобильных роботов, в них входят как составление карты, так и построение оптимального маршрута, однако мало внимания уделено траекториям с ограничениями по скорости в конкретных точках.
В данной работе было проведено исследование операционной системы ROS для разработки роботов, детально исследованы многие ее аспекты, в большей степени изучена работа системы навигации, разработки модулей, системы rostopic.
Также была изучена теория аппаратной части робота turtlebot, в частности конфигурация модели робота, настройка базовой движущейся платформы, а также средства сканирования окружающего пространства (kinect).
Был проведен обзор алгоритмов, используемых в навигации для построения маршрута с огибанием препятствий.
Также была решена задача построения маршрута через последовательность заданных точек с заданными скоростями в этих точках, алгоритм был сформулирован и рассчитан, а также запрограммирован и протестирован в симуляторе gazebo.
Результаты моделирования показывают, что робот успешно выполняет заданные условия на проекции скоростей во всех случаях кроме близкого расположения маршрутной точки к препятствию.
Дальнейшие исследования предполагают разбор случаев, в которых маршрутные точки находятся близко к препятствиям, а также тестирование алгоритмов на реальном роботе.
Список литературы
1. П. Брунарский, «Обучение мобильного робота движению по траектории со сложными ограничениями» - Москва, 2013.
2. С. Бурдаков, И. Мирошник и Р. Стельмаков, «Системы управления движением колесных роботов» - Наука - СПб, 2001.
3. И. Мирошник, В. Никифоров и А. Фрадков, «Нелинейное и адаптивное управление сложными динамическими системами» - Наука - СПб, 2000.
Размещено на Allbest.ru
...Подобные документы
Классификация навигационных систем; телевизионная, оптическая, индукционная и радиационная системы измерения угловых координат. Системы измерения дальности и скорости, поиска и обнаружения. Разработка и реализация системы навигации мобильного робота.
дипломная работа [457,8 K], добавлен 10.06.2010Исследование среды IAR Embendded Workbench для контроллера NEC 78K. Изучение комплекса программно-аппаратных средств, предназначенных для отладки программ для микроконтроллеров фирмы "NEC". Программирование флэш-памяти контроллера с помощью утилиты FPL.
лабораторная работа [1,3 M], добавлен 29.09.2014Существующие разработки змеевидных роботов и их природные прототипы: движение змей в природе, его механизация. Змеевидный робот Кевина Доулинга и Дору Михалачи, принципы управления ими. Разработка системы управления для змеевидного робота – "Змеелок".
дипломная работа [4,3 M], добавлен 03.02.2012Принцип работы фотодатчика, свойство поверхностей отражать падающий на них свет. Подключение резистора в эмиттерную цепь транзистора. Алгоритм движения робота, программы для следования робота по линии, для движения устройства моторами вперед и назад.
курсовая работа [142,0 K], добавлен 30.01.2013Изучение систем управления цветом. Анализ проблем полиграфии, связанных с работой со цветом. Изучение основных принципов калибровки мониторов. Обзор существующих программных и аппаратных средств калибровки мониторов. Нелинейность монитора-колориметра.
курсовая работа [691,3 K], добавлен 09.02.2013Что такое робот, истоки робототехники и классификация роботов. Проектирование робота для разминирования различных технических объектов. Технические расчеты движения и координирования руки и различных сил действующих на нее, особенности корпуса и головы.
курсовая работа [128,0 K], добавлен 12.08.2010Эффективность применения средств комплексной автоматизации производственных процессов. Принципы построения робототехнических систем. Степени подвижности манипулятора робота. Критерии компактности и классификационные признаки промышленных роботов.
дипломная работа [1,2 M], добавлен 28.09.2015Исследование мультиагентных систем. Разработка мобильного робота. Определение силы сопротивления движению. Скорость вращения двигателя при номинальной нагрузке. Передаточное число редуктора и ременной передачи. Тиристорный преобразователь напряжения.
курсовая работа [2,5 M], добавлен 25.06.2013Знакомство с проблемами разработки технологии планировки предприятия по ремонту радиоэлектронной техники. Этапы расчета штатного состава радиомехаников. Способы построение алгоритма поиска неисправного функционального элемента инженерным методом.
дипломная работа [2,0 M], добавлен 21.05.2015Использование аппаратных и программных средств в устройствах обработки информации. Организация взаимодействия устройств, входящих в систему, при помощи микропроцессора. Описание микроконтроллера, процессорного блока, адаптера параллельного интерфейса.
курсовая работа [515,2 K], добавлен 18.09.2010Описание интегратора первого порядка. Обзор микроконтроллера AТmega16. Доопределение набора аппаратных средств. Схема включения микроконтроллера. Формирование тактовых импульсов. Организация сброса. Алгоритм работы и проектирование модулей устройства.
курсовая работа [1,1 M], добавлен 19.12.2010Изучение организации связи в мультисервисной сети, технические характеристики оборудования, структура аппаратных средств и программного обеспечения. Построение схемы мультисервисной сети на базе цифровой коммутационной системы HiPath 4000 фирмы Siemens.
дипломная работа [3,2 M], добавлен 25.04.2012Разработка аппаратных и программных средств для реализации цифрового термометра. Выбор способа измерения температуры. Функциональные возможности преобразователя DS18B20. Возможность использования LCD дисплея без подсветки и семисегментного индикатора.
курсовая работа [2,2 M], добавлен 15.01.2013Принципы обеспечения безопасности частной информации на мобильных устройствах. Анализ существующих программных средств, предназначенных для обмена частной информацией. Разработка программного средства, построенного на отечественных алгоритмах шифрования.
курсовая работа [1,0 M], добавлен 22.09.2016Разработка микропроцессорной системы на основе микроконтроллера. Методы и средства совместной отладки аппаратных и программных средств. Структурная схема и функциональная спецификация устройства - регулятора яркости ламп накаливания. Алгоритм управления.
дипломная работа [1,4 M], добавлен 15.07.2010Исходные данные для разработки цикловой системы управления и проектирования усилителей управляющих сигналов. Блок-схема алгоритма работы системы управления пятью гидроцилиндрами промышленного робота. Принцип работы схемы и расчет силовых ключей.
курсовая работа [136,0 K], добавлен 08.06.2014Линейная производственная диспетчерская станция "Черкассы". Разработка системы автоматизации магистрального насосного агрегата на основе программных, аппаратных средств. Использование языка ST программы ISaGRAF в качестве программного обеспечения проекта.
дипломная работа [2,9 M], добавлен 22.04.2015Обзор ситуации программных и аппаратных средств на рынке аварийных регистраторов. Архитектура AVR, ее особенности и принцип действия. Краткое описание флэш-накопителя AT45DB161. Алгоритм работы цикла основной подпрограммы и подпрограммы FIFO буфера.
дипломная работа [1,7 M], добавлен 01.03.2015Разработка микропроцессорной системы на основе микроконтроллера. Проектирование аппаратных средств. Характеристика этапов разработки многофункциональных астрономических часов: функциональная схема, алгоритм управления, описание и расчет элементной базы.
дипломная работа [6,9 M], добавлен 14.07.2010Изучение истории появления спутниковой навигации. Исследование принципов работы GPS в околоземном пространстве. Анализ особенностей технической реализации и применения системы. Наземные станции контроля космического сегмента. GPS приемники и навигаторы.
презентация [2,2 M], добавлен 08.06.2016