Изучение робототехники с помощью Python
Покупка
Тематика:
Программирование и алгоритмизация
Издательство:
ДМК Пресс
Автор:
Лентин Джозеф
Перевод:
Корягин А. В.
Год издания: 2019
Кол-во страниц: 250
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-97060-749-7
Артикул: 767882.01.99
Доступ онлайн
В корзину
В данной книге рассказывается, как с нуля построить автономный мобильный обслуживающий робот, с помощью которого можно подавать еду в квартире, гостинице и ресторане. Благодаря подробным пошаговым инструкциям читатель узнает весь процесс разработки робота - начиная с теоретической части (принципы дифференциального привода, кинематики и обратной кинематики) и заканчивая практической реализацией (сборка отдельных компонентов, согласование приводов и датчиков с контроллерами). Много внимания уделено программной части - использованию метаоперационной системы ROS, моделированию в Gazebo, обработке изображений в OpenCV, разработке GUI робота на Qt и Python. Издание предназначено для широкого круга читателей, увлеченных робототехникой, программированием и самостоятельной сборкой различных DIY-устройств.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.04: Программная инженерия
- 15.03.06: Мехатроника и роботехника
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
Лентин Джозеф Изучение робототехники с помощью Python
Lentin Joseph Learning Robotics using Python Second Edition Design, simulate, program, and prototype an autonomous mobile robot using ROS, OpenCV, PCL, and Python BIRMINGHAM – MUMBAI
Лентин Джозеф Изучение робототехники с помощью Python Проектирование, моделирование, программирование и прототипирование интерактивного автономного мобильного робота с нуля с помощью Python, ROS, Open-CV Москва, 2019
УДК 004.43, 59.30 ББК 32.81 Д42 Джозеф Л. Д42 Изучение робототехники с помощью Python / пер. с анг. А. В. Корягина. – М.: ДМК Пресс, 2019. – 250 с.: ил. ISBN 978-5-97060-749-7 В данной книге рассказывается, как с нуля построить автономный мобильный обслуживающий робот, с помощью которого можно подавать еду в квартире, гостинице и ресторане. Благодаря подробным пошаговым инструкциям читатель узнает весь процесс разработки робота – начиная с теоретической части (принципы дифференциального привода, кинематики и обратной кинематики) и заканчивая практической реализацией (сборка отдельных компонентов, согласование приводов и датчиков с контроллерами). Много внимания уделено программной части – использованию метаоперационной системы ROS, моделированию в Gazebo, обработке изображений в OpenCV, разработке GUI робота на Qt и Python. Издание предназначено для широкого круга читателей, увлеченных робототехникой, программированием и самостоятельной сборкой различных DIY-устройств. УДК 004.43, 59.30 ББК 32.81 Authorized Russian translation of the English edition of Learning Robotics using Python, Second Edition ISBN 9781788623315 © 2018 Packt Publishing. This translation is published and sold by permission of Packt Publishing, which owns or controls all rights to publish and sell the same. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. ISBN 978-1-78862-331-5 (анг.) © 2018 Packt Publishing ISBN 978-5-97060-749-7 (рус.) © Оформление, издание, перевод, ДМК Пресс, 2019
Посвящается моей матери, Jancy Joseph и моему отцу C. G. Joseph которые поддержали меня в создании этой книги
Содержание Составители ......................................................................................................11 Введение ............................................................................................................12 Глава 1. Начало работы с операционной системой для робота (ROS) ............................................................................................17 Технические условия ............................................................................................17 Введение в ROS .....................................................................................................18 Концепции ROS .................................................................................................20 Установка ROS на Ubuntu .................................................................................23 Введение в catkin ..............................................................................................28 Создание пакета ROS ........................................................................................29 Введение в Gazebo ............................................................................................36 Итоги .....................................................................................................................39 Вопросы .................................................................................................................39 Глава 2. Основные понятия роботов с дифференциальным приводом ............................................................40 Математическое моделирование робота ............................................................40 Введение в систему дифференциального привода и кинематику робота ................................................................................................................41 Прямая кинематика дифференциального робота .............................................43 Объяснение уравнений прямой кинематики .................................................43 Обратная кинематика ..........................................................................................48 Итоги .....................................................................................................................49 Вопросы .................................................................................................................49 Дополнительная информация .............................................................................49 Глава 3. Моделирование робота с дифференциальным приводом ...........................................................................................................50 Технические требования ......................................................................................51 Требования к сервисному роботу ........................................................................51 Приводной механизм ходовой части робота ......................................................51 Выбор двигателей и колес ................................................................................52 Результаты проектирования ............................................................................53
Содержание 7 Конструкция шасси робота ..............................................................................53 Установка LibreCAD, Blender и MeshLab ..............................................................55 Установка LibreCAD ..........................................................................................56 Установка Blender .............................................................................................56 Установка MeshLab ...........................................................................................56 Создание 2D CAD-чертежа робота с помощью LibreCAD...................................56 Конструкция опорной плиты робота ..............................................................59 Конструкция нижней и верхней стоек ...........................................................61 Конструкция колеса и крепления для колеса и мотора .................................62 Конструкция опорного колеса .........................................................................65 Конструкция средней плиты ...........................................................................66 Конструкция верхней плиты ...........................................................................67 Работа с 3D-моделью робота с использованием Blender ...................................68 Скрипты Python в Blender ................................................................................69 Введение в API Blender Python .........................................................................70 Скрипт Python модели робота .........................................................................72 Создание модели URDF-робота .......................................................................79 Создание пакета описания ChefBot в ROS ......................................................80 Итоги .....................................................................................................................84 Вопросы .................................................................................................................85 Дополнительная информация .............................................................................85 Глава 4. Моделирование дифференциального привода робота , управляемого операционной системой ROS ......................86 Технические условия ............................................................................................87 Начало работы с симулятором Gazebo ................................................................87 Графический интерфейс пользователя Gazebo ..............................................88 Работа с симулятором TurtleBot 2 .......................................................................92 Перемещение робота .......................................................................................97 Создание симуляции в Chefbot ............................................................................99 Преобразование глубины изображения с помощью лазерного сканера ....100 Теги и плагины URDF для моделирования Gazebo .......................................101 Визуализация данных датчика робота ..............................................................106 Начало работы с одновременной локализацией и картографированием ..................................................................................108 Создание карты с помощью SLAM ................................................................109 Начало работы с адаптивным методом локализации Монте-Карло ..................................................................................................110 Реализация AMCL в среде Gazebo ..................................................................112 Автономная навигация Chefbot в отеле с использованием Gazebo ............114 Итоги ...................................................................................................................115 Вопросы ...............................................................................................................115 Дополнительная информация ...........................................................................115
Содержание Глава 5. Проектирование оборудования и схем ChefBot ............116 Технические условия ..........................................................................................117 Спецификации оборудования Chefbot ..............................................................117 Структурная схема робота .................................................................................117 Двигатель и энкодер .......................................................................................118 Драйвер двигателя ..........................................................................................120 Встроенный контроллер ................................................................................123 Ультразвуковые датчики ................................................................................124 Инерциальный блок измерения (акселерометр и гироскоп) ......................126 Kinect/Orbbec Astra .........................................................................................127 Центральный процессор ................................................................................128 Динамики/микрофон .....................................................................................129 Источник питания/аккумулятор ...................................................................130 Как работает оборудование ChefBot? ................................................................131 Итоги ...................................................................................................................132 Вопросы ...............................................................................................................133 Дополнительная информация ...........................................................................133 Глава 6. Согласование приводов и датчиков с контроллером робота..............................................................................134 Технические условия ..........................................................................................135 Согласование редукторного двигателя постоянного тока с Tiva C LaunchPad ............................................................................................................135 Дифференциальный привод колесного робота ............................................137 Установка Energia IDE .....................................................................................139 Код взаимодействия с двигателями ..............................................................143 Интерфейс квадратурного энкодера с Tiva C Launchpad .................................146 Обработка данных энкодера ..........................................................................147 Код согласования квадратурного энкодера ..................................................150 Работа с приводом Dynamixel ............................................................................154 Работа с ультразвуковыми датчиками расстояния ..........................................157 Согласование HC-SR04 с Tiva C LaunchPad ...................................................157 Работа с ИК-датчиком расстояния ....................................................................163 Работа с инерционным измерительным модулем ...........................................166 Инерциальная навигация ..............................................................................166 Взаимодействие MPU 6050 с Tiva C LaunchPad .............................................167 Код согласования в Energia ............................................................................170 Итоги ...................................................................................................................173 Вопросы ...............................................................................................................173 Дополнительная информация ...........................................................................173
Содержание 9 Глава 7. Согласование датчиков зрения с ROS ................................174 Технические требования ....................................................................................174 Список робототехнических датчиков зрения и библиотек для работы с изображением ..................................................................................................175 Pixy2/CMUcam5 ...............................................................................................175 Веб-камера Logitech C920 ..............................................................................176 Kinect 360 .........................................................................................................176 Intel RealSense серии D400 .............................................................................177 Датчик глубины изображения Orbbec Astra .................................................179 Введение в OpenCV, OpenNI и PCL.....................................................................180 Что такое OpenCV? ..........................................................................................180 Что такое OpenNI? ..........................................................................................184 Что такое PCL? ................................................................................................185 Программирование Kinect с использованием Python ROS, OpenCV и OpenNI ..............................................................................................................186 Как запустить драйвер OpenNI ......................................................................186 Интерфейс ROS в формате OpenCV ...............................................................187 Согласование Orbbec Astra с ROS .......................................................................191 Установка драйвера Astra-ROS ......................................................................191 Работа с облаками точек с помощью Kinect, ROS, OpenNI и PCL ....................192 Открытие устройства и создание облака точек ............................................192 Преобразование данных облака точек в данные лазерного сканирования ......................................................................................................193 Работа в SLAM с помощью ROS и Kinect ...........................................................195 Итоги ...................................................................................................................196 Вопросы ...............................................................................................................196 Дополнительная информация ...........................................................................196 Глава 8. Создание аппаратного обеспечения ChefBot и интеграция ПО программного обеспечения ........................................197 Технические требования ....................................................................................197 Сборка ChefBot из ранее изготовленных деталей и комплектующих ............198 Конфигурирование бортового компьютера ChefBot и установка пакетов ChefBot ROS ...........................................................................................203 Согласование датчиков ChefBot с Tiva C LaunchPad ........................................204 Встроенный код для ChefBot ..........................................................................206 Написание драйвера Ros Python для ChefBot ...................................................208 Функции исполняемого файла ChefBot ROS .....................................................212 Элементы Python ChefBot и запуск файлов ......................................................213 Построение карты комнаты с помощью SLAM в ROS ..................................220
Содержание ROS: локализация и навигация .....................................................................221 Итоги ...................................................................................................................223 Вопросы ...............................................................................................................224 Дополнительная информация ...........................................................................224 Глава 9. Разработка графического интерфейса для робота с использованием Qt и Python........................................225 Технические требования ....................................................................................226 Установка Qt на Ubuntu 16.04 LTS ......................................................................226 Взаимодействие Python и Qt .............................................................................227 PyQt ..................................................................................................................227 PySide ...............................................................................................................227 Работа с PyQt и PySide ........................................................................................228 Представляем Qt Designer ..............................................................................228 Сигналы и слоты Qt ........................................................................................230 Преобразование UI-файла в код Python .......................................................232 Определение и добавление слота в код PyQt ...............................................232 Работа с приложением Hello World GUI ........................................................234 ChefBot – управление с помощью графического интерфейса .........................235 Установка и работа с rqt в Ubuntu 16.04 LTS......................................................240 Итоги ...................................................................................................................242 Вопросы ...............................................................................................................243 Дополнительная литература ..............................................................................243 Подводим итоги ............................................................................................244 Предметный указатель ..............................................................................248
Составители Об автОре Лентин Джозеф – автор этой книги, предприниматель-робототехник из Индии. Он руководит компанией Qbotics Labs. Эта организация находится в Индии, разрабатывает программное обеспечение для роботов и имеет 7-летний опыт работы в сфере робототехники, прежде всего в ROS, OpenCV и PCL. Лентин Джозеф является автором четырех книг по ROS: «Изучение робототехники с помощью Python», «Освоение ROS для программирования робота», «Проекты робототехники ROS» и «Операционная система робота (ROS) для абсолютных новичков». В настоящее время автор проводит магистерскую программу по робототехнике в Индии, а также в институте робототехники, CMU, США. О рецензенте Ruixiang Du – кандидат технических наук Политехнического университета Вустера. Работает в лаборатории исследования автономии, контроля и оценки и специализируется на планировании движения и управления автономными мобильными роботами в динамичной среде. В 2011 г. получил степень бакалавра автоматизации в Северном Китайском электроэнергетическом университете, а в 2013 г. – степень магистра в области робототехники WPI. Занимался проектами с роботизированными платформами, начиная от медицинских роботов и беспилотных воздушных/наземных транспортных средств и до человекоподобных роботов.
Введение Книга «Изучение робототехники с помощью Python» состоит из девяти глав, в которых рассказывается, как создать с нуля автономный мобильный робот и, используя язык программирования Python, запрограммировать его. Это устройство разрабатывалось как обслуживающий робот, с помощью которого можно подавать еду в квартире, гостинице и ресторане. В книге представлены подробные пошаговые инструкции, выполняя которые, вы этого робота построите. Сначала рассматриваются основы робототехники. Затем будет создана 3D-модель. После этого будут рассмотрены аппаратные компоненты, необходимые для создания прототипа устройства. В основном программная часть реализована на языке программирования Python, метаоперационной системе Robot Operating System (ROS) и библиотеке алгоритмов компьютерного зрения, обработки изображений и численных алгоритмов общего назначения OpenCV. Показано использование Python как для проектирования робота, так и для создания пользовательского интерфейса. Симулятор Gazebo используется для моделирования робота, работы с библиотекой машинного зрения OpenCV, OpenNI и PCL и обработки 2D- и 3D-изображений. Каждая глава начинается с теории, позволяющей понять прикладную часть. Книга анализировалась специалистами в области робототехники. Для кОгО преДназначена эта книга Книга «Изучение робототехники с помощью Python» предназначена для инженеров-робототехников, желающих углубить свои знания в этой области и усовершенствовать созданные ранее роботы, предпринимателей, использующих сервисных роботов в своем деле, студентов, изучающих робототехнику, и людей, увлеченных созданием роботов. Книга содержит легковыполнимые пошаговые инструкции. краткОе сОДержание Глава 1 «Начало работы с операционной системой для робота (ROS)»: объясняются основные понятия ROS, являющейся основной платформой для программирования роботов. Глава 2 «Основные понятия роботов с дифференциальным приводом»: рассматриваются основные принципы роботов с дифференциальным приводом. Обсуждаются фундаментальные концепции дифференциального привода мобильного робота, понятия кинематики и обратной кинематики дифференци
Получаем максимальную отдачу от этой книги 13 ального привода. Знания этих принципов помогут вам правильно настроить программное обеспечение регулятора дифференциальной передачи. Глава 3 «Моделирование робота с дифференциальным приводом»: рассчитываем конструкцию робота и создаем чертежи мобильного робота в 2D и 3D. Создание 2D- и 3D-чертежей является одним из условий разработки мобильного робота. После завершения проектирования и моделирования робота читатель получит расчетные параметры и чертежи, которые будут использованы для создания модели робота. Глава 4 «Моделирование дифференциального привода робота, управляемого операционной системой ROS»: знакомимся со средой моделирования робота Gazebo и помогаем читателям с помощью Gazebo создать модель собственного робота. Глава 5 «Проектирование оборудования и схем ChefBot»: выбираем аппаратные компоненты, необходимые для сборки ChefBot. Глава 6 «Согласование приводов и датчиков с контроллером робота»: рассматриваем взаимодействие регулятора, привода и датчиков робота. Обсуждаем, как взаимодействуют приводы и датчики робота с регулятором Launchpad Tiva C. Глава 7 «Согласование датчиков зрения с ROS»: обсуждается, как согласовать датчики зрения Kinect и Orbecc Astra, которые могут быть использованы в Chefbot для автономной навигации с ROS. Глава 8 «Сборка робота ChefBot и интеграция программного обеспечения»: рассказывается, как установить электронное оборудование мобильного робота и настроить его программное обеспечение. Глава 9 «Разработка графического интерфейса для робота с использованием Qt и Python»: обсуждается, как с помощью GUI передавать команды роботу для его перемещения к столам в гостинице. пОлучаем максимальную ОтДачу От этОй книги Книга содержит подробную информацию, позволяющую создать робот. Для этого вам понадобятся электронные компоненты и материалы (пластик, металл, фанера). Робот может быть построен с нуля, или вы можете купить готовое устройство, оснащенное дифференциальным приводом и энкодером. Для управления роботом вам понадобится плата контроллера, например Texas instruments LaunchPad. Для разработки, моделирования и программирования робота необходим ноутбук/нетбук. В этой книге в качестве бортового компьютера мы используем высокопроизводительный мини-компьютер Intel NUC. Это очень эффективный высокопроизводительный ПК размером 10×10 см. Для компьютерного 3D-зрения используется 3D-датчик, например лазерный сканер Kinect или Orbbec Astra. Что касается программного обеспечения, вам понадобится знание команд GNU/Linux и Python. Для работы с примерами понадобится операционная си
Введение стема Ubuntu 16.04 LTS. Быстрее создать робот вам поможет хорошее знание ROS, OpenCV, OpenNI и PCL. Кроме того, вам потребуется установить Ros Kinect Melodic с примерами. загрузка файлОв с примерами прОграммнОгО кОДа Вы можете скачать файлы с примерами программного кода по адресу www. packtpub.com со своего аккаунта. Если вы приобрели эту книгу в другом месте, зарегистрируйтесь на сайте www.packtpub.com/support. Файлы вам будут отправлены по электронной почте. Чтобы загрузить файлы кода, выполните следующие действия: 1) если вы уже зарегистрированы, зайдите под своим аккаунтом на сайт www.packtpub.com. Если у вас нет учетной записи, сначала зарегистрируйтесь; 2) выберите вкладку SUPPORT; 3) щелкните мышью на ссылке на Code Downloads & Errata; 4) введите название книги в поле поиска и следуйте инструкциям на экране. После того как файл будет загружен, пожалуйста, убедитесь, что вы сможете его распаковать. Это можно сделать с помощью программ: WinRAR/7-Zip for Windows; Zipeg/iZip/UnRarX for Mac; 7-Zip/PeaZip for Linux. Пакет кодов для этой книги также размещен на GitHub по адресу: https:// github.com/PacktPublishing/Learning-Robotics-using-Python-Second-Edition. Другие программные пакеты и видео для нашего богатого каталога книг вы найдете по адресу: https://github.com/PacktPublishing/. загрузка цветных изОбражений Вы также можете загрузить PDF-файл с цветными изображениями скриншотов/диаграмм, используемых в этой книге. Данный файл находится по адресу: https://www.packtpub.com/sites/default/files/downloads/LearningRoboticsusingPytho nSecondEdition_ColorImages.pdf. услОвные ОбОзначения, принятые в этОй книге В этой книге используется ряд типографических условных обозначений. Моноширинный текст: указывает кодовые слова в тексте, имена таблиц базы данных, названия папок, имена файлов, расширения файлов, имена путей сохранения файлов, фиктивные URL-адреса, пользовательский ввод и маркеры Twitter. Например: «первая процедура – создать файл и сохранить его с расширением .world».
Нарушение авторских прав 15 Пример блока кода: <xacro:include filename="$(find chefbot_description)/urdf/chefbot_gazebo.urdf.xacro"/> <xacro:include filename="$(find chefbot_description)/urdf/chefbot_properties.urdf.xacro"/> Любой ввод или вывод из командной строки записывается следующим образом: $ roslaunch chefbot_gazebo chefbot_empty_world.launch Так будут оформляться предупреждения и важные примечания. Так будут оформляться советы или рекомендации. Отзывы и пОжелания Мы всегда рады отзывам наших читателей. Расскажите нам, что вы думаете об этой книге – что понравилось или, может быть, не понравилось. Отзывы важны для нас, чтобы выпускать книги, которые будут для вас максимально полезны. Вы можете написать отзыв прямо на нашем сайте www.dmkpress.com, зайдя на страницу книги и оставив комментарий в разделе «Отзывы и рецензии». Также можно послать письмо главному редактору по адресу dmkpress@gmail. com, при этом напишите название книги в теме письма. Если есть тема, в которой вы квалифицированы, и вы заинтересованы в написании новой книги, заполните форму на нашем сайте по адресу http://dmkpress.com/authors/publish_book/ или напишите в издательство по адресу dmkpress@gmail.com. списОк ОпечатОк Хотя мы приняли все возможные меры, для того чтобы удостовериться в качестве наших текстов, ошибки все равно случаются. Если вы найдете ошибку в одной из наших книг — возможно, ошибку в тексте или в коде, — мы будем очень благодарны, если вы сообщите нам о ней. Сделав это, вы избавите других читателей от расстройств и поможете нам улучшить последующие версии данной книги. Если вы найдете какие-либо ошибки в коде, пожалуйста, сообщите о них главному редактору по адресу dmkpress@gmail.com, и мы исправим это в следующих тиражах. нарушение автОрских прав Пиратство в интернете по-прежнему остается насущной проблемой. Издательства «ДМК Пресс» и Packt очень серьезно относятся к вопросам защиты авторских прав и лицензирования. Если вы столкнетесь в интернете с неза
Доступ онлайн
В корзину