Национальный исследовательский ядерный университет «МИФИ» Институт Интеллектуальных Кибернетических Систем Кафедра «Компьютерные системы и технологии» Отчёт по дисциплине «Моделирование робототехнических устройств» Работу выполнил: Аношин П.В Преподаватель: Гриднев А.А Москва 2022 г. Техническое задание “Грузовой робот” по дисциплине “Моделирование робототехнических устройств” Студента Аношина П.В. группы М21-В01 год 2022 Цель: Спроектировать и разработать программное обеспечение для грузового робота. Спроектировать модель робота. Робот должен обнаруживать человека перед собой при помощи камеры и следовать за ним на определенном расстоянии. Робот должен распознавать голосовые команды. Задание: 1) Провести аналитический обзор 2) Разработка спецификации и модели робота (тележка с датчиками, которые использует ПО разработанное в ходе ИС / спецификация оборудования). 3) Разработка модели мира. 4) Тестирование работы модели робота в модели мира. 5) Тестирование управляющего ПО (разработанного в рамках курса ИС) на модели робота в модели мира. 6) Составление краткого отчёта о проделанной работе. Руководитель: Гриднев А.А. 2 Оглавление Обзорная часть......................................................................................................... 5 Обзор существующих роботов ............................................................................ 10 Спецификации модели робота ................... Ошибка! Закладка не определена. Разработка модели мира ....................................................................................... 14 Тестирование робота в модели мира ................................................................... 16 Разработка управляющего ПО ............................................................................. 19 Тестирование управляющего ПО разработанного робота в модели мира ...... 23 ЗАКЛЮЧЕНИЕ ..................................................................................................... 26 Список литературы ............................................................................................... 28 3 Введение Постановка задачи Спроектировать и разработать программное обеспечение для грузового робота. Спроектировать модель робота. Робот должен обнаруживать человека перед собой при помощи камеры и следовать за ним на определенном расстоянии. Робот должен распознавать голосовые команды. Цель работы Спроектировать и разработать программное обеспечение для грузового робота. Спроектировать модель робота. Робот должен обнаруживать человека перед собой при помощи камеры и следовать за ним на определенном расстоянии. Робот должен распознавать голосовые команды. 4 Обзорная часть Gazebo - это 3D-симулятор робототехники с открытым исходным кодом. Gazebo была составной частью проекта Player с 2004 по 2011 год. В Gazebo интегрирован физический движок ODE, рендеринг OpenGL и код поддержки для моделирования датчиков и управления приводом. Gazebo может использовать несколько высокопроизводительных физических движков, таких как ODE, Bullet и т.д. (По умолчанию используется ODE). Он может моделировать датчики, которые "видят" моделируемую среду, такие как лазерные дальномеры, камеры (в том числе широкоугольные), датчики в стиле Kinect и т.д. Gazebo обладает возможностями: Динамической симуляции (наличие доступа к нескольким высокопроизводительным физическим движкам, включая ODE, Bullet, Simbody и DART.) Поддержки 3D графики (используя OGRE, Gazebo обеспечивает реалистичную визуализацию окружающей среды, включая высококачественное освещение, тени и текстуры.) Поддержки датчиков (генерируйте данные датчиков, необязательно с шумом, от лазерных дальномеров, 2D / 3D камер, датчиков в стиле Kinect, контактных датчиков, датчиков силы и крутящего момента и многого другого.) Разработки пользовательских плагинов (поддерживает пользовательские плагины для роботов, датчиков и контроля окружающей среды. Плагины обеспечивают прямой доступ к API Gazebo.) Поддержки готовых моделей роботов (поддерживается множество как готовых моделей роботов, так и имеется возможность создать свою модель робота.) Облачной симуляции (симуляцию Gazebo можно запустить на Amazon AWS и GzWeb для взаимодействия с симуляцией через браузер.) Симуляции на удаленных серверах Поддержки консоли (обширные инструменты командной строки облегчают самоанализ и контроль моделирования.) 5 Так же Gazebo позволяет быстро тестировать алгоритмы, проектировать роботов. Gazebo предлагает возможность моделирования популяций роботов в сложных внутренних и наружных условиях [6]. Рисунок 1 – возможности Gazebo Gazebo разработан с широким использованием языка C++. Минимальные системные требования: Операционная система – Linux CPU – четырех ядерный i5 или аналогичный RAM – 4 ГБ оперативный памяти или больше GPU - графический процессор с 1 ГБ видеопамяти или больше Свободное пространство на диске минимум 20 ГБ (по другим источникам 500 МБ) Операционная система робота (ROS) - это набор программных библиотек и инструментов, которые помогают создавать приложения для роботов. ROS поддерживает и включает в себя уже готовые библиотеки, необходимые драйверы а так же инструментарий для разработки. ROS используется для управления движениями робота, получения и обработки данных с сенсоров, а так же для создания и выполнения управляющих алгоритмов робота. 6 ROS может взаимодействовать разными компонентами робота, например такими как: Камера LIDAR Микроконтроллеры Электродвигатели ROS воспринимает архитектуру робота как набор модулей, с которыми можно взаимодействовать. У ROS есть возможность запуска и работы в реальном времени копий операционной системы ROSна микроконтроллерах робота (microROS) [7]. Для моделирования робототехнических устройств используются несколько платформ: 1. Player + Stage 2. GAZEBO + ROS 3. CARMEN 4. SIMBAD 5. V-REP 6. Dyn-Soft RobSim 7. AnyKode 8. Robologix 9. Microsoft Robotics Developer Studio Таблица 1 - Сравнение платформ для моделирования робототехнических устройств. Операционная система Тип пространства Поддерживаемые языки программирования Player + Stage Linux, Mac, Windows 2D C, C++, Python, Java GAZEBO + ROS Linux, Mac, Windows 3D, 2D C++, Python, Octave, LISP, Java 7 CARMEN SIMBAD Linux, Mac, Windows 2D C, Java Linux, Mac, Windows 3D Java Наличие графического интерфейса Да Да Да Да Стоимость Бесплатно Бесплатно Бесплатно Бесплатно Таблица 2 – Продолжение сравнения платформ для моделирования робототехнических устройств. Операционная система Тип пространства Поддерживаемые языки программирован ия V-REP RobSim Linux, Mac, Windows 3D Windows 3D AnyKode Robologi RDS x Windows, Windows Linux 3D 3D Python, C++ C/C++, Java, JavaScrip t, C/C++, C++ CLI, C#, J#, VB# Наличие графического интерфейса Стоимость Да Да Для нашей решения Да наиболее C#, Visual Basic .NET, Jscript, Python Да Да Бесплатн Ограниченна Бесплатн о я версия о бесплатно, полная версия 2500 руб задачи 3D Полная версия стоит 900$ подходящим Бесплатн о программным обеспечением является связка ROS + GAZEBO. Преимущество ROS в том, что программный код может быть использован повторно, и им можно поделиться с другими исследователями. Обмен 8 программным кодом позволяет всем иметь одну общую базу и помогает распространять и тестировать её. С помощью использования инструментов ROS, реализация кода управления становиться эффективной, и упрощаются некоторые сложные задачи, необходимые для выполнения кода, но это создаёт зависимость от ROS и уменьшает мобильность кода. ROS может подключиться к реальным роботам и использовать смоделированные роботы в Gazebo, Stage или Rviz. Однако, программный код, написанный для Stage и Gazebo под управление Player, необходимо будет модифицировать для работы в Gazebo/Stage под управлением ROS. Особенностью системы ROS является то, что она работает больше как операционная система, нежели как приложение. Во всех интерфейсах моделирования и управления используется архитектура клиент-сервер; В ROS используются узлы (nodes), которые подсоединяются к мастеру (roscore), и являются соответственно клиентами и сервером. ROS обеспечивает инфраструктуру коммуникации по схеме публикации – подписки сообщений (publish–subscribe messaging), предназначенную для быстрого и легкого построения распределенных вычислительных систем. На уровне файловой системы основным блоком для организации программного обеспечения в ROS является пакет. Пакет ROS может содержать исходные коды и исполняемые файлы узлов, библиотеки, описание сообщений и сервисов, базы данных, файлы конфигурации, и другие ресурсы, которые логично организовать вместе. Каждый пакет должен содержать файл манифеста, который предоставляет метаданные о зависимостях, а также флаги пакете, включая компилятора и сведения о лицензии так далее. Цель такого структурирования – повышение возможности повторного использования. 9 и Обзор существующей модели робота Написать, что модель робота взята из прошлого семестра и начать сразу с того, как был исправлен лидар и как исправлены проблемы с разрушением робота при столкновении с препятствиями. Tugbot TUGBOT - это автономный мобильный робот (AMR), разработанный и изготовленный компанией RoboSavvy в Португалии. TUGBOT – это промышленный грузовой робот, который работает на MOV.AI, программная платформа автоматизации, основанная на ROS. Данный робот используется как на предприятиях, так и в учебных заведениях для транспортировки грузов. TUGBOT оснащен функциями безопасности, включая переключатель аварийной остановки и лазерное обнаружение препятствий. TUGBOT использует комбинацию камер, лазеров, датчиков, меток соответствия окружающей среде, маяков и GPS для ориентации в пространстве. В случае если робот обнаружит препятствие, он изменит маршрут для того, чтобы его обойти. Если это невозможно, то робот прекращает движение. Так же в память робота может быт загружен план территории, по которой он будет передвигаться. Если этого сделано не было, то робот способен сам создать этот план в процессе своего передвижения (функция картографирования местности). Робот так же может следовать за человеком или другим роботом. Алгоритм работы робота: Робот перемещается по определенному маршруту или рабочей зоне в поисках груза. Когда груз будет обнаружен, робот прицепит тележку на колесах и доставит ее в определенное место. Если запас энергии робота подходит к концу, он автоматически едет на зарядную станцию для зарядки [2]. 10 Рисунок 2 – TUGBOT Рисунок 3 – схемы TUGBOT 11 Технические характеристики Совместная автономная мобильная платформа с 2 моторизованными + 2 роликовыми колесами для небольших навесных полезных нагрузок. Тянет любую колесную полезную нагрузку Таблица 3 - Характеристики робота. Tugbot Размеры 741 × 640 × 463 мм Вес 40 кг Грузоподъемность 250 кг Передвижение 5м/с Рельеф Наклон до 5° Время работы 6 часов Датчики 2 встроенных лидара, камера, датчик столкновений 12 Основная рабочая зона робота – это комната, либо подготовленные площадки. Робот имеет возможность обнаруживать человека и следовать за ним. 13 Разработка модели мира Основная рабочая зона робота – это комната, склад, либо подготовленные площадки. В связи с этим для робота были выбраны модели миров 2 типов: 1) Пустой мир 2) Помещение склада Рисунок 7 – пустой мир 14 Рисунок 8 – Склад 15 Тестирование робота в модели мира Тестирование робота в модели мира проходило из 2 этапов: 1) Модель мира должна корректно загрузиться в Gazebo 2) Робот должен корректно появиться на карте мира Тестирование проходило при помощи 2 моделей мира [8]. При помощи готовой модели мира под названием склад происходила отладка корректной загрузки мира, а также корректного появления робота в заданных координатах. В случае если робот загружался некорректно, то происходила доработка робота и повторное тестирование до момента пока робот не начал появляться на карте мира корректно. Модель человека при этом не использовалась. Рисунок 9 – появление робота на складе При помощи пустого мира проверялось корректная загрузка модели человека, за которой будет следовать робот. В случае если объект преследования не появлялся или отображался не корректно, то происходила его доработка. 16 Рисунок 10 – появление робота в пустом мире вместе с моделью для преследования 17 Таблица 5 – тестирование робота в модели мира. Модель мира Склад Склад Склад Склад Склад Склад Склад Склад Склад Склад Пустой мир Пустой мир Пустой мир Пустой мир Пустой мир Пустой мир Пустой мир Пустой мир Пустой мир Пустой мир Результат загрузки модели мира некорректно некорректно корректно корректно корректно корректно корректно корректно корректно корректно некорректно корректно корректно корректно корректно корректно корректно корректно корректно корректно 18 Результат загрузки модели робота некорректно некорректно некорректно некорректно некорректно некорректно корректно корректно корректно корректно корректно корректно корректно корректно корректно корректно корректно корректно корректно корректно Разработка управляющего ПО В процессе выполнения работы, для управления моделью робота было создано управляющее программное обеспечение. Данное программное обеспечение было создана с использованием языка Python, библиотеки OpenCV, библиотеки SpeechRecognition и библиотеки Vosk. Для обнаружения на изображении человека был использован метод Виолы – Джонса, а для распознавания голосовых команд используются методы СММ (скрытые Марковские модели) и встроенные в библиотеку нейронные сети. Программа может обнаружить на изображении как фигуру человека целиком, так и отдельные части тела человека. При обнаружении программой фигуры человека, она отслеживает в какую сторону движется человек на основе изменения координат [5]. Так же робот может распознавать и выполнять голосовые команды. Список команд, которые может распознавать робот (на данный момент не утвержден): 1. Вперед 2. Назад (поворот на 180 градусов и движение вперед) 3. Налево 4. Направо 5. Стоп 6. Сообщать о прогнозе погоды в любой точке мира 7. Производить поисковый запрос в поисковой системе Google 8. Выполнять поиск определения в Wikipedia 9. Переводить фразы с изучаемого языка на родной язык пользователя и наоборот Для обнаружения человека были использованы 4 набора признаков Хаара: 19 1) face_cascade_db – используется для обнаружения на изображении лица человека 2) body_cascade_db – используется для обнаружения на изображении фигуры человека целиком 3) low_cascade_db – используется для обнаружения на изображении нижней половины тела человека 4) up_cascade_db – используется для обнаружения на изображении верхней половины тела человека . 20 Рисунок 11 – схема управляющего ПО 21 Рисунок 12 – схема модулей, используемых роботом 22 Тестирование управляющего ПО разработанного робота в модели мира Тестирование управляющего ПО проходило в 2 этапа: 1) Робот должен обнаружить объект преследования 2) Робот должен следовать за обнаруженным объектом В качестве объекта для преследования был создан имитатор человека. Из себя он представляет куб с изображением человека на каждой из сторон. В качестве теста робот должен был обнаружить объект преследования и подъехать к нему. Было 10 тестов в которых куб располагался с разных сторон от робота и а разном удалении. Таблица 6 – тестирование ПО робота. Местоположение куба Перед роботом Слева от робота Сзади от робота Справа от робота По диагонали от робота Перед роботом Слева от робота Сзади от робота Справа от робота По диагонали от робота Расстояние 3 клетки 3 клетки 3 клетки 3 клетки 3 клетки 6 клеток 6 клеток 6 клеток 6 клеток 6 клеток 23 Результат Объект обнаружен Объект обнаружен Объект обнаружен Объект обнаружен Объект обнаружен Объект обнаружен Объект обнаружен Объект обнаружен Объект обнаружен Объект обнаружен Рисунок 13 – преследование роботом куба Данный тест повторялся 10 раз подряд с перемещением куба. Робот во всех случаях обнаружил куб и подъехал к кубу. В случае, если куб пропадал из поля зрения робота, робот останавливался и начинал его искать, вращаясь по кругу. Рисунок 14 – Последовательность обнаружений и перемещений куба роботом 24 При обнаружении куба, имитирующего человека, робот начинал двигаться к нему. При этом робот постоянно отслеживал смещение куба относительно центра кадра и при необходимости подруливал. Рисунок 14 показывает, как это происходило. 25 ЗАКЛЮЧЕНИЕ В процессе выполнения была изучена система моделирования Gazebo и операционная система ROS. После чего мы познакомились с существующими моделями роботов, которые могли бы быть задействованы для решения нашей задачи. После этого мы подготовили спецификации для модели робота, а также подготовили для тестирования несколько наиболее подходящих моделей миров. Так же мы определили параметры тестирования, провели тестирование как модели робота в модели мира, так и управляющего программного обеспечения для модели робота. В процессе выполнения работы, мы получили модель робота, которая загружается в подготовленной модели мира, и управляющее программное обеспечение, которое способно получать изображение с камеры, после чего обрабатывать его, обнаруживая на изображении людей. После обнаружения интересующего нас объекта, робот способен следовать за человеком. В случае потери человека из поля зрения камеры, робот способен самостоятельно его найти. Модель робота можно доработать путем добавления возможности идентификации человека по лицу или по голосу. Это даст возможность роботу следовать за конкретным человеком. Также можно добавить возможность поддерживания определенной заданной дистанции. Это позволит роботу ускоряться или замедляться в зависимости от окружающей его обстановки. Помимо этого, можно повысить эффективность поиска человека в случае, если робот потеряет его. Это можно сделать при помощи отслеживания последних координат в которых находился человек, и вращения робота в ту сторону, в которой он видел человека в последний раз. 26 Данное нововведение позволит сократить время, которое затрачивается роботом на поиск. 27 Список литературы 1) Сайт разработчика робота HUSKY: [Электронный ресурс]. URL: https://clearpathrobotics.com/husky-unmanned-ground-vehicle-robot/. 2) Сайт разработчика робота TUGBOT: [Электронный ресурс]. URL: https://tugbot.ai/. 3) Сайт разработчика робота SPOT: [Электронный ресурс]. URL: https://www.bostondynamics.com/products/spot. 4) Долгов, В. А. Обзор методов распознавания изображений / В. А. Долгов. — Текст : непосредственный // Современные тенденции технических наук : материалы VI Междунар. науч. конф. (г. Казань, май 2018 г.). — Казань : Молодой ученый, 2018. — С. 7-9. — URL: https://moluch.ru/conf/tech/archive/300/14199/ (дата обращения: 01.03.2022).) 5) Репозиторий Python: [Электронный ресурс]. URL: https://pypi.org/. 6) ROS: [Электронный ресурс]. URL: https://www.ros.org/. 7) GAZEBO: [Электронный ресурс]. URL: https://www.gazebosim.org/ 8) Модели миров: [Электронный ресурс]. URL: https://github.com/chaolmu/gazebo_models_worlds_collection 28