СИСТЕМА РЕАЛЬНОГО ВРЕМЕНИ ДЛЯ УПРАВЛЕНИЯ МОБИЛЬНЫМ РОБОТОМ

Научная статья
DOI:
https://doi.org/10.23670/IRJ.2019.90.12.011
Выпуск: № 12 (90), 2019
Опубликована:
2019/12/18
PDF

СИСТЕМА РЕАЛЬНОГО ВРЕМЕНИ ДЛЯ УПРАВЛЕНИЯ МОБИЛЬНЫМ РОБОТОМ

Научная статья

Пономарев Д.А.1, Кузьмина Т.О.2, *

2 ORCID: 0000-0002-1485-837X;

1, 2 Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» им. В.И. Ульянова (Ленина) Санкт-Петербург, Россия

* Корреспондирующий автор (taniasun1[at]mail.ru)

Аннотация

Данная работа посвящена разработке системы реального времени для управления мобильным роботом. Система позволяет осуществлять телеуправление робота, либо его автономное движение к поставленной пользователем цели с объездом препятствий, с одновременными локализацией и построением карты.

Управление приводом и одометрия реализованы на плате stm32f7 nucleo с использованием операционной системы реального времени ChibiOS, а навигация на одноплатном компьютере raspberry PI 2B на основе пакетов ROS, таких как move_base, gmapping и различных драйверов для взаимодействия с датчиками и микроконтроллером. Разработка включает в себя также реализацию режима симуляции с помощью пакетов gazebo_ros.

Разработанная система управления была протестирована в симуляторе, а затем в помещении - поставленные ей задачи были успешно выполнены.

Ключевые слова: система управления, ROS, одновременная локализация и построение карты, навигация мобильного робота.

SYSTEM FOR REAL-TIME MOBILE ROBOT CONTROL

Research article

Ponomarev D.A.1, Kuzmina T.O.2, *

2 ORCID: 0000-0002-1485-837X;

1, 2 St. Petersburg Electrotechnical University "LETI" (SPbETU "LETI"), Saint-Petersburg, Russia

* Corresponding author (taniasun1[at]mail.ru)

Abstract

This work is devoted to the development of a system for real-time mobile robot control. The system allows remote control of a robot, or its autonomous movement to the destination real-time by a user with a detour of obstacles, with simultaneous localization and map building.

Drive control and odometry are implemented on the stm32f7 nucleo board using the ChibiOS real-time operating system, and navigation on the raspberry PI 2B single-board computer is based on ROS packages such as move_base, gmapping and various drivers for interacting with sensors and the microcontroller. Development also includes the implementation of a simulation mode using gazebo_ros packages.

The developed control system was tested in the simulator, and then indoors – the tasks assigned to it were successfully completed.

Keywords: control system, ROS, simultaneous localization and map building, navigation of a mobile robot.

В робототехнике существуют следующие проблемы:

  1. Слишком много времени уделяется для реализации программной инфраструктуры для создания сложных алгоритмов робототехники.
  2. Слишком мало времени уделяется созданию интеллектуальных робототехнических систем на основе разработанных инфраструктур [1].

Как следствие из этих проблем, в мире программного обеспечения с открытым исходным кодом появился такой фреймворк, как ROS, который включает в себя огромное количество пакетов, реализующих те или иные функции в области робототехники, начиная от драйверов различных устройств, заканчивая стеком навигации [2].

Использование готовых пакетов, помимо решения указанных выше проблем, также позволяет значительно сократить время разработки[3], а значит и стоимость мобильного робота.

Обратная сторона использования ROS, как унифицированного решения, заключается, как предполагается, в сниженной производительности итоговой системы.

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

Описание объекта управления

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

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

Структурная схема соединения устройств представлена на рисунке 1.

 

04-01-2020 14-28-27

Рис. 1 – Структурная схема мобильного робота

Примечание: набор используемых устройств представлен в таблице 1  

Таблица 1 – Используемые устройства

Тип устройств Устройства
Датчики Лидар ydlidar x4, 2 энкодера
Привод 2 ДПТ GM25-370
Вычислительные устройства raspberry PI 2B, stm32f7 nucleo
Система питания Аккумуляторы на 14.8 и 5 В и силовой драйвер
Передача данных WiFi адаптер TL-WN823N
Примечание: измерения характеристик мобильного робота представлены в таблице 2  

Таблица 2 – Характеристики робота

Характеристика Величина Единица измерения
Длина робота 0.30 м
Ширина робота 0.30 м
Высота робота 0.28 м
Расстояние между гусеницами 0.23 м
Минимальная линейная скорость 0.1 м/с
Максимальная линейная скорость 0.15 м/с
Минимальная вращательная скорость 1 рад/с
Максимальная вращательная скорость 0.5 рад/с
 

Система управления роботом имеет иерархическую организацию и состоит из следующих уровней

  1. Система управления высокого уровня: обработка данных датчиков, расчет кинематической траектории движения робота и генерация команд скорости. В данной работе именуется стеком навигации.
  2. Система управления приводом, которая отвечает за четкое выполнение команды скорости.

Первый уровень выполняется на одноплатном компьютере с помощью соответствующих пакетов ROS. Система управления приводом реализована на микроконтроллере.

Стек навигации

Для осуществления навигации, т.е. вычисления оптимального маршрута проезда до заданной цели и последующего ведения по нему мобильного робота, используется пакет move_base. Этот пакет связывает работу двух плагинов: локального и глобального планировщиков [4].

Работу глобального планировщика описывает интерфейс nav_core::BaseGlobalPlanner. В качестве глобального планировщика в документации ROS предлагаются такие планеры, как global_planner, navfn и carrot_planner. В данной работе используется navfn. Этот планировщик с помощью алгоритма Дейкстры, используя глобальную карту стоимости, находит план движения от исходной позиции к конечной с минимальной стоимостью [5].

Работу локального планировщика описывает интерфейс nav_core::BaseLocalPlanner. Предлагаются такие планеры, как base_local_planner, dwa_local_planner, eband_local_planner и teb_local_planner. В данной работе используется dwa_local_planner. Планировщик, основанный на подходе динамического окна, получая глобальный план и карту стоимости, рассчитывает кинематическую траекторию и генерирует значение скорости, которое затем отправляется мобильному роботу. Алгоритм можно описать следующим образом:

  1. Дискретная выборка возможных линейных и угловой скоростей.
  2. Для каждой выборки выполнение симуляции вперед на короткий промежуток времени.
  3. Расчет эффективности каждого траектории движения, исключая траектории, в которых робот сталкивается с препятствием.
  4. Выбор наиболее эффективной траектории и отправка команды скорости роботу.
  5. Повторение цикла заново [6].

Построение карт стоимости можно выполнять с помощью таких пакетов, как hector_mapping и gmapping. Первый пакет использует для построения карты только данные с лидара. Второй пакет также дополнительно использует данные одометрии [7]. Поскольку в данной работе модуль одометрии присутствует, для повышения точности системы используется пакет gmapping.

Таким образом, пакет gmapping и локальный планировщик получают данные с соответствующих датчиков:

- лидар публикует информацию об окружающей среде в формате sensor_msgs/LaserScan в топик /scan.

- микроконтроллер считывает с энкодеров данные одометрии и  затем в формате nav_msgs/Odometry публикует их в топик /odom.

После обработки этих данных, публикуется команда скорости формата geometry_msgs/Twist в топик /cmd_vel.

Взаимодействие узлов стека навигации упрощенно можно представить в виде схемы, представленной на рисунке 2 [9].

04-01-2020 14-29-47

Рис. 2 – Иллюстрация стека навигации

 

На рисунке 2 эллипсы - узлы, а прямоугольниках - топики.

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

04-01-2020 14-30-55

Рис. 3 – Высокоуровневый контур управления движения роботом

 

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

Система управления приводом

Задача системы управления приводом - задавать и поддерживать скорость, полученную от высокоуровнего контура. Формат команд скорости определяется ROS - geom_msgs/Twist[8]. Поскольку движение происходит в двумерном пространстве, нас интересуют только следующие составляющие данного формата: float64 linear x, angular z.

Систему управления приводом можно представить на рисунке 4.

04-01-2020 14-31-07

Рис. 4 – Низкоуровневый контур управления приводами

 

Для того, чтобы система управления приводом поддерживала желаемую скорость, необходимо решить уравнения движения робота, иными словами найти соответствие между желаемой скоростью робота и требуемыми значениями скоростей генерации импульсов энкодерами и значениями скважности ШИМ каждого из двигателей.

