roboforum.ru

Технический форум по робототехнике.

PID регулирование двигателей робота

PID регулирование двигателей робота

Lockdog » 10 сен 2015, 14:25

Добрый день!
Помогите, плиз, разобраться. Есть робот, который должен двигаться вдоль стены на заданном расстоянии, сбоку стоят два сонара спереди и сзади, которые смотрят на стену. Есть два мотора: слева и справа, с ШИМ управлением. Как построить пид регулятор, чтобы всё время робот двигался на заданном расстоянии от стены? Всем спасибо :)

Re: PID регулирование двигателей робота

dccharacter » 10 сен 2015, 17:12

Вот тут boez все разжевывает: forum16/topic9781.html

Re: PID регулирование двигателей робота

Lockdog » 10 сен 2015, 18:02

Неправильно я наверное выразился. Что такое пид и как работает я в курсе. Но я хочу понять, как управлять двумя моторами с двумя датчиками - для каждого мотора свой пид или есть что-то более изящное?

Re: PID регулирование двигателей робота

linvinus » 10 сен 2015, 18:37

Полагаю ещё наверное желательно двигаться равномерно вдоль стены?

должно быть несколько уровней управления.

Самый низкий - управляет моторами

Для каждого мотора:
1) получает на вход требуемую скорость вращения колеса
Далее зависит от конструкции, где у вас стоят энкодеры, если на самом колесе то манипулировать данными с энкодера не нужно.
Если энкодеры на моторе или между мотором и колесом (на промежуточной шестерне), то требуемую скорость колеса нужно привести к скорости энкодера через передаточное число редуктора

2) Считывает текущую скорость вращения колеса с энкодера и вычисляет ошибку
2) пропускает ошибку через пид регулятор получает значение ШИМ для мотора
3) Заносит новые значение ШИМ в таймер.

Более высокий уровень, оперирует в абсолютных координатах (V - линейная скорость, W - угловая )
1) получает на вход требуемое расстояние до стены, желаемую линейную скорость V (как быстро ехать)
2) вычисляет текущее расстояние до стены
3) пропускает через пид регулятор, ошибку расстояния до стены, получает W куда двигаться лево-право и как быстро
4) вычисляет какая скорость должна быть у каждого колеса чтобы получить необходимый вектор {V,W}
5) передаёт новые скорости колёс на уровень ниже.
Подробнее про управление тут
mobile_robot_control.pdf
(277.21 КиБ) Скачиваний: 0

Еще подробнее тут Уравнения движения роботов с двумя независимыми ведущими колёсами
fpm918.pdf
(1.58 МиБ) Скачиваний: 0

Re: PID регулирование двигателей робота

Lockdog » 10 сен 2015, 18:40

Спасибо за ответ. На колёсах энкодеров нет, то есть обратная связь только через сонары.

Re: PID регулирование двигателей робота

linvinus » 10 сен 2015, 18:46

Lockdog писал(а):Неправильно я наверное выразился. Что такое пид и как работает я в курсе. Но я хочу понять, как управлять двумя моторами с двумя датчиками - для каждого мотора свой пид или есть что-то более изящное?

Более изящное, наверное, реализовать аналоговый пид.

Можно попробовать так
L0 - необходимое расстояние
L1 - расстояние спереди
L2 - расстояние сзади
K - коэффициент угловой скорости (подбирается эмпирически , можно начать с 1)
ШИМ_V - линейная скорость приведённая к ШИМ.
датчики по правому борту робота.
То
ШИМ_L = ШИМ_V - (L0-L1)*K
ШИМ_R = ШИМ_V - (L0-L2)*K

формула не вовсех случаях верна, лень просчитывать, самое простое отдельно для четырёх вариантов проработать
L1>L0 && L2>L0,
L1>L0 && L2<L0,
L1<L0 && L2>L0,
L1<L0 && L2<L0,


ещё можно
(L0-L1)*K заменить на ПИ или ПИД регулятор. pid(L0,L1)

Только нужно проверять что L1 и L2 находятся в пределах диапазона (стена видна) иначе стоп.

Re: PID регулирование двигателей робота

Myp » 11 сен 2015, 10:50

а зачем пид? инерционности то вроде нет.
есть всего 4 варианта, то есть просто проверяем 4 условия в цикле, и корректируем шим моторов пропорционально погрешности в каждом условии.

Re: PID регулирование двигателей робота

dccharacter » 11 сен 2015, 18:18

Т.е. ПИД только с Ki и Kd равными нулю?

Re: PID регулирование двигателей робота

Radist » 26 окт 2015, 19:50

Давайте рассмотрим эту задачу по простому, может и без шима обойдемся. Представим, что сонары дают расстояние в миллиметрах. Стена для определенности слева. Передний сонар показывает 100 мм, задний - 99, значит робот смотрит от стены. Включаем правый мотор, а выключим его когда передний сонар покажет 99 - робот стал параллельно стене.Теперь включаем левый мотор, а выключаем его когда передний сонар покажет 100 мм. Повторить нужное количество раз. Включение и выключение - чем не ШИМ? ПИД регулятор выродился в позиционный (П=много, время интегрирования бесконечно, время дифференцирования равно 0). Дополнительный бонус - задний радар не нужен - можно в два раза больше роботов сделать. Не напоминает движение пылесоса вдоль плинтуса? Первые модели щупали стену контактным бампером, те, что понавороченней - щупают стену бесконтактным датчиком.


cron
Rambler\'s Top100 Mail.ru counter