Устройство и программирование автономных роботов. Проекты на Python и Raspberry Pi
Покупка
Тематика:
Программирование и алгоритмизация
Издательство:
ДМК Пресс
Автор:
Стейпл Дэнни
Перевод:
Шевчук Е. В.
Науч. ред.:
Яценков Валерий Станиславович
Год издания: 2022
Кол-во страниц: 520
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Профессиональное образование
ISBN: 978-5-97060-989-7
Артикул: 796810.02.99
Эта книга посвящена созданию интеллектуального робота и разработке кода для его поведенческих сценариев. Для построения робота используются широко доступные компоненты — датчики, двигатели, камеры, микрофоны, динамики, светодиоды и микрокомпьютер Raspberry Pi. Раскрывается ряд специализированных тем, таких как компьютерное зрение и голосовое управление. Также читатель узнает о специализированных сообществах, посвященных робототехнике, и перспективах ее развития.
Книга подойдет как новичкам в области программирования, так и опытным программистам, желающим применить свои навыки в аппаратном проекте. Для изучения материала необходимо знание языка Python и умение работать с циклами, условиями и функциями.
- Полная коллекция по информатике и вычислительной технике
- Аналитика данных
- ДМК Пресс. Информационные системы и технологии
- ДМК Пресс. ИТ-технологии для профессионалов
- Интермедиатор. Информационные системы и технологии (сводная)
- Интермедиатор. ИТ-технологии для профессионалов (сводная)
- Интернет вещей (IoT)
- Программирование и алгоритмизация
- Программирование на Python
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Дэнни Стейпл Устройство и программирование автономных роботов
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 Оглавление