Линейная скорость робота, которая соответствует полю linear.x структуры geom_msgs/Twist, определяется по формуле

  04-01-2020 14-34-13     (1)

где vx - линейная скорость робота;

вi - скорость генерации импульсов -ого энкодера.

M - константа, полученная опытным путем, которая учитывает количество импульсов, приходящих на один оборот энкодера - 300 импульсов, радиус вала, а также силу трения.

Вращательная составляющая скорости робота, которая соответствует полю angular.z экземпляра структуры geom_msgs/Twist, определяется следующим образом

  04-01-2020 14-34-22     (2)

где wz - вращательная составляющая скорости робота;

L - расстояние между гусеницами.

Данные скорости, рассчитанные по формулам (1) и (2), используются только внутри микроконтроллера ПИ-регуляторами для определения значения скважности ШИМ двигателей.

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

Среди типов движения робота выделяются следующие:

  1. Прямолинейное движение, при котором значение поля angular.z равно нулю, а linear.x отлично от нуля. Требуется, чтобы скорость вращения гусениц, т.е. скорость генерации импульсов энкодеров, совпадали по значению и равнялись заданной скорости движения робота.
  2. Вращательное движение на месте, при котором значение поля linear.x равно нулю, а angular.z отлично от нуля. Требуется, чтобы скорости вращения гусениц совпали по модулю, но были противоположны по направлению.
  3. Криволинейное движение, при котором значения обоих полей отличны от нуля. Наиболее сложный вид движения.

С учетом формул (1) и (2) можно рассчитать требуемую скорость генерации импульсов каждого из энкодеров следующим образом:

04-01-2020 14-34-32    (3)

Рассчитанные скорости генерации импульсов используются как входы ПИ-регуляторов.

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

Поля структуры следующие:

- float x;

- float y;

- float dir.

Пройденный путь каждой гусеницы за время Δt рассчитывается

04-01-2020 14-41-51   (4)

где 04-01-2020 14-43-08 - пройденный путь i-ой гусеницы за время Δt;

04-01-2020 14-48-28 - текущее количество импульсов на i-ом энкодере;

04-01-2020 14-49-01 - прошлое количество импульсов на i-ом энкодере.

Путь ΔS, пройденный роботом, рассчитывается, как среднее арифметическое путей, пройденных каждой гусеницей.

Тогда изменение угла робота в декартовой системе координат за время Δt определяются системой

04-01-2020 14-50-39   (5)

где 04-01-2020 14-51-58 - изменение угла поворота робота;

04-01-2020 14-52-04- изменение положение робота по оси абсцисс;

04-01-2020 14-52-10- изменение положение робота по оси ординат.

Для оценки эффективности разработанной системы управления нижнего уровня, в частности подобранных коэффициентов регулятора, были проведены теоретические и практические тесты, в ходе которых последовательно раз в 2 секунды подавались команды с желаемыми скоростями: максимальная скорость вперед, максимальная скорость назад, остановка, повороты сначала влево, затем вправо на минимальной скорости, остановка.

Результаты теоретического тестирования регулятора в виде графиков переходных процессов представлены на рисунке 5.

04-01-2020 14-59-32

Рис. 5 – Теоретическое тестирование ПИ-регулятора последовательным изменением задаваемых скоростей

  Результаты тестирования регулятора на реальном роботе представлены на рисунке 6.

04-01-2020 14-59-48

Рис. 6 – Тестирование ПИ-регулятора на реальном роботе последовательным изменением задаваемых скоростей

 

Красные линии соответствуют задаваемым линейной и угловой скоростям, а синие - фактические значения параметров робота: линейная и угловая скорости робота, скорости генерации импульсов энкодеров и скважности ШИМ двигателей.

Как видно из графиков, полученных при реальных тестах, время переходных процессов по скорости робота, скорости энкодеров и мощности двигателей, при задании скорости из состояния покоя, меньше секунды, а перерегулирование меньше 5%. В система присутствует небольшая колебательность, которая в основном связана с дискретностью показаний энкодеров.

Отличие теоретических графиков от реальных объясняется нелинейностями, присутствующими в реальном роботе.

Для системы управления нижнего уровня, в целях тестирования работы стека навигации, жесткие требования к качеству переходного процесса не ставились.

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

