1. Конструкция робота для движения вдоль стенки
На базовую тележку надо прикрепить датчик расстояния и подключить его на 1 порт.
Датчик расстояния слегка выносится вперед:
Ориентацию датчика можно варьировать:
На базовую тележку надо прикрепить датчик расстояния и подключить его на 1 порт.
Датчик расстояния слегка выносится вперед:
Ориентацию датчика можно варьировать:
2. Движение вдоль стенки на П-регуляторе
Решим такую задачу. Робот должен двигаться вдоль стенки на заданном расстоянии L. Предположим, что левое колесо робота управляется мотором B, правое - мотором С, а датчик расстояния, подключенный к порту 1, закреплен несколько впереди корпуса тележки (это важно!) и направлен на стену справа по ходу движения.
Расстояние до стенки в настоящий момент времени, которое показывает датчик, обозначим S1. Измеряется она в сантиметрах.
Моторы двигаются со средней скоростью 50% от максимума, но при отклонении от заданного курса на них осуществляется управляющее воздействие u (на мотор В 50+u, на мотор С 50-u):
u=k*(S1-L), где k - некий усиливающий коэффициент, определяющий воздействие регулятора на систему.
Таким образом, при S1=L робот не меняет курса и едет прямо. В случае отклонения его курс корректируется. Для робота NXT средних размеров коэффициент k может колебаться от 1 до 10 в зависимости от многих факторов. Подберите его самостоятельно.
Важное замечание. При старте робота его надо будет направлять датчиком строго на стену, чтобы процесс считывания начального значения прошел без помех.
Крепление для датчика размещается на левой стороне:
Как и впервой конструкции, датчик располагается вертикально:
Увеличенное за счет корпуса робота расстояние до стены способствует расширению области обзора:
Очевидно, что изменение конструкции влечет изменение коэффициентов регулятора k1 и k2. Обычно подбор начинается с пропорционального коэффициента при нулевом дифференциальном. Когда достигнута некоторая стабильность на небольших отклонениях, добавляется дифференциальная составляющая.
Решим такую задачу. Робот должен двигаться вдоль стенки на заданном расстоянии L. Предположим, что левое колесо робота управляется мотором B, правое - мотором С, а датчик расстояния, подключенный к порту 1, закреплен несколько впереди корпуса тележки (это важно!) и направлен на стену справа по ходу движения.
Расстояние до стенки в настоящий момент времени, которое показывает датчик, обозначим S1. Измеряется она в сантиметрах.
Моторы двигаются со средней скоростью 50% от максимума, но при отклонении от заданного курса на них осуществляется управляющее воздействие u (на мотор В 50+u, на мотор С 50-u):
u=k*(S1-L), где k - некий усиливающий коэффициент, определяющий воздействие регулятора на систему.
Таким образом, при S1=L робот не меняет курса и едет прямо. В случае отклонения его курс корректируется. Для робота NXT средних размеров коэффициент k может колебаться от 1 до 10 в зависимости от многих факторов. Подберите его самостоятельно.
В данном случае П-регулятор будет эффектно работать только при малых углах отклонения. Кроме то, движение практически всегда будет происходить по волнообразной траектории. Сделать регулирование более точным позволит введение новых принципов, учитывающих отклонение робота от курса.
3. Пропорционально-дифференциальный регулятор
В некоторых случаях П-регулятор может вывести систему из устойчивого состояния.
Например, если робот направлен от стенки, но находится по отношения к ней ближе заданного расстояния, на моторы поступит команда еще сильнее повернуть от стенки, в результате чего с ней может быть утерян контакт (датчик расстояния получает отраженный сигнал практически только от перпендикулярной поверхности).
Для защиты от подобных ситуаций добавим в регулятор дифференциальную составляющую, которая будет следить за направлением движения робота.
u=k1*(S -L)+k2*(s1-Sold), где Sold - расстояние на предыдущем шаге.
Необходимо подобрать подходящие значения коэффициентов k1 и k2. Обычно подбор начинается с пропорционального коэффициента (k1) при нулевом дифференциальном (k2=0). Когда достигнута некоторая стабильность на небольших отклонениях, добавляется дифференциальная составляющая.
4. Конструкция робота с датчиком расстояния, расположенным под углом
Описанный выше робот может объезжать стены только при малых отклонениях от прямой линии. Рассмотрим вариант, при котором на пути движения будут возникать серьезные повороты, вплоть до прямых углом. Потребуется внести модификации и в конструкцию, и в программу.
Во-первых, робот должен будет смотреть не только направо, но и вперед. Ставить второй дальномер довольно затратно. Однако можно воспользоваться эффектом того, что ультразвуковой датчик имеет расширяющуюся область видимости .
Это напоминает угловое зрение человека: кое-что он может увидеть краем глаза. Стоит воспользоваться таким свойством и разместить датчик расстояния не перпендикулярно курсу движения, а под острым углом . Так можно убить сразу двух зайцев. Во-первых, робот будет видеть препятствия спереди, во-вторых, более стабильно будет придерживаться курса вдоль стены, постоянно находясь на грани видимости. Таким образом, без добавления новых устройств будет получено более эффективное использование возможностей дальномера.
Крепление для датчика размещается на левой стороне:
Как и впервой конструкции, датчик располагается вертикально:
Увеличенное за счет корпуса робота расстояние до стены способствует расширению области обзора:
Очевидно, что изменение конструкции влечет изменение коэффициентов регулятора k1 и k2. Обычно подбор начинается с пропорционального коэффициента при нулевом дифференциальном. Когда достигнута некоторая стабильность на небольших отклонениях, добавляется дифференциальная составляющая.
Комментариев нет:
Отправить комментарий