-
Введение
-
Глава 1. Аппаратная основа
- Содержание Главы 1
- Подготовка
- Плата Arduino UNO
- Плата управления моторами
- Плата связи с датчиками
- Аппаратная основа на базе набора miniQ
- Аппаратная основа на базе набора Turtle
- Аппаратная основа на базе набора ShieldBot
- Как ученики строили своих miniQ роботов
- Этапы сборки
- Система электропитания робота
- Провода энкодеров и датчиков линии
- Завершение главы 1
-
Глава 2. Начало работ с системой программирования Arduino
- Содержание Главы 2
- Подготовка
- Общие правила организации систем управления
- Входные данные. Датчики
- Обработка данных. Микроконтроллер
- Выходные данные. Исполнительные устройства
- То, что нужно всегда помнить
- Начало работы с системой Arduino
- Загрузка программы-примера “Мигающий огонь”
- Модификация программы “Мигающий огонь”
- Алгоритм программы “Мигающий огонь”
- Завершение Главы 2
-
Глава 3. Управление тяговыми моторами
-
Глава 4. Связь с ультразвуковым датчиком расстояния
- Содержание Главы 4
- Подготовка
- Постановка задач
- Электрическое подключение датчиков расстояния
- Разработка алгоритма
- Исходный текст
- Адреса Echo и Trigger как глобальные переменные
- Отладка и испытание программы
- Руководство пользователя
- Приложение 4.1. Подсказки по сложному алгоритму
- Приложение 4.2. Исходный текст (для упрощённого алгоритма)
- Завершение главы 4
- Факультативная часть главы 4
-
Глава 5. Робот следует за рукой или лидером
- Содержание главы 5
- Подготовка
- Релейный регулятор
- Пропорциональный регулятор
- Утилиты
- UTILIT_OneRangeMeter ()
- UTILIT_Motors_Control ()
- UTILIT_Hand_Follow_Proportional (int _range_needed)
- Два факультативных упражнения после перерыва
- Программа следования за лидером
- Постановка задачи
- Макрос следования за Лидером
- Отладка и испытание программы Programm_modul_5_Leader_Follow.ino
- Если что-то не так
- Исследуем робота
- Важные замечания
- Приложение 5.1 Алгоритм пропорционального регулирования
- Приложение 5.2. Исходный текст утилиты регулятора для следования за рукой
- Приложение 5.3. Документация для макроса и утилит следования за лидером
- MACROS_Leader_Follow (int _distasnce_to_leader)
- UTILIT_LeftRightRangeMeter ()
- UTILIT_Leader_Follow_Proportional (int _range_needed)
- UTILIT_Motors_Control () & UTILIT_Motors_Stop ()
- Завершение главы 5
- Как можно улучшить нашего робота?
-
Глава 6. Структура программного обеспечения
- Содержание главы 6
- Подготовка
- Уровни программного обеспечения
- loop ()
- Задачи
- Макросы
- Утилиты
- Драйверы. Библиотеки. Калькуляторы
- Ввод-вывод
- Глобальные переменные
- Правила обмена информации между уровнями
- Практическое занятие 6.1. Учтём трение в механизмах
- Практическое занятие 6.2. Доворот в сторону лидера умножением
- Практическое занятие 6.3. Доворот в сторону лидера сложением
- Практическое занятие 6.4. Доворот в сторону лидера обнулением
- Практическое занятие 6.5. Делаем калькулятор
- Гонки за лидером
- Послесловие
- Список программ для Ардуино
- Лицензионное соглашение
То, что нужно всегда помнить
Итак, полученные датчиками данные, поступают в микроконтроллер (иногда его называют микропроцессор). Там они обрабатываются в соответствии с загруженной в память программой и затем в виде специальных сигналов подаются на исполнительные устройства. Именно таким образом живут и действуют все роботы и все системы автоматизированного управления.
Для успешного создания роботов надо очень чётко и ясно понимать несколько базовых принципов:
- Робот может делать только то, что ему задаёт программа, и только так, как эта программа написана Вами. Если программы в памяти микроконтроллера нет, то и робот ничего не сможет сделать.
- Датчики определяют, что и как робот может “почувствовать” в окружающем мире. Если датчиков Вы роботу не дали, то он ничего не сможет сделать.
- Исполнительные устройства определяют, что робот может выполнять. Если Вы забыли про исполнительные устройства, то робот ничего не сможет сделать физически.
Только Вы можете оживить груду железок и пластмассы и превратить её в осмысленно действующий агрегат. И он будет функционировать так и только так, как Вы его изготовите и запрограммируете.
В будущем, когда Вы будете продвигаться по нашей книге, помните об этом всегда. И если Вам захочется сказать: “Робот не работает”, вспомните об этой главе и начните спокойно разбираться, что Вы сделали не так, как надо.
Всё, что написано в этом курсе, служит цели научить Вас не только писать программы для робота и изготавливать его части, но и делать это так, чтобы Вы всегда могли найти в Вашей программе или в аппаратной части то место, которое функционирует не так, как Вы это задумывали, и исправить.
И есть ещё два обстоятельства:
- Человек существо забывчивое. Изготовив робота и написав превосходную программу, Вы перейдёте к следующему этапу, и начнёте постепенно забывать все подробности своей предыдущей работы. И когда к ней придётся вернуться (а такое в технике бывает очень часто), Вам придётся вспоминать забытое. Чтобы Вы смогли это сделать быстро, в инженерии и программировании есть определённые правила, как надо составлять исходный текст и рабочую техническую документацию – всякие описания, презентации, комментарии и руководства.
- Человек существо коллективное.
Мы всегда работаем вместе с коллегами и единомышленниками, так как робот — это довольно сложное устройство и один человек хорошего робота не сделает. Надо работать в коллективе и разделять задачи между собой. Мы все делаем разные части одной системы. Поэтому надо как-то передавать друг другу свои знания и достижения. Можно, конечно, поговорить друг с другом или позвонить, или связаться по скайпу. И это правильно – постоянное общение для совместной работы необходимо. Но этого мало – надо чтобы каждый мог пользоваться достижениями коллеги даже в его отсутствие. Поэтому необходимо уметь и хотеть писать рабочую документацию.
Получается, что мало сделать хорошего робота или написать программу – надо уметь описать результаты, так чтобы они были понятны другим или Вам самим по прошествии времени. Работая по этому руководству, Вы научитесь тому, как делать роботов и как составлять минимально необходимую документацию.