Управление движением мобильных роботов

8-11-2013, 18:05
Просмотров: 1661
Для управления движением трехколесных роботов используют две основные методики.
• Два приводных колеса на одной оси (или, возможно, с дифференциалом), которые вращаются одним двигателем и обычно расположены сзади. Одно свободно вращающееся управляющее колесо обычно расположено спереди и управляется двигателем, ориентирующим его в требуемом направлении. Такое расположение колес напоминает детский велосипед и используется в роботе "Андроид".
Управление движением мобильных роботов

• Два приводных колеса на отдельных осях - каждое с собственным двигателем. Колёса обычно устанавливают приблизительно на середине шасси, давать роботу возможность поворачиваться вокруг его центра. Третье колесо - просто ролик. Такой подход напоминает гусеничное транспортное средство (например, танк). Гусеницы программируют так же, как и колеса. Эта методика используется в роботе "Искатель".
Существует и третья методика, используемая в роботе "Скутер", который оснащен роликом, автоматически поворачивающий робота в одну сторону, когда тот движется в обратном направлении. Этот чрезвычайно простой метод проще всего реализовать.
Он не требует программирования, однако имеет ограничения.
Двухколесное управление полагается на индивидуальное переключение двигателей в прямом или обратном направлении.
Перечислены пять возможных действий робота. Они управляются цифровыми выходными сигналами: двигатель или работает или стоит.
Если он работает, то может вращать вал в прямом или обратном направлении. Мы могли бы запрограммировать и аналоговое управление, при котором двигатели могут работать на разных скоростях. В результате робот может следовать по изогнутой траектории.
Однако аналоговое управление усложняет программу, а цифрового в общем случае вполне достаточно.
Согласно используемой методике следование намеченной криволинейной траектории реализуется в виде последовательности коротких прямых участков, чередующихся с частыми, но малыми поворотами в требуемом направлении.
Например, для программирования следования по изогнутой влево кривой фактическая траектория должен состоять из ряда прямолинейных движений вперед длительностью примерно 0,2 с каждое (включаем оба двигателя и вызываем подпрограмму delay).
Между каждым прямолинейным сегментом присутствует короткий поворот влево. Подобное разбиение траектории преследует и другую цель: оно позволяет опрашивать между сегментами датчики для проверки корректности направления движения робота.
Пример этого - режим 3 из программы робота "Искатель". Робот программируется таким образом, чтобы следовать по изогнутой черной линии.
Между короткими сегментами движения вперед он опрашивает датчики, чтобы удостовериться все еще находится на линии. Если это не так, то происходит коррекция направления короткими поворотами влево или вправо.
Двигатели управляются четырьмя цифровыми выходами порта В. Для левого двигателя используются выходы А (с RB7) и В (с RB6).
Они идут на плату управления питанием, которая работает согласно описанию в. Для того чтобы запустить левый двигатель в прямом направлении на выход А подается сигнал высокого уровня, а на выход В - низкого. Для обратного направления на выходе А - низкий уровень, а на выходе В - высокий.
Если эти значения выразить в байтах, передаваемых в порт В, мы получаем 10000000 для прямого вращения вала и 01000000 - для реверсного (шестнадцатеричные 80h и 40h соответственно).
Для того чтобы робот двигался вперед, необходимо включить также и правый двигатель. Он управляется двумя выходами портов В и С (с RB5), а также - порта D (с RB4).
Полный байт для запуска обоих двигателей в прямом направлении должен переводить выходы RB7 и RB5 в состояние логической единицы: код 10100000 или аО в шестнадцатеричном виде. Для запуска обоих двигателей в обратном направлении следует перевести RB7 и RB5 в состояние логического нуля, a RB6 и RB4 - в состояние логической единицы. Соответствующий код имеет вид 01010000 или 50 в шестнадцатеричной форме. Код 00h переводит все управляющие входы в состояние логического нуля, останавливая оба двигателя.
Типичные команды для запуска обоих двигателей в прямом направлении выглядят следующим образом:
Это дает сегмент длительностью 0,2 с, однако мы могли бы называть вызываемую подпрограмму longdelay ("длинная задержка"), поместив перед ее вызовом подходящее значение в регистр w. Или же мы могли бы позволить роботу двигаться до тех пор, пока некоторое событие не прервет его движение.
Управление движением мобильных роботов

Этот способ программирования обусловлен тем, что порт В предоставляет только четыре канала (именно поэтому четыре младших разряда управляющего кода всегда содержат 0). В другом роботе можно было бы управлять двигателями от порта А или порта С, а другие каналы использовать в качестве выходов для других целей. Например, предположим, что двигатели управляются разрядами порта С.. Применяются те же самые коды, и передача значения в порт С включает двигатели. Однако это выключит все устройства, связанные с другими четырьмя выходами. Самый простой способ решить эту проблему заключается в изменении разрядов индивидуально с помощью команд bsf и bcf.
Двигатели, переключаемые реле, программируют подобным же образом, однако используются другие коды. Как и при транзисторном переключении, каждый двигатель управляется двумя разрядами, из которых один контролирует включение/выключение, а другой - направление. Для одного двигателя управляющие коды.
Управление с помощью двух двигателей реализуют путем удвоения цифр кода. Так, для движения вперед используют код Ofh, для движения назад - Oah, для поворота влево - Och, для поворота вправо - Oeh, а для останова - 00h.
В мы используем три двигателя, переключаемых реле для перемещения рамы X, рамы Y и инструмента в различные точки рабочей области.
Эти двигатели лебедок включаются по одному и наматывают или разматывают шнур лебедки. Параметры управления для одного двигателя 3.
Коды применяются, когда реле управляются разрядами . В проекте "Портальный робот" направление вращения лебедки контролируется выводом RC7, а три двигателя управляются выводами RC4 (Ml, лебедка Y), RC5 (М2, лебедка X) и RC6 (МЗ, лебедка инструмента).
Управление шаговыми двигателями.

Источник: delete-it.ru
Автор: ziko
Опубликовано пользователем: 81 (смотреть все)
Комментарии: