четверг, 11 октября 2012 г.

Роботы-барабанщики

1. Управление мотором на релейном регуляторе

"Робот поднимает меч и бросается на противника!" При этом робот должен удерживать свой меч при столкновении.
Для примера прикрепите к мотору длинную балку с помощью двух штифтов. Это будет меч. В момент запуска его надо поднять на угол в 45 градусов и удерживать в этом положении.

Регулируемой величиной будет угол поворота мотора, определяемый через показания энкодера, регулирующим органом будет сам мотор.
Алгоритм таков: обнулить показания датчика оборотов, задать желаемое положение в 45 градусов и в цикле поддерживать это положение, учитывая возможные отклонения. Если показания энкодера превышают 45, мотор вращается назад. В противном случае вперед. Задержка в 1 мс предназначена для разгрузки контроллера.
Что же мы увидим? Робот ведет себя как новобранец с мечом. Мотор удерживает балку, но как-то неуверенно: происходят постоянные колебания. Уменьшить их можно, разве что понизив мощность мотора. Попробуйте это сделать.
Особенность релейного регулятора в том, что он в принципе не может стабилизировать в нужном положении и вызывает колебания с той или иной амплитудой.

2. Калибровка и удар

Измените немного конструкцию робота, выбрав самую длинную балку. Барабанить робот будет по столу. Однако прежде чем нанести удар, надо определиться где именно находится поверхность "барабана". Для этого необходимо выполнить калибровку. Простейший вариант заключается в следующем:

 Робот опускает "палочку" на низкой скорости в течение достаточно большого промежутка времени, около 2 с. Поскольку скорость и мощность мотора взаимосвязаны, то, упершись в поверхность, палочка не причинит никакого вреда и просто остановится. Полученное положение мотора запоминается как нулевое. Калибровка произведена.
Удар будет представлять из себя поднятие палочки в абсолютное положение 15 градусов (замах) и опускание в нулевое положение (удар). Однако, учитываю люфт моторов Lego, а также инерцию их движения, следует прекращать опускание не в нулевом положении, а значительно раньше, например при 10 градусах. Это даст возможность сократить длительность соприкосновения с поверхностью и воспользоваться энергией отскока.

3. Управление с помощью датчика

Заменив ожидание таймера ожиданием нажатия датчика касания, можно получить управляемую игрушку.Человек будет нажимать на кнопку, а робот послушно выполнять удар.

Чтобы построить управление двумя палочками, потребуется поместить калибровку второго мотора в параллельный процесс. Вытянем алгоритм в цепочку и дублируем его. Единственное незначительное изменение - это изменение типа и мощности управления моторами при калибровке. Поскольку уже два двигателя будут прижимать палочки к полу, то во избежании поднятия всего робота стоит понизить их мощность до 2-10%.
Дублируя часть алгоритма  постарайтесь внимательно изменить все команды мотору А на команды мотору В.
Второкурсники Александр Григорьев и Николай Мирзоев:

Комментариев нет:

Отправить комментарий