Колёсные роботы — наиболее распространённый тип мобильных роботов благодаря простоте конструкции, энергоэффективности и высокой скорости передвижения. Освоение принципов конструирования и программирования базовых движений, особенно поворотов, является фундаментальным этапом в изучении робототехники. Данная практическая работа направлена на формирование навыков сборки колёсного робота и реализации алгоритмов его поворота.
1. Теоретические основы движения колёсных роботов
1.1. Типы колёсных роботов
По способу организации поворота колёсные роботы делятся на два основных типа:
Наиболее популярными в учебной робототехнике являются роботы с дифференциальным приводом, так как они позволяют реализовать все базовые движения .
1.2. Дифференциальный способ поворота
При дифференциальном приводе поворот робота достигается созданием разности скоростей между левыми и правыми колёсами :
Если колёса с одной стороны вращаются быстрее, чем с другой, робот описывает дугу .
2. Конструирование колёсного робота
2.1. Необходимые материалы
Для выполнения практической работы потребуется:
микроконтроллер (Arduino Uno/Nano или аналогичный);
2–4 колеса с DC-моторами;
аккумуляторная батарея;
соединительные провода;
плата для прототипирования;
конструктивные элементы для шасси.
2.2. Типовое подключение компонентов
Принципиальная схема подключения для четырёхколёсного робота с дифференциальным приводом :
При использовании четырёхколёсной платформы правые колёса объединяются и управляются одним каналом драйвера, левые — другим .
3. Программирование поворотов робота
3.1. Базовые команды управления
Для управления двигателями используются следующие операции :
// Настройка пинов const int PWMA = 5; // ШИМ для правых моторов const int PWMB = 6; // ШИМ для левых моторов const int AIN1 = 7; // Направление правых моторов const int AIN2 = 8; // (автоматически инвертируется) const int BIN1 = 9; // Направление левых моторов const int STBY = 3; // Режим ожидания void setup() { pinMode(PWMA, OUTPUT); pinMode(PWMB, OUTPUT); pinMode(AIN1, OUTPUT); pinMode(BIN1, OUTPUT); pinMode(STBY, OUTPUT); digitalWrite(STBY, HIGH); // Активация драйвера }
3.2. Реализация базовых движений
Важное примечание: При тестировании движений робота рекомендуется держать его на весу, чтобы он не уехал и не врезался в препятствие .
4. Практическая работа «Программирование поворотов робота»
Цель работы: научиться программировать повороты робота на определённый угол и в заданном направлении .
Задание 1. Базовые повороты
Разработайте программу, в которой робот выполняет следующую последовательность действий:
Движение вперёд (2 секунды)
Остановка (1 секунда)
Поворот налево (1 секунда)
Остановка (1 секунда)
Поворот направо (1 секунда)
Остановка (1 секунда)
Движение назад (2 секунды)
Используйте функцию delay() для задания временных интервалов.
Задание 2. Организация кода с функциями
Перепишите программу из Задания 1, используя функции для каждого типа движения (forward(), backward(), leftTurn(), rightTurn(), stop()) . Пример:
void forward(int speed, int duration) { digitalWrite(AIN1, HIGH); digitalWrite(BIN1, HIGH); analogWrite(PWMA, speed); analogWrite(PWMB, speed); delay(duration); } void leftTurn(int speed, int duration) { digitalWrite(AIN1, HIGH); // правое колесо вперёд digitalWrite(BIN1, LOW); // левое колесо назад analogWrite(PWMA, speed); analogWrite(PWMB, speed); delay(duration); }
Задание 3. Поворот на точный угол
Для поворота на точный угол (например, 90 градусов) необходимо провести калибровку:
Запустите поворот с небольшой продолжительностью (например, 500 мс)
Измерьте фактический угол поворота
Вычислите время, необходимое для поворота на 90 градусов, по формуле:
время_для_90 = (90 / измеренный_угол) × время_тестаПодставьте полученное значение в программу
Задание 4. Движение по квадрату
Запрограммируйте робота на движение по квадрату со стороной, соответствующей 2 секундам движения вперёд. Используйте повороты на 90 градусов между сторонами.
5. Карта контроля выполнения работы
| Операция | Критерий оценки | Выполнение |
|---|---|---|
| Сборка схемы | Правильность подключений, отсутствие коротких замыканий | +/– |
| Программирование | Отсутствие синтаксических ошибок, корректная логика | +/– |
| Тестирование поворота налево | Робот поворачивается в правильном направлении | +/– |
| Тестирование поворота направо | Робот поворачивается в правильном направлении | +/– |
| Калибровка угла | Точность поворота (допуск ±10°) | +/– |
| Движение по квадрату | Робот возвращается в исходную точку | +/– |
Вывод: Выполнение данной практической работы позволяет освоить ключевые принципы управления колёсными роботами с дифференциальным приводом. Навыки программирования поворотов необходимы для решения более сложных задач навигации, движения по траектории и объезда препятствий. Полученные знания станут основой для дальнейшего изучения робототехники и создания автономных мобильных систем .
Комментариев нет:
Отправить комментарий