Тестирование разработанной системы управления

Тестирование разработанной системы управления мобильным роботом проводилось в 2 этапа: сначала симуляция с помощью пакетов gazebo_ros, затем реальный тест в помещении.

Для получения максимального эффекта от тестирования модели в режиме симуляции код программного обеспечения был разделен на 4 части:

  1. Конфигурация робота - модули, запускаемые исключительно на роботе: драйвер лидара ydlidar_ros, узел rosserial_python, запускающий взаимодействие raspberry PI и микроконтроллера, статические преобразование tf и другое.
  2. Симуляция конфигурации робота - модули, запускаемые исключительно на компьютере, которые симулируют работу устройств.

В качестве модели робота используется модель робота burger из пакета turtlebot3.

  1. Стек навигации - модули, которые могут запускаться как на компьютере, так и на мобильном роботе. К ним относятся gmapping и move_base. В первом случае будет включен полноценный режим симуляции, во втором - рабочий режим.
  2. 3D визуализация данных датчиков и генерация задания роботу - запускается на компьютере.

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

Иллюстрация взаимодействия частей такой системы представлена на рисунке 7.

 

04-01-2020 15-00-06

Рис. 7 – Принцип взаимодействия модулей программы

 

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

Пример созданного мира размером 10 на 10 метров в симуляторе Gazebo представлен на рисунке 8.

04-01-2020 15-00-16

Рис. 8 – Тестовый мир 10 на 10 метров в симуляторе gazebo

На рисунке 9 показаны изображения экрана инструмента 3Д визуализации rviz в различные моменты движения робота от начальной позиции к желаемой.

Черным цветом обозначены препятствия, а области темно-серого цвета вокруг препятствий - это препятствия с учетом радиуса инфляции, принятым 0.5 метра. Они входят в расчет стоимости пути робота. Красная линия - это путь, рассчитанный глобальным планером. Зеленая линия - путь, рассчитанный локальным планером.

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

Сравнивая мир, используемый для симуляции, и карту, построенную роботом, можно сделать вывод об успешности выполнения симуляции.

   

04-01-2020 15-05-42

Рис. 9 – Движение робота к заданной позиции в симуляторе а) исходная позиция, б) постановка цели и начало движения, в) робот в процессе движения, г) конечная позиция

 

После завершения тестирования системы управления в режиме симуляции и тестирование отдельных низкоуровневых модулей на реальном роботе, например, тест ПИ-регулятора, был проведен ряд тестов реального робота в помещении.

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

 

04-01-2020 15-06-02

Рис. 10 – Построенная роботом карта

 

При тестировании уделялось внимание загрузке процессора raspberry PI. На рисунке 11 представлен график загрузки процессора, полученный при выполнении задачи навигации. Первые 10 секунд робот находился в состоянии покоя, оставшееся время осуществлял движение.

04-01-2020 15-06-14

Рис. 11 – Загрузка процессора raspberry PI

 

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

Таким образом, тестирование показало, что разработанная система успешно выполняет поставленные задачи.

Заключение

Разработанная система управления с использованием пакетов ROS была успешно протестирована и в режиме симуляции с помощью gazebo_ros, и на реальном роботе.

Результаты тестирования показали, что стек навигации мобильного робота вполне может работать на современных бюджетных вычислительных устройствах, таких как одноплатный компьютер raspberry PI 2B, при этом даже получилось сохранить некоторый запас по производительности. При этом ROS значительно экономит время: конфигурация стека и соединение узлов выполняется довольно быстро, а симуляция с помощью пакета gazebo_ros позволяет минимально взаимодействовать с аппаратной составляющей робота.

Из этого можно сделать вывод, что ROS очень хорошо подходит для разработки различных алгоритмов для роботов, а также для проведения исследований в области робототехники.

В ходе знакомства с ROS, разработки и тестирования системы было также замечено, что ROS использует не защищенные протоколы передачи данных, а попытка протокол сделать универсальным привела к тому, что, например, в данной работе пакет rosserial, связывающий микроконтроллер с raspberry PI, нагружал процессор на 10%, что довольно много. Также выяснилось, что ROS не гарантирует реального времени. Такие недостатки делают применение ROS для коммерческих проектов, а также в областях, где требуется высокая надежность, нежелательным. Тем не менее, данные проблемы решаются в ROS2 [10].

