roboforum.ru

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


ПИД контроллер для управления двухколёсным роботом

Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать.
Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил.
Робот своими руками. Самодельный робот.

ПИД контроллер для управления двухколёсным роботом

Сообщение hax » 25 фев 2016, 20:23

Имеется двухколёсный двухмоторный робот с оптическими энкодерами на каждом колесе. Управление скоростью вращения - через PWM.

Я хочу указывать скорость каждого колеса, чтобы робот двигался по определённой траектории или делал разворот на месте.
В теории можно использовать 2 отдельных ПИД контроллера, для каждого колеса.

На практике возникают следующие проблемы:
- одно колесо может набирать скорость быстрее второго
- одно колесо может вообще не набрать нужную скорость из-за подсаженных батарей
+ нужно иметь дело с output saturation ( PWM может принимать значения 0...255)

что вызовет движение по другой траектории.

Выходит нужен третий ПИД контроллер, который будет следить за соотношением реальных скоростей, как-то перераспределять ошибки в первых двух ПИД.

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

Пока нашёл только
MOTOR SPEED CONTROLLER FOR DIFFERENTIAL WHEELED MOBILE ROBOT
http://www.arpnjournals.org/jeas/resear ... 5_3118.pdf

Но там без подробностей.
1.jpg
pid cascade
1.jpg (24.14 КиБ) Просмотров: 2841
hax
 
Сообщения: 5
Зарегистрирован: 27 сен 2014, 02:26

Re: ПИД контроллер для управления двухколёсным роботом

Сообщение Scorpio » 25 фев 2016, 21:46

Или купить готовый контроллер, который может все это делать (стабилизация скорости для каждого колеса, либо для пары колес).
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: ПИД контроллер для управления двухколёсным роботом

Сообщение Myp » 26 фев 2016, 00:27

робот даже при идеальном ПИДе не будет ехать идеально прямо, движение робота надо непрерывно контролировать, например по гироскопу или внешним маякам.
во вторых для робота поддержание скорости ПИДом недостаточно, нужно ещё непрерывно контролировать реальный суммарный угол поворота колеса и корректировать скорость чтобы оба колеса сделали одинаковое число оборотов.

озвученные 3 возможных проблемы в реальном роботе сущие мелочи по сравнению с другими вещами влияющими на его движение.
робот всё равно не поедет прямо, волны на линолеуме, или камешек под колесо и всё, неисправимая погрешность.
пид для колёс нужен для удобства, он не может быть основным инструментом навигации.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: ПИД контроллер для управления двухколёсным роботом

Сообщение Scorpio » 26 фев 2016, 00:38

Это точно.
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: ПИД контроллер для управления двухколёсным роботом

Сообщение lorry » 26 фев 2016, 01:33

Когда я создавал своего первого колесного робота, я еще не был знаком с ПИД-регулятором и придумал свой алгоритм решающий задачу синхронной работы двигателей на двухколесной платформе. Мой алгоритм автоматически корректирует скорость вращения двигателей (будем так условно называть ШИМ который мы подаем на моторы и при этом желаем получить определенную скорость вращения колес, не зависимо от заряда батарей) при разгоне, т.е. одно колесо никогда не будет разгоняться быстрее или медленнее второго, напряжения на батареях при использовании алгоритма тоже не играют особой роли, т.к. алгоритм сам подтягивает ШИМ до нужного значения (конечно если заряда в батареях вообще достаточно для работы). Т.е. если вы подаете на вход алгоритма значение ШИМ 150, то оба колеса плавно разгонятся до этой скорости не обгоняя и не отставая друг от друга, при этом, если батареи слегка подсажены то алгоритм сам доведет скорость вращения колес до указанной скорости. Естественно реальный ШИМ, который будет подан алгоритмом на колеса будет выше. Таким образом, указанный вами ШИМ на входе алгоритма, которому соответствует определенная скорость вращения колес, будет автоматически поддерживаться на выходе алгоритма.
При этом алгоритм крайне прост. Единственное требование, это четкая работа энкодеров и чем больше импульсов на оборот колеса выдает энкодер, тем точнее работа алгоритма. У меня, к примеру, это 1072 импульса на оборот.
Аватара пользователя
lorry
 
Сообщения: 448
Зарегистрирован: 04 фев 2014, 13:53
Откуда: Комсомольск-на-Амуре
прог. языки: машинные коды
ФИО: Иван Иваныч

Re: ПИД контроллер для управления двухколёсным роботом

Сообщение Scorpio » 26 фев 2016, 02:47

т.е. ШИМ 150 получается эквивалент скорости, а не мощности? Тогда лучше шимом его не называть, а задавать скорость в %.
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: ПИД контроллер для управления двухколёсным роботом

Сообщение lorry » 27 фев 2016, 02:06

Scorpio писал(а):т.е. ШИМ 150 получается эквивалент скорости, а не мощности? Тогда лучше шимом его не называть, а задавать скорость в %.

Не важно как его "назвать", можно и в процентах. Основная задача алгоритма держать установленное значение скорости вращения двигателей.
Аватара пользователя
lorry
 
Сообщения: 448
Зарегистрирован: 04 фев 2014, 13:53
Откуда: Комсомольск-на-Амуре
прог. языки: машинные коды
ФИО: Иван Иваныч

Re: ПИД контроллер для управления двухколёсным роботом

Сообщение loox » 27 фев 2016, 14:27

Коолеги
Вы что то лукавите ...
ПИД в данной задачке практически не осуществим
1. Какую скорость Вы стабилизируете - скорость вращения колеса? это при скорости вращения колеса 100 оборотов в минуту? поставьте энкодер на 100500 импульсов на оборот и что - по какому параметру стабилизировать?
a) по скорости вращения - тогда отсечки времени для измерения контролируемого параметра исчисляются секундами
б) по энкодеру - по скорости изменения угла поворота - ерунда какaя то
в) как правило форумчане пренебрегают самым важным параметром - способностью объекта к регулированию, те не задумываются о "передаточной характеристикой" объекта регулирования.

На картиночке про ПИД написан "motor" , и контроль осуществляется по первичному параметру, те по скорости вращения первичного вала, при этом, например, скорость вращения вала у потребителя считается опосредованно - если скорость вращения первичного вала постоянна - то и вторичного то же
И еще - пока вы стабилизируете скорости - куда уедет машинка ?
Вероятнее всего - необходимо просчитывать траектории движения и контролировать пройденный путь каждого колеса и корректировать движение, со всеми сопутствующими всевозможными проблемами.
Так или иначе, как и в любой "детской" задаче спокойно относится к недостаткам
loox
loox
 
Сообщения: 326
Зарегистрирован: 26 мар 2008, 12:45

Re: ПИД контроллер для управления двухколёсным роботом

Сообщение Myp » 27 фев 2016, 18:22

да пусть хоть скорость 10 оборотов в минуту, пиду это фиолетово.
воздействие идет не на колесо, а на электромотор и энкодер ставится поближе к мотору, стабилизируется скорость вращения мотора.
если мы имеем стабильную скорость вращения мотора (5000 оборотов например) то и скорость вращения колеса мы имеем тоже стабильную, хоть 100 оборотов хоть 10 оборотов.
зависит от редуктора.

Добавлено спустя 5 минут 38 секунд:
loox писал(а):это при скорости вращения колеса 100 оборотов в минуту? поставьте энкодер на 100500 импульсов на оборот и что - по какому параметру стабилизировать?
вобще не понял про что ты говоришь.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: ПИД контроллер для управления двухколёсным роботом

Сообщение Scorpio » 27 фев 2016, 19:47

На практике чаще нужна не стабильная скорость, а езда по прямой. Когда ведомое колесо подстраивается к ведущему. А пройденный путь измеряется по ведущему колесу.
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: ПИД контроллер для управления двухколёсным роботом

Сообщение loox » 27 фев 2016, 21:19

