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

Устройство и программирование автономных роботов. Проекты на Python и Raspberry Pi

Покупка
Артикул: 796810.02.99
Эта книга посвящена созданию интеллектуального робота и разработке кода для его поведенческих сценариев. Для построения робота используются широко доступные компоненты — датчики, двигатели, камеры, микрофоны, динамики, светодиоды и микрокомпьютер Raspberry Pi. Раскрывается ряд специализированных тем, таких как компьютерное зрение и голосовое управление. Также читатель узнает о специализированных сообществах, посвященных робототехнике, и перспективах ее развития. Книга подойдет как новичкам в области программирования, так и опытным программистам, желающим применить свои навыки в аппаратном проекте. Для изучения материала необходимо знание языка Python и умение работать с циклами, условиями и функциями.
Стейпл, Д. Устройство и программирование автономных роботов. Проекты на Python и Raspberry Pi : практическое руководство / Д. Стейпл ; пер. с англ. Е. В. Шевчук ; науч. ред. В. С. Яценков. - Москва : ДМК Пресс, 2022. - 520 с. - ISBN 978-5-97060-989-7. - Текст : электронный. - URL: https://znanium.com/catalog/product/2109590 (дата обращения: 22.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Дэнни Стейпл

Устройство 
и программирование 
автономных роботов

Learn Robotics 
Programming

Build and control AI-enabled autonomous 
robots using the Raspberry Pi and Python

Danny Staple

BIRMINGHAM—MUMBAI

Устройство 
и программирование 
автономных роботов

Проекты на Python и Raspberry Pi

Дэнни Стейпл

Москва, 2022

УДК 004.896
ББК  32.816
C79

Дэнни Стейпл
C79 
Устройство и программирование автономных роботов / пер. с англ. 
Е. В. Шевчук; науч. ред. В. С. Яценков. – М.: ДМК Пресс, 2022. – 520 с.: ил.

ISBN 978-5-97060-989-7

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

УДК 004.896
ББК 32.816

First published in the English language under the title ‘Learn Robotics Programming – Second 
Edition – (9781839218804)

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

Copyright ©Packt Publishing 2021
© Оформление, издание, перевод, ДМК Пресс, 2022
ISBN  (анг.) 978-1-83921-880-4
ISBN  (рус.) 978-5-97060-989-7

Оглавление

Участники ........................................................................................... 17
Об авторе ...........................................................................................................17
О рецензентах ...................................................................................................17

Предисловие ...................................................................................... 19
Для кого эта книга ............................................................................................19
Какие темы описаны в книге ...........................................................................19
Как извлечь из книги наибольшую пользу .....................................................21
Загрузка файлов с примерами кода ................................................................21
Code in Action ....................................................................................................22
Изображения в цвете ........................................................................................22
Используемые обозначения ............................................................................22
Оставайтесь на связи ........................................................................................23
Отзывы ..............................................................................................................23

ЧАСТЬ 1. ВВЕДЕНИЕ – ОСНОВЫ РОБОТОТЕХНИКИ ... 25

Глава 1. Введение в робототехнику ............................................... 27
Что такое робот? ...............................................................................................27
Продвинутые и впечатляющие роботы ..........................................................29
Марсоходы ....................................................................................................31
Роботы в доме ...................................................................................................32
Стиральная машина .....................................................................................32
Другие домашние роботы ............................................................................33
Роботы в промышленности .............................................................................34
Роботы-манипуляторы.................................................................................34
Роботы на складах ........................................................................................36
Роботы для участия в соревнованиях, учебные и любительские роботы .....36
Выводы ..............................................................................................................39
Задание ..............................................................................................................40
Дополнительные материалы ...........................................................................40

Глава 2. Структурные элементы робота – код и электроника ... 42
Технические условия ........................................................................................42
Внутреннее устройство робота ........................................................................42
Типы компонентов робота ...............................................................................46
Типы двигателей ..........................................................................................46
Другие типы приводов .................................................................................48

Индикаторы состояния – дисплеи, световые и звуковые индикаторы ....49
Типы сенсоров ..............................................................................................49
Контроллеры и устройства ввода/вывода .......................................................51
Контакты ввода/вывода ...............................................................................52
Контроллеры .................................................................................................53
Модели контроллера Raspberry Pi ...............................................................56
Набросок компонентов и структуры кода ......................................................57
Разработка аппаратного устройства робота ...................................................59
Выводы ..............................................................................................................62
Упражнения ......................................................................................................62
Дополнительные материалы ...........................................................................62

Глава 3. Изучение Raspberry Pi ....................................................... 63
Технические требования ..................................................................................63
Функциональные возможности Raspberry Pi..................................................63
Скорость и производительность .................................................................64
Возможности подключения .........................................................................64
Преимущества Raspberry Pi 3A+ ..................................................................64
Выбор способов подключения .........................................................................65
Контакты для подключения питания..........................................................66
Шины передачи данных ...............................................................................67
Входы/выходы общего назначения .............................................................67
Платы расширения HAT для Raspberry Pi ...................................................67
Операционная система Raspberry Pi ...............................................................68
Запись образа ОС Raspberry Pi на SD-карту ....................................................68
Выводы ..............................................................................................................70
Задание ..............................................................................................................71
Дополнительные материалы: ..........................................................................71