Конфликт интересов Не указан. Conflict of Interest None declared.

Список литературы / References

  1. Tellez R. A History of ROS (Robot Operating System) [Электронный ресурс]/ R. Tellers // The construct for ROS developer – 2019. – URL: https://www.theconstructsim.com/history-ros/ (дата обращения: 07.11.2019).
  2. ROS/Introduction [Electronic resource] // ROS documentation. – 2018. – URL: http://wiki.ros.org/ROS/Introduction (accessed: 15.11.2019).
  3. Каржаув А. OpenAI Gym+ROS+Gazebo: обучение автономного робота в домашних условиях. Часть 1 [Электронный ресурс] / А. Каржаув // Habr. – 2019. URL: https://habr.com/ru/post/441218/ (дата обращения: 18.10.2019).
  4. move_base [Electronic resource] // ROS documentation. – 2018. – URL: https://wiki.ros.org/move_base (accessed: 28.09.2019).
  5. navfn [Electronic resource] // ROS documentation. – 2018. – URL: https://wiki.ros.org/navfn (accessed: 28.10.2019).
  6. dwa local planner [Electronic resource] // ROS documentation. – 2018. – URL: https://wiki.ros.org/dwa_local_planner (accessed: 28.10.2019).
  7. gmapping [Electronic resource] // ROS documentation. – 2018. – URL: http://wiki.ros.org/gmapping (accessed: 18.09.2019).
  8. geometry_msgs/Twist Message [Electronic resource] // ROS documentation. – 2018. – URL: https://docs.ros.org/api/geometry_msgs/html/msg/Twist.html (accessed: 18.09.2019).
  9. Setup and Configuration of the Navigation Stack on a Robot [Electronic resource]// ROS documentation. – 2018. – URL: http://wiki.ros.org/navigation/Tutorials/RobotSetup (accessed: 18.09.2019).
  10. Changes between ROS 1 and ROS 2 [Electronic resource] // ROS 2 Design. – 2019. – URL: https://design.ros2.org/articles/changes.html (accessed: 13.11.2019).

Список литературы на английском языке/References in English

  1. Tellez R. A History of ROS (Robot Operating System) [Electronic resource]/ R. Tellers // The construct for ROS developer – 2019. – URL: https://www.theconstructsim.com/history-ros/ (accessed: 07.11.2019).
  2. ROS/Introduction [Electronic resource] // ROS documentation. – 2018. – URL: http://wiki.ros.org/ROS/Introduction (accessed: 15.11.2019).
  3. Karzhauv A. OpenAI Gym+ROS+Gazebo: obuchenie avtonomnogo robota v domashnih uslovijah. Chast' 1 [OpenAI Gym+ROS+Gazebo: OpenAI Gym + ROS + Gazebo: training an autonomous robot at home. Part 1][Electronic resource] / A. Karzhauv // Habr. – 2019. URL: https://habr.com/ru/post/441218/ (accessed: 18.10.2019) [in Russian]
  4. move_base [Electronic resource] // ROS documentation. – 2018. – URL: https://wiki.ros.org/move_base (accessed: 28.09.2019).
  5. navfn [Electronic resource] // ROS documentation. – 2018. – URL: https://wiki.ros.org/navfn (accessed: 28.10.2019).
  6. dwa local planner [Electronic resource] // ROS documentation. – 2018. – URL: https://wiki.ros.org/dwa_local_planner (accessed: 28.10.2019).
  7. gmapping [Electronic resource] // ROS documentation. – 2018. – URL: http://wiki.ros.org/gmapping (accessed: 18.09.2019).
  8. geometry_msgs/Twist Message [Electronic resource] // ROS documentation. – 2018. – URL: https://docs.ros.org/api/geometry_msgs/html/msg/Twist.html (accessed: 18.09.2019).
  9. Setup and Configuration of the Navigation Stack on a Robot [Electronic resource]// ROS documentation. – 2018. – URL: http://wiki.ros.org/navigation/Tutorials/RobotSetup (accessed: 18.09.2019).
  10. Changes between ROS 1 and ROS 2 [Electronic resource] // ROS 2 Design. – 2019. – URL: https://design.ros2.org/articles/changes.html (accessed: 13.11.2019).