Мур
Вы хотя бы читайте что написано перед Вашими замечаниями - "Имеется двухколёсный двухмоторный робот с оптическими энкодерами на каждом колесе"
loox
loox
 
Сообщения: 326
Зарегистрирован: 26 мар 2008, 12:45

Re: ПИД контроллер для управления двухколёсным роботом

Сообщение Myp » 28 фев 2016, 02:24

и?
я всё равно не понимаю про что ты говоришь.
ну допустим всего 20 импульсов на оборот, автору негде распечатать энкодер и он от руки черным маркером нарисовал полоски
примерно вот так:
Изображение
при 100 оборотах в минуту импульсы идут с частотой 33 импульса в секунду.
то есть время реакции алгоритма на внешнее возмущение - 30 миллисекунд, это даже быстрее чем ты успеешь моргнуть, а уж для пида этого предостаточно.

а если автор не лентяй, то он возьмёт и поставит рядом второй фоторанзистор и по той же самой полосатой картинке получит в 2 раза больше импульсов и время реакции 15 мс.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: ПИД контроллер для управления двухколёсным роботом

Сообщение loox » 28 фев 2016, 21:42

Мур
непонятно ну что же, понятно, что непонятно:
- это говорит о том, что все участники советов, сами не никогда не использовали так называемый ПИД
Специально нашел популярное изложение - http://www.bookasutp.ru/Chapter5_2.aspx( учебник по этой тематике содержит раздел в два пальца толщиной и еще два пальца толщиной, про электрические машины которые могут управляться с помощью таких алгоритмов)
После того, как прочитаете статью, попробуйте для начала написать в численном виде формулу преобразования частоты импульсов, поступающих с предлагаемого Вами энкодера, в в скорость вращения колеса, пусть даже упрощенно и формулу расчета погрешности этого преобразования.
После этого, Вы возьмите, два внешне одинаковых колеса, и померьте из диаметры - разные, немного но разные
Ну и это включим в формулу, хорошо, что центры не смещены, а то и это пришлось бы включить
Почему я пишу о диаметрах - в машинках, коими мы развлекаемся, скорости маленькие и диаметры относительно скорости большие - например при диаметре колеса 5 см - один оборот составляет путь 15 см( пусть пи = 3) поэтому все ошибки преобразования(расчеты, формулы, упрощения и усреднения) существенно влияют на траекторию движения.
Но все это ерунда, автор топика написал: - "чтобы робот двигался по определённой траектории или делал разворот на месте" - и как это сделать с помощью поддержания постоянной скорости, пример:- проехать по траектории "восьмерки" с произвольным диаметром?
loox
loox
 
Сообщения: 326
Зарегистрирован: 26 мар 2008, 12:45

Re: ПИД контроллер для управления двухколёсным роботом

Сообщение lorry » 29 фев 2016, 01:21

loox писал(а):"чтобы робот двигался по определённой траектории или делал разворот на месте" - и как это сделать с помощью поддержания постоянной скорости, пример:- проехать по траектории "восьмерки" с произвольным диаметром?
loox

ПИД нужен для стабилизации вращения колес. Движение по определенной траектории это совсем другая задача, не нужно их путать. Но в обоих случая нужна одометрия. В первом для расчета угловой скорости поворота колеса, во втором для определения пройденного пути.
Аватара пользователя
lorry
 
Сообщения: 448
Зарегистрирован: 04 фев 2014, 13:53
Откуда: Комсомольск-на-Амуре
прог. языки: машинные коды
ФИО: Иван Иваныч

Re: ПИД контроллер для управления двухколёсным роботом

Сообщение Scorpio » 29 фев 2016, 18:39

ПИД вообще нужен для плавности регулирования. Чтобы какой-то процесс, так сказать, не дергался. В большинстве случаев достаточно П или ПД. Стабилизации вращения колес нужна вроде для езды по прямой, но, как тут уже говорилось, любая попавшая под колесо мусорина сбивает тележку с курса. Вывод - для данной задачи никакой ПИД вообще не нужен.
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

След.

Вернуться в Новичкам или основы основ роботостроения.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16