Глава 4. Автономное управление роботом с помощью  
Raspberry Pi ........................................................................................ 72
Технические требования ..................................................................................72
Сущность автономных систем и их преимущества .......................................73
Настройка Wi-Fi и SSH на Raspberry Pi ............................................................74
Поиск Raspberry Pi в сети .................................................................................76
Установка Bonjour для Windows ...................................................................76
Тест системы .................................................................................................77
Устранение неполадок .................................................................................77
Подключение к Raspberry Pi посредством PuTTY и SSH ................................78
Настройка конфигурации ОС Raspberry Pi .....................................................80
Изменение имени Raspberry Pi ....................................................................80
Защита Raspberry Pi ......................................................................................82
Перезагрузка и повторное подключение ...................................................82
Обновление программного обеспечения на Raspberry Pi .........................85
Завершение сеанса Raspberry Pi ..................................................................86
Выводы ..............................................................................................................86

6  
Оглавление

Задание ..............................................................................................................87
Дополнительные материалы ...........................................................................87

Глава 5. Создание резервных копий  
с помощью Git и SD-карты ......................................................................88
Технические требования ..................................................................................88
Причины возникновения проблем при написании и изменении кода .......89
Повреждение SD-карты и потеря данных ..................................................89
Изменение кода или конфигурации ...........................................................89
Стратегия 1 – хранение кода на ПК  
и его последующая передача ...........................................................................90
Стратегия 2 – создание копий с помощью Git ................................................92
Стратегия 3 – резервное копирование данных SD-карты .............................94
Windows .........................................................................................................95
Mac .................................................................................................................97
Linux ............................................................................................................100
Выводы ............................................................................................................101
Задание ............................................................................................................101
Дополнительные материалы .........................................................................102

ЧАСТЬ 2. СОЗДАНИЕ АВТОНОМНОГО РОБОТА – 
ПОДКЛЮЧЕНИЕ ДАТЧИКОВ И ДВИГАТЕЛЕЙ 
К RASPBERRY PI ........................................................................103

Глава 6. Сборка основания – колеса, питание  
и электропроводка .........................................................................105
Технические требования ................................................................................105
Выбор набора шасси .......................................................................................106
Размер .........................................................................................................106
Количество колес ........................................................................................107
Колеса и двигатели .....................................................................................108
Простота ......................................................................................................109
Стоимость ...................................................................................................110
 Заключение ................................................................................................110
Выбор платы контроллера двигателя ............................................................110
Степень интеграции ...................................................................................111
Использование контактов ..........................................................................111
Размер .........................................................................................................112
Пайка ...........................................................................................................113
Силовой источник питания .......................................................................113
Способы подключения ...............................................................................113
Заключение .................................................................................................114
Питание робота ...............................................................................................115
Проверка компоновки ....................................................................................117
Сборка основания ...........................................................................................120

Оглавление  7

Установка диска энкодера ..........................................................................122
Установка двигателя с помощью опор ......................................................122
Установка поворотного колеса ..................................................................124
Установка ведущих колес ...........................................................................125
Прокладка проводов...................................................................................126
Установка Raspberry Pi ...............................................................................127
Установка источников питания .................................................................128
Готовое основание для робота ...................................................................130
Подключение двигателей к Raspberry Pi .......................................................131
Подключение проводов к HAT-плате ........................................................132
Автономное питание .................................................................................134
Выводы ............................................................................................................136
Задание ............................................................................................................137
Дополнительные материалы .........................................................................137

Глава 7. Движение и повороты – код на Python  
для управления двигателями .......................................................138
Технические требования ................................................................................138
Разработка  кода для проверки двигателей ..................................................139
Подготовка библиотек ................................................................................139
Тест – обнаружение HAT-платы двигателя ...............................................139
Тест – демонстрация работы двигателей ..................................................141
Устранение неполадок ...............................................................................142
Как работает код .........................................................................................142
Рулевое управление робота ...........................................................................144
Типы рулевого управления ........................................................................144
Рулевое управление нашего робота ..........................................................147
Создание объекта Robot – код для взаимодействия с роботом ...................148
Для чего нужен объект? ..............................................................................149
Что мы поместим в объект? .......................................................................150
Разработка сценария для следования по заданной траектории .................154
Выводы ............................................................................................................157
Задание ............................................................................................................157
Дополнительные материалы .........................................................................157

