Точное управление движением роботов и производственных механизмов – крайне важная задача. От точности позиционирования робота или его исполнительного механизма зависит качество выполняемой работы или производимой продукции.
Существует множество методов, благодаря которым обеспечивается точность перемещения исполнительного механизма роботов, но поскольку большинство механизмов приводятся в движение сервоприводами, в первую очередь следует обращать внимание на точность работы привода.
В случае если от привода требуется точное перемещение исполнительного механизма робота на определенный угол, применяются системы управления с обратной связью по положению. Подобные системы отслеживают текущее положение вала привода, благодаря чему привод можно остановить в нужно позиции.
Иногда совокупность привода и системы управления называют сервоприводом. Как правило, данное название относится в первую очередь к модульным устройствам, обычно находящимся в одном корпусе. Также это название прочно закрепилось за модельными приводами, применяемыми в различных радиоуправляемых моделях и роботах.
Сервопривода получили широкое применение в моделизме ввиду большой доступности и возможности обеспечивать позиционирование каких-либо составных частей модели точно под определенным углом.
Единственным фактором, ограничивающим применение модельных сервоприводов, является наличие ограничения угла вращения выходного вала. Данное ограничение вызвано тем, что в качестве датчика обратной связи применяется потенциометр, имеющий ограничение по углу вращения. Потенциометр или переменный резистор в зависимости от угла поворота вала изменяет собственное сопротивление, что влечет за собой некоторое падение напряжения на его выводах, которое можно использовать в качестве управляющего сигнала, задающего положение вала однозначно.
Ранее в предыдущих работах нами рассматривались сервопривода Dynamixel в качестве приводов, отвечающих за передвижение робота. В этих работах привода использовались в режиме управления скоростью и могли осуществлять постоянное вращение по и против часовой стрелки.
В рамке данной работы предлагается рассмотреть применение сервопривода в режиме управления положением. В качестве робота для отладки системы управления предлагается использовать модель мотоцикла, у которого рулевой привод должен управляться по положению, чтобы регулировать угол поворота в процессе движения.
При разработке конструкции робота нужно помнить, что при работе в режиме управления положением, сервопривод имеет ограниченный углов вращения, поэтому в конструкции робота нужно учитывать наличие таких положений привода, которые он никогда не сможет достигнуть.
Ручное управление сервоприводом с помощью кнопок контроллера СМ-530
В рамках данной работы предлагается разработать систему управления роботом-мотоциклом, осуществляющую поворот его рулевого привода на один из заданных углов. Управление поворотом робота осуществляется в ручном режиме с помощью кнопок контроллера СМ-530.
Проектируемый робот предназначен для езды вдоль линии. При перемещении вдоль линии чрезвычайно важно своевременно выполнять маневры, чтобы робот не съехал с линии. Поскольку кривизна траектории может быть произвольной, радиус поворота робота оказывается переменным. Поскольку радиус поворота робота определяется поворотом его рулевого колеса, для перемещения по траекториям с малой кривизной зададим минимальное отклонение рулевого механизма, а для перемещения по траекториям с большой кривизной зададим большой угол поворота.
Для удобства управления роботом назначим кнопки D и U в качестве отвечающих за направление поворота, а радиус поворота будет определяться количеством нажатий на них.
В рамках данной работы необходимо написать программу управления роботом, которая в зависимости от команды пользователя осуществляла бы поворот рулевого механизма робота на заданный угол.
Для того чтобы сервопривод осуществил поворот в качестве управляющих параметров, необходимо задать конечное положение в абсолютных координатах от 0 до 1023. Значение переменных, характеризующих положение сервопривода, задается в функции инициализации.
Также на стадии инициализации осуществляется базовая настройка сервоприводов, а именно: задается режим работы сервоприводов, скорость вращения и стартовое положение.
В разрабатываемом роботе применяется два сервопривода, первый ID[1] применяется в качестве ведущего привода, поэтому он настроен на режим постоянного вращения со скоростью, задаваемой переменной forward_speed; второй сервопривод ID[2] применяется в качестве привода рулевого механизма, и он настроен на режим работы по положению.
Работа программы начинается с вызова функции инициализации и ожидания нажатия одной из управляющих кнопок.
Если пользователь нажимает не на ту кнопку, то контроллер воспроизводит предупреждающий звуковой сигнал, вызываемый функцией buzzer_button.
Программа управления сводится к бесконечному циклу ожидания нажатия одной из управляющих кнопок.
Как только пользователь нажал на одну из кнопок управления, программа переходит в режим ожидания либо подтверждения текущей команды, либо ожидания следующей команды. Подтверждение текущей команды осуществляется с помощью нажатия на кнопку S, а следующая команда задается повторным нажатием такой же, как и в первый раз, кнопки.
Поворот робота осуществляется в заданном направлении и на заданный угол, что задается функциями, такими как right_turn_45 и им подобными.
Каждая функция переводит привод ID[2] в требуемое положение, а после запускает привод ID[1] для движения с заданной скоростью. В результате получается, что робот движется по окружности за счет того, что его рулевой привод повернут в сторону, а ведущий привод движется с заданной скоростью.
Автоматическое движение робота с рулевым управлением вдоль линии
В предыдущей части работы рассматривалась задача ручного управления движением робота. На протяжении всех предыдущих работ нами рассматривались примеры разработки автоматических систем управления и данная работа не исключение. В этой части необходимо разработать модель роботизированного мотоцикла с рулевым управлением и двумя ИК-датчиками для определения черной линии.
Управляющая программа почти полностью идентична ранее рассматриваемым программам, управляющим движением робота вдоль линии с использованием двух ИК-датчиков. Единственным отличием этой программы от ранее используемых программ является использование алгоритма управления рулевым механизмом робота.
Сразу же после старта программа переходит в бесконечный цикл, анализирующий показания боковых ИК-датчиков, определяющих наличие черной линии. В случае обнаружения линии одним из датчиков, робот выполняет маневр в противоположную сторону.
Маневры робота осуществляются за счет перевода рулевого механизма в одно из положений – прямо, налево или направо, с помощью функций forward, turn_left, turn_right.
Проведите испытания разработанного робота на различных трассах при езде вдоль линии разной кривизны. Очевидно, что для разных случаев необходим поворот робота на определенный угол – в первом случае угол поворота рулевого механизма наибольший, а в третьем – наименьший.
В ходе испытаний установите минимальный радиус поворота робота, оптимальный для данной трассы, и настройте угол поворота рулевого механизма таким образом, чтобы робот отрабатывал маневры наиболее точно.
Выполнение сложных маневров
В предыдущих работах мы неоднократно рассматривали ситуации, в которых робот объезжал различные препятствия на его пути. Данная работа также не исключение, в данной части предлагается рассмотреть процесс выполнения маневров по объезду препятствий роботом с рулевым управлением.
Для того чтобы робот мог обнаружить объект на своем пути, он оснащается ИК-датчиком, расположенным по ходу движения.
Объекты, препятствующие движению робота, обнаруживаются с помощью ИК-датчика, расположенного на арке переднего колеса.
При движении вдоль направляющей линии робот с помощью двух ИК-датчиков определяет собственную ориентацию относительно маршрута. В случае обнаружения объекта на своем пути робот останавливается напротив него, воспроизводит звуковой сигнал и выжидает 3 секунды. После чего, если объект по прежнему препятствует движению, робот осуществляет маневр по его объезду.
Объезд препятствия осуществляется с помощью функций turn_left_obstacle и turn_right_obstacle, задающих направление движения. Время движения задается с помощью функции turn_standby, с ее помощью можно задать продолжительность времени, необходимого для объезда определенного препятствия.
После того как робот выполнил маневр, ему необходимо вернуться на линию и продолжить движение вдоль нее.
С помощью ИК-датчиков PORT[3] и PORT[2] робот определяет свое положение относительно линии и выполняет поворот в одну из сторон, чтобы объехать центрироваться относительно нее.
Заключение
В рамках данной работы были изучены основы управления сервоприводами и рассмотрены особенности их применения при проектировании роботов. В рамках практической части был разработан робот с рулевым управлением и разработана его система управления.
Основная задача данной работы – иллюстрация границ применимости сервоприводов. Важно понимать, что сервопривод по сравнению с обычным приводом – это не только технически сложное устройство, но и крайне дорогое. Поэтому применение сервоприводов при проектировании роботов должно быть технически и экономически обосновано.
Применение сервоприводов обосновано в системах, где необходимо обеспечить точность перемещения исполнительных механизмов или осуществлять перемещение исполнительных механизмов робота в ограниченном диапазоне рабочей зоны.
Материал с сайта robotgeeks.ru