Реферат по теме выпускной работы
Содержание
- Введение
- 1. Актуальность темы
- 2. Цель и задачи исследования, планируемые результаты
- 3. Введение в ROS
- 4. Концепции ROS
- 5. Вычислительный граф ROS
- 6. Основные понятия роботов с дифференциальным приводом
- 7. Программирование робототехники с Arduino и ROS
- 8. Raspberry Pi
- Выводы
- Список источников
Введение
По последним данным, сегодня в мире работают 1,8 миллионов самых различных роботов – промышленных, домашних, роботов–игрушек. При этом самое большое количество роботов используется в Южной Кореи, второе место занял Сингапур, третье – Япония, далее США, Китай. А в России роботов всего около 0,25% мирового рынка, что крайне мало[1].
Робототехника – прикладная наука, занимающаяся разработкой автоматизированных технических систем.
Робототехника опирается на такие дисциплины как электроника, механика, программирование. Выделяют строительную, промышленную, бытовую, авиационную, военную, космическую робототехнику. При создании робототехники нужно руководствоваться правилами, дружественное отношение к человеку должно быть главным в программировании роботов[2].
1. Актуальность темы
В настоящий момент наземные мобильные роботы–манипуляторы являются очень востребованными в разных сферах деятельности. Являясь, по сути, приемниками электрической энергии они позволяют производить разнообразные виды работ в опасных или труднодоступных для человека местах. При этом манипуляторы являются важнейшими частями подобных мобильных платформ.
2. Цель и задачи исследования
Целью работы является построение мобильного робота с дифференциальным приводом. В работе будет использован микроконтроллер Arduino UNO, а так же микрокомпьютер Raspberri Pi 3 B+.
3. Введение в ROS. Общие сведения
ROS – это программная платформа, назначение которой – написание программного обеспечения робота. Основная цель ROS – создание и использование робототехнического программного обеспечения по всему миру. ROS состоит из набора инструментов, библиотек и программных пакетов, упрощающих задачу создания программного обеспечения робота.
ROS – это метаоперационная система с открытым исходным кодом, разработанная для робота. Она предоставляет все необходимые для данной операционной системы службы, включая аппаратные средства визуализации, низкоуровневое управление устройством, реализацию функциональности для общего использования, передачу сообщений между процессами и пакетами управления. Она также предоставляет инструменты и библиотеки для получения, построения, написания и выполнения кода на нескольких компьютерах. Основные функции, которые обеспечивает ROS:
- интерфейс передачи сообщений. Это базовая функция ROS, позволяющая организовать межпроцессное взаимодействие. Используя эту функцию, ROS может обмениваться данными между связанными системами.
- аппаратная универсальность.ROS обладает некоторой степенью универсальности, что позволяет разработчикам создавать роботизированные приложения. Они могут быть использованы с любым устройством. Разработчики должны лишь позаботиться о надлежащем аппаратном обеспечении робота;
- управление пакетами. Узлы ROS организованы в пакеты и называются пакетами ROS. Они состоят из исходных кодов, конфигурационных файлов типа
build
(строить
) и т. д. Мы сначала разрабатываем пакет, собираем его и устанавливаем. В ROS предусмотрена система сборки, которая помогает создавать эти пакеты. Управление пакетами делает развитие ROS более упорядоченным и организованным; - дополнительные библиотеки. В структуру ROS встроено несколько дополнительных библиотек, разработанных сторонними организациями, таких как Open–CV, PCL, OpenNI и др. Данные библиотеки помогают сделать ROS универсальной метаоперационной системой;
- управление низкоуровневыми устройствами. Во всех роботах присутствуют устройства низкого уровня, например устройства ввода/вывода, контроллеры последовательных портов и др. Управление такими устройствами тоже осуществляется с помощью ROS;
- распределенные вычисления. Объем вычислений, которые потребуются для обработки потока данных от многочисленных датчиков, очень высок. Используя ROS, мы можем легко распределить их в группе вычислительных узлов. Это позволит равномерно распределить вычислитель ные мощности, и данные будут обрабатываться быстрее, чем на одиночном компьютере;
- многократное использование кода. Основной целью ROS является многократное использование кода, способствующее развитию научно–исследовательского сообщества по всему миру. Исполняемые файлы ROS называются узлами. Они сгруппированы в единый объект, называемый пакетом ROS. Группа пакетов – стек. Стеки могут быть разделены и распределены;
- независимость от языка. В ROS можно программировать с помощью таких популярных языков, как Python, C++ и Lisp. Узлы могут быть написаны на любом из этих языков, и обмен данными между такими узлами через ROS не вызовет никаких проблем;
- простота тестирования. ROS имеет встроенный модуль интеграционного тестирования, называющийся rostest и предназначенный для тестирования пакетов ROS;
- масштабирование. ROS после некоторой модификации может выполнять сложные вычисления в роботах;
- свободный и открытый исходный код. Исходный код ROS открыт и абсолютно свободен в использовании. Основная часть ROS лицензирована BSD и может быть повторно использована в коммерческих и закрытых продуктах источника.
ROS – комбинация из потока данных (передачи сообщений), инструментов, возможностей и экосистемы[3]. В ROS встроены мощные инструменты для ее отладки и визуализации. Робот, оснащенный ROS, обладает такими возможностями, как навигация, определение местонахождения, составление карты, манипуляции и т. д. Они помогают создать мощные приложения для роботов. Приведенное ниже изображение показывает уравнение ROS:
4. Концепции ROS
ROS состоит из трех основных уровней, таких как:
- Файловая система ROS;
- Вычислительный граф ROS;
- Сообщество ROS.
Основная задача файловой системы ROS – организация файлов на диске. Основные термины файловой системы ROS:.
- пакеты. Пакеты ROS являются основной единицей в рамках программного фреймворка ROS. Пакет ROS может содержать исполняемые файлы, ROS–библиотеки, принадлежащие программному обеспечению сторонних производителей, конфигурационные файлы и т. д. Пакеты ROS можно использовать повторно и совместно;
- описания пакета. В описании пакетов (пакет .XML–файла) можно найти всю детализацию пакетов, включая имя, описание, лицензию и зависимости;
- типы сообщений (msg). Все сообщения хранятся в отдельной папке, в файлах с расширением .msg. ROS–сообщения – это структурированные данные, проходящие через ROS;
- типы служб (SRV). Описания служб хранятся в папке SRV с расширением .srv. SRV–файлы определяют запрос и ответ для структуры данных в сервисе ROS.
5. Вычислительный граф ROS
Вычислительный граф ROS – это одноранговая cеть систем ROS, назначение которой – обработка всех данных. Основными понятиями вычислительной графики ROS являются узлы, Мастер ROS, сервер параметров, сообщения и службы.
- Узлы – это вычислительные процессы в ROS. Каждый узел выполняет обработку определенных данных. Например, один узел обрабатывает данные с лазерного сканера, другой публикует эти данные и т. д. Узел ROS создается с помощью клиентской библиотеки ROS (например, roscpp и rospy). Более подробно мы познакомимся с этими библиотеками во время создания образца узла.
- Мастер ROS. Мастер ROS действует как служба имен в графе вычислений ROS. Он хранит темы и регистрационную информацию служб для узлов ROS. Узлы общаются с Мастером, сообщая свои регистрационные данные. Эти узлы, общаясь с мастером, получают информацию о других зарегистрированных узлах и соответственно устанавливают с ними соединения[4]. Мастер также выполняет обратный вызов этих узлов при изменении регистрационной информации, позволяющей узлам динамически создать соединения при запуске новых узлов. Узлы подключаются непосредственно к другим узлам. Мастер, как и DNS–сервер, обеспечивает только поиск информации. Узлы, подписывающиеся на тему, запрашивают соединения от узлов, публикующих эту тему, и позволяют установить связи по согласованному протоколу подключения. Наиболее распространенный протокол, используемый в ROS, называется TCPROS. Он использует стандартный протокол TCP/IP–сокетов.
- Сервер параметров. Статические данные ROS хранятся в общедоступном месте – на сервере данных, от которого узлы и получают доступ к этим данным. Мы можем установить объем сервера данных и определить его как частный или общественный, чтобы ограничить доступ к серверу одним узлом или разрешить доступ всем узлам.
- Темы ROS. Узлы обмениваются данными в виде сообщений через систему транспортировки в ROS с конкретным названием темы. Тема – это имя, используемое для идентификации содержания сообщения. Узел, заинтересованный в определенном виде данных, будет подписываться на соответствующую тему. В целом издатель и абонент не знают о существовании друг друга. Идея в том, чтобы отделить производство информации от ее потребления. Логически можно думать о теме как о шине строго типизированных сообщений. Каждая шина имеет имя, и любой может подключаться к ней для отправки или получения сообщений до тех пор, пока они имеют правильный тип.
- Сообщения. Узлы взаимодействуют друг с другом с помощью сообщений. Сообщение ROS состоит из примитивных типов данных, таких как целые числа, плавающие точки, логические значения (
true
–истина
илиfalse
–ложь
). Сообщения ROS передаются через тему ROS. Тема может получать или посылать один тип сообщения только один раз. Мы можем создать собственное определение сообщения и передать его через тему. - Службы. Выше было показано, что переслать/получить сообщение с использованием тем ROS – это очень простой метод общения между узлами. Этот способ коммуникации (
один ко многим
–one–to–many
) позволяет подписываться на одну тему любому количеству узлов. В некоторых случаях может осуществляться частичное взаимодействие, обычно применяемое в распределенных системах. Используя определенное сообщение, можно послать запрос в другой узел, предоставляющий нужную услугу. Узел, пославший запрос другому узлу, обязан ожидать результат обработки данного запроса.
На следующем рисунке показано взаимодействие между мастером, темами, службами и узлами:
На приведенной выше схеме показана связь, осуществляемая с помощью Мастера ROS (ROS Master) и двух узлов ROS: Узла 1 (Node 1) и Узла 2 (Node 2). Прежде чем начать обмен данными между этими двумя узлами, необходимо запустить Мастер ROS. Master ROS является посредником, позволяющим установить связь и обмениваться информацией между узлами. Например, Узел 1 (Node 1) хочет опубликовать тему/xyz с типом сообщения abc. Для этого он обращается к ROS Master и сообщает, что собирается опубликовать тему/xyz с сообщением вида abc и поделиться ею с другими узлами. А другой узел, например Узел 2 (Node 2), желает подписаться на эту тему/xyz с типом сообщения abc. Мастер сообщает Узлу 2, какой узел опубликовал запрашиваемую информацию, и выделяет порт для связи этих двух узлов напрямую, минуя Мастер ROS. Таким образом, как уже упоминалось ранее, Master ROS представляет собой DNS–сервер, обеспечивающий поиск запрашиваемой узлами информации. Ранее уже упоминалось, что в ROS применяется протокол связи TCPROS[5], использующий для связи в основном сокеты TCP/IP.
6. Основные понятия роботов с дифференциальным приводом
Проектируемый робот будет оснащен двумя ведущими колесами, которые мы установим на противоположных сторонах шасси. Управлять направлением движения будет реализовано с помощью разности скорости вращения ведущих колес. Например, если скорость вращения правого колеса будет меньше, чем скорость вращения левого, робот будет поворачивать вправо, и наоборот, если правое колесо будет вращаться быстрее левого, робот будет поворачивать влево[6].
Наиболее важная часть мобильного робота – это система управления. С помощью нее робот ориентируется и перемещается в пространстве. Одной из самых простых и рентабельных систем управления является система дифференциального привода. Дифференциальный привод состоит из двух независимых друг от друга ведущих колес, установленных на общей оси. Каждое ведущее колесо приводится в движение отдельным двигателем. Дифференциальный привод – это неголономная система, которая имеет ограничения в изменении положения робота. Примером неголономной системы является автомобиль, поскольку он не может изменить положение без изменения позы. Таким образом, имея три степени свободы (3D), автомобиль с помощью газа, тормоза и рулевого управления может использовать только две степени свободы (2D).
7. Программирование робототехники с Arduino и ROS
Роботическая операционная система ROS является довольно мощной платформой для создания роботических систем, которая включает все необходимое для разработки своих проектов от простейших программных компонентов, называемых узлами, и протокола обмена данными до среды симулирования реальной роботической платформы Gazebo. В основном ROS используется в связке с такими микроконтролерами, как RaspberryPi и Blackbone, которые обладают большими вычислительными возможностями и собственной операционной системой. Arduino является популярной платой для прототипирования, получившее широкое распространение в связи с возникшим не так давно понятием умный дом и которая явлется идеальной стартовой точкой для новичков в области микроэлектроники и робототехники.
В данный момент существует не так много информации об использовании роботической операционной системы ROS в связке с микроконтроллером Arduino. В основном это зарубежные интернет ресурсы и книги. Для использования ROS с платой Arduino существует официальная библиотека в ROS — rosserial_arduino. Эта библиотека позволяет публиковать сообщения в темы и подписываться на сообщения из конкретных тем. Также он позволяет использовать ros::Time и TF и публиковать данные tf трансформации. Так как в данной работе Arduino будет выполнять лишь функцию управления двигателями, то следует следует рассмотреть микрокомпьютер Raspberri Pi, на котором будет установлена ROS, и который будет выполнять все остальные задачи.
8. Raspberry Pi
Raspberry Pi – это маленький, размером с кредитную карту, компьютер стоимостью порядка 25 долларов за базовую модель и 35 – за более продвинутую. Raspberry Pi основан на процессоре с архитектурой ARM11 и частотой в 700 МГц. В последних версиях прошивки официально разрешили разгонять процессор до 1000 МГц, что обеспечивает достижение приемлемой производительности при низком энергопотреблении. Raspberry Pi по сути представляет собой полноценный системный блок, с помощью которого можно обучать работе с компьютером, воспроизводить видео, программировать, пользоваться Интернетом, слушать музыку[7]. Одна из главных и привлекательных особенностей Raspberry Pi – наличие на плате аппаратных портов ввода/вывода GPIO (General Purpose Input/Output, входы/выходы общего назначения), что открывает перспективы использования его в робототехнических проектах.
Raspberry Pi работает в основном на операционных системах, основанных на ядре Linux. Это является преимуществом, так как ROS разрабатывается как раз бля Linux–подобных систем.
Выводы
В ходе выполнения работы была разработана конструкция мобильного робота с дифференциальным приводом.
В работе была рассмотрена кинематика дифференциального привода с учетом подвижной платформы.
Была собрана механическая модель робота, для которой, на базе микроконтроллера Arduino UNO и микрокомпьютера Raspberry Pi 3B+ была разработана система управления при помощи операционной системы ROS. В результате исследований получены практические навыки и знания в области разработки системы для совместного управления несколькими приводами.
При написании данного реферата магистерская работа еще не завершена. Окончательное завершение: июнь 2021 года. Полный текст работы и материалы по теме могут быть получены у автора или его руководителя после указанной даты.
Список источников
- Макаров И.М. Робототехника: История и перспективы – М.: МАИ, 2017. – 238 с.
- Шадрин П. Роботы будущего – М.: Махаон, 2014. – 130 с.
- А.А.Антонов. Архитектура ROS. –М.: ВГТУ, 2014 – 39 с.
- Джозеф Л. Изучение робототехники с использованием Python / пер. с анг. А. В. Корягина. – М.: ДМК Пресс, 2019. – 250 с.: ил.
- ROS. TCPROS. Official Ducumentation [Электронный ресурс]. – Режим доступа: http://wiki.ros.org/ros/tcpros
- Программирование робототехники с Arduino и ROS [Электронный ресурс]. – Режим доступа: : https://habr.com/ru/post/249401/
- Петин В. А. Микрокомпьютеры Raspberry Pi. Практическое руководство. — СПб.:БХВ–Петербург, 2015. —240 с.: ил. — (Электроника)