Глава 8. Код на Python для работы с датчиками расстояния .....158
Технические требования ................................................................................158
Выбор между оптическими и ультразвуковыми дальномерами ................159
Оптические дальномеры................................................................................160
Ультразвуковые дальномеры .....................................................................160
Логические уровни и трансляторы логических уровней .........................161
Зачем использовать два датчика? .............................................................164
Подключение ультразвуковых дальномеров и обработка  
получаемых ими данных ...............................................................................165
Установка датчиков на шасси ....................................................................165
Подключение выключателя питания ........................................................167

8  
Оглавление

Подключение дальномеров .......................................................................170
Установка библиотек Python для работы с датчиками ............................172
Считывание данных ультразвуковых датчиков расстояния ...................172
Устранение неполадок ...............................................................................175
Обход стен – разработка сценария обхода препятствий .............................176
Добавление датчиков в класс Robot ..........................................................176
Разработка сценария обхода препятствий ...............................................177
Первая попытка разработки стратегии обхода препятствий ..................178
Разработка более сложной стратегии обхода препятствий .....................182
Выводы ............................................................................................................184
Задание ............................................................................................................184
Дополнительные материалы .........................................................................185

Глава 9. Код на Python для работы со светодиодами ..............186
Технические требования ................................................................................186
Что такое линейка RGB-светодиодов? ..........................................................187
Сравнение технологий светодиодной индикации .......................................187
RGB-значения .............................................................................................189
Подключение светодиодной линейки к Raspberry Pi ...................................190
Установка светодиодной линейки на робота ...........................................190
 Разработка кода для управления дисплеем робота  ..............................................191
Создание интерфейса для управления светодиодами ............................191
Добавляем светодиоды в объект Robot .....................................................193
Тест одного светодиода ..............................................................................194
Тест всех светодиодов ................................................................................196
Реализация радужного свечения на светодиодной линейке .......................197
Цветовые модели ........................................................................................197
Радужное свечение светодиодов ...............................................................199
Использование светодиодов для получения отладочных данных  
в сценариях обхода препятствий ..................................................................201
Реализация обычного свечения ................................................................202
Реализация радужного свечения ...............................................................204
Выводы ............................................................................................................205
Задание ............................................................................................................205
Дополнительные материалы .........................................................................206

Глава 10. Код на Python для управления сервоприводами ....207
Технические требования ................................................................................207
Что такое сервоприводы? ...............................................................................208
Сервопривод: взгляд изнутри ...................................................................209
Отправка управляющих сигналов сервоприводу .....................................210
Позиционирование сервоприводов с помощью Raspberry Pi .....................212
Создание тестового кода ............................................................................213
Устранение неполадок ...............................................................................216
Управление ДПТ и сервоприводами .........................................................217
Калибровка сервоприводов .......................................................................218
Создание механизма поворота и наклона ....................................................219

Оглавление  9

Сборка механизма ......................................................................................220
Установка механизма поворота и наклона на робота..............................224
Разработка кода для механизма поворота и наклона ..................................225
Создание объекта Servos ............................................................................225
Добавляем сервоприводы в класс Robot ...................................................228
Разработка скрипта для движения «головы» робота  
по окружности ............................................................................................229
Запуск сценария .........................................................................................231
Устранение неполадок ...............................................................................231
Реализация сканирующего сонара ................................................................232
Установка датчика ......................................................................................232
Установка библиотек ..................................................................................235
Поведенческий скрипт ...............................................................................235
Выводы ............................................................................................................238
Задание ............................................................................................................239
Дополнительные материалы .........................................................................239

Глава 11. Код на Python для работы с энкодерами ..................240
Технические требования ................................................................................240
Измерение пройденного расстояния с помощью энкодеров ......................241
Где применяются энкодеры .......................................................................241
Типы энкодеров ..........................................................................................241
Кодирование абсолютного или относительного положения ...................243
Кодирование направления и частоты вращения .....................................244
Энкодеры, которые мы будем использовать ............................................245
Установка энкодеров на робота .....................................................................246
Подготовка энкодеров ................................................................................247
Снятие Raspberry Pi ....................................................................................248
Установка энкодеров на шасси ..................................................................249
Подключение энкодеров к Raspberry Pi ....................................................249
Измерение пройденного расстояния с помощью кода на Python ..............251
Ведение журнала ........................................................................................251
Простой подсчет .........................................................................................252
Добавляем энкодеры в объект Robot .........................................................255
Преобразование тактов в миллиметры ....................................................257
Движение по прямой ......................................................................................259
Коррекция отклонения с помощью ПИД-регуляторов ............................259
Создание объекта ПИД-регулятора ...........................................................261
Создание кода для движения по прямой ..................................................263
Устранение неполадок ...............................................................................265
Перемещение на определенное расстояние .................................................266
Рефакторинг преобразования единиц измерения для класса 
EncoderCounter ............................................................................................266
Настройка констант ....................................................................................267
Разработка поведенческого скрипта для движения  
на определенное расстояние .....................................................................268
Выполнение точного поворота ......................................................................270
Создание функции drive_arc ......................................................................274

10  
Оглавление