Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Изучение робототехники с помощью Python

Покупка
Артикул: 767882.01.99
Доступ онлайн
590 ₽
В корзину
В данной книге рассказывается, как с нуля построить автономный мобильный обслуживающий робот, с помощью которого можно подавать еду в квартире, гостинице и ресторане. Благодаря подробным пошаговым инструкциям читатель узнает весь процесс разработки робота - начиная с теоретической части (принципы дифференциального привода, кинематики и обратной кинематики) и заканчивая практической реализацией (сборка отдельных компонентов, согласование приводов и датчиков с контроллерами). Много внимания уделено программной части - использованию метаоперационной системы ROS, моделированию в Gazebo, обработке изображений в OpenCV, разработке GUI робота на Qt и Python. Издание предназначено для широкого круга читателей, увлеченных робототехникой, программированием и самостоятельной сборкой различных DIY-устройств.
Лентин, Д. Изучение робототехники с помощью Python : практическое руководство / Д. Лентин ; пер. с анг. А. В. Корягина. - Москва : ДМК Пресс, 2019. - 250 с. - ISBN 978-5-97060-749-7. - Текст : электронный. - URL: https://znanium.com/catalog/product/1840450 (дата обращения: 30.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Лентин Джозеф

Изучение робототехники  
с помощью 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 очень серьезно относятся к вопросам защиты 
авторских прав и лицензирования. Если вы столкнетесь в интернете с неза
Доступ онлайн
590 ₽
В корзину