roboforum.ru

Технический форум по робототехнике.
Текущее время: 10 апр 2025, 12:58

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 50 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Re: Skyer's PID Linetracer
СообщениеДобавлено: 12 фев 2012, 16:44 
Не в сети
Аватара пользователя

Зарегистрирован: 13 окт 2011, 09:32
Сообщения: 24
Откуда: Ханты-Мансийск
прог. языки: AVR asembler, Delphi, C++, Php
Собрал плату. Робот пока ездит на релейном алгоритме, криво конечно пока. Возникает вопрос как реализовать теперь ПИД? Сам алгоритм я понимаю, но вот как измерить уровень ошибки и как определить бозовое значение ШИМ - это не совсем понятно. Об измерении ошибки читал тут в ветке Алгоритмы и дизайн робота для езды по линии. Там Ruslan предлагал формулу расчета ошибки, которую щас думаю как применить. У кого каие есть предложения?

Radist как вы реализовывали это дело?

_________________
https://sites.google.com/site/skyersoft/home


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Skyer's PID Linetracer
СообщениеДобавлено: 13 фев 2012, 09:37 
Не в сети
Аватара пользователя

Зарегистрирован: 01 июл 2009, 08:59
Сообщения: 2254
Откуда: Екатеринбург
прог. языки: асемблер AVR
Значит задача такая: узнать от датчиков, где находится центр робота относительно центра линии (шириной 20 мм). Пляшем от датчиков (чаще всего это отражательные оптроны). Есть два способа их использования: в цифровом и аналоговом режиме. Для цифрового режима характерно использование компараторов и подстроечных резисторов (для подстройки датчиков), сигнал выходит черное/белое. Соответственно таких датчиков должно быть много, расположенных с определенным шагом (шаг 10 мм дает разрешение 5 мм). 5 датчиков дадут рабочий диапазон +-20 мм от центра. Хорошо это или плохо? Робот должен ехать по линии, срезать неспортивно (хотя ненадолго покидать линию можно), а значит много датчиков не надо, но при этом шаг отклонения будет большим, что сведет на нет все преимущества ПД регулятора. Гораздо интереснее аналоговые датчики, их и рассмотрим. Там уже не нужны компараторы и подстроечники, но нужен АЦП с несколькими входами. И АЦП должен работать достаточно быстро, поэтому не увлекайтесь с числом датчиков. В аналоговом режиме число датчиков может быть от одного и выше. Если датчик один, то он настраивается на границу линии. Половина пятна темная, половина светлая, код ацп примерно равен половине диапазона. Смещаемся - код ползет. Тут разрешение гораздо выше, нужно только успевать измерять АЦП и не терять линию. А потерять ее легко: сначала перескакиваем на другой край линии, а затем сходим с ума. Поэтому гораздо круче два аналоговых датчика, смотрящие на края линии. Результатом отклонения будет разность показаний - если ноль - мы четко по центру линии. Тут перескоков можно не бояться. Этого количества датчиков уже достаточно для нормального гонщика. Но можно поставить и больше, и подальше от пола. Тогда с каждого датчика придет свой аналоговый сигнал, совокупность которых можно интерпретировать как кадр положения линии. Эту информацию можно математически обработать (гуглим по словам "средневзвешенное, центр масс" или что-то такое), короче получить "субпиксельное разрешение", не забыв при этом отрезать шумы. Ну вот, информация от датчиков получена, осталось перевести ее в отклонение. Это легко, если знать где физически находятся датчики. Вот как-то так...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Skyer's PID Linetracer
СообщениеДобавлено: 13 фев 2012, 10:31 
Не в сети
Аватара пользователя

Зарегистрирован: 13 окт 2011, 09:32
Сообщения: 24
Откуда: Ханты-Мансийск
прог. языки: AVR asembler, Delphi, C++, Php
У меня 7 датчиков (может лучше будет оставить 5). Датчики опрашиваются посредством АЦП. Кстати проблема с нулевым каналом как показали многократные измерения заключается в самом АЦП. Поэтому встает вопрос о правильной калибровке датчиков. Думаю реализовать это проводя например 10 замеров и беря среднее значение за калибровочное, которое потом будет вычитаться из показаний. В ближайшее время реализую калибровку и расчет ошибки по формуле где в числителе сумма произведений номера канала и показания канала. А в знаменателе сумма показаний всех каналов. Таким образом разброс ошибки должен быть от 3.5 до 4.5 (идеальный случай).

В аттаче лежит видео теста с релейным алгоритмом.


Вложения:
Test.rar [3.51 МиБ]
Скачиваний: 0

_________________
https://sites.google.com/site/skyersoft/home
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Skyer's PID Linetracer
СообщениеДобавлено: 13 фев 2012, 12:14 
Не в сети
Аватара пользователя

Зарегистрирован: 01 июл 2009, 08:59
Сообщения: 2254
Откуда: Екатеринбург
прог. языки: асемблер AVR
Если склероз меня не подводит, то один замер делается около 100 мкс. 10 раз да на 5 датчиков - получается 5 мс. Вроде по времени нормально. Если скорость составляет 20 см/с, то проедет за это время 1 мм. Но это если между каналами не вводить никакой задержки, а часто бывает что она нужна. Видео посмотрел - вроде нормально ездит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Skyer's PID Linetracer
СообщениеДобавлено: 13 фев 2012, 13:46 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Ну будет центр немножко сдвинут (в пределах зоны чувствительности одного датчика) - ну и ничего страшного.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Skyer's PID Linetracer
СообщениеДобавлено: 25 фев 2012, 13:01 
Не в сети
Аватара пользователя

Зарегистрирован: 13 окт 2011, 09:32
Сообщения: 24
Откуда: Ханты-Мансийск
прог. языки: AVR asembler, Delphi, C++, Php
Реализовал примитивный П-регулятор. Для уменьшения влияния помех каждый датчик опрашивается 16 раз и потом показания усредняются. Написал все это еще дней 10 назад, но все руки не доходили отписаться. Также разобрался с дальномером, его думаю использовать для объезда препятствий типа кирпича на трассе. Выкладываю фотки робота и код (П-регулятор, опрос датчиков, шим, работа с дальномером HC-SR04). Код для дальномера выдает результат в ММ. Измерения показали что сам дальномер по показаниям плавает см на 1-2. Сейчас думаю потестить робота на трассе, которую выкладывал Ruslan (до этого ее заменяла изолента на столе).

Фотки делал на телефон, поэтому качество не очень.. :)


Вложения:
Комментарий к файлу: Схемы
LFR.pdf [157.43 КиБ]
Скачиваний: 0
Комментарий к файлу: Код
Files.zip [13.24 КиБ]
Скачиваний: 0
25022012133.jpg
25022012133.jpg [ 147.57 КиБ | Просмотров: 3919 ]
25022012131.jpg
25022012131.jpg [ 173.47 КиБ | Просмотров: 3944 ]

_________________
https://sites.google.com/site/skyersoft/home
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Skyer's PID Linetracer
СообщениеДобавлено: 07 мар 2012, 14:51 
Не в сети
Аватара пользователя

Зарегистрирован: 13 окт 2011, 09:32
Сообщения: 24
Откуда: Ханты-Мансийск
прог. языки: AVR asembler, Delphi, C++, Php
Странно.. за две недели ни одного скачивания.. неужели тема потеряла актуальность

_________________
https://sites.google.com/site/skyersoft/home


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Skyer's PID Linetracer
СообщениеДобавлено: 07 мар 2012, 17:34 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Тут счетчики скачиваний тупо не работают. Давно уже. :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Skyer's PID Linetracer
СообщениеДобавлено: 03 май 2012, 10:49 
Не в сети
Аватара пользователя

Зарегистрирован: 13 окт 2011, 09:32
Сообщения: 24
Откуда: Ханты-Мансийск
прог. языки: AVR asembler, Delphi, C++, Php
Реализовал нормальный П-алгоритм (в предыдущем были ошибки). Вообще реализовал его еще в середине марта, но руки дошли написать только щас. Также переделал платформу робота. Прикрутил туда Bluetooth HC-05 и дальномер HC-SR04. Дополнительно накидал на плату кучу мелочи, поэтому эта же плата у меня теперь и как отладочная для AVR-ок. Фотографии выложил на сайте. Щас допиливаю процедуру отладки.

Как можно определять прохождение круга автоматически? Есть идея, если в начале круга сделать прерывистую линию, то можно обрабатывать данную ситуацию датчиками. Хочу реализовать автоматическую настройку П-регулятора.

_________________
https://sites.google.com/site/skyersoft/home


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Skyer's PID Linetracer
СообщениеДобавлено: 05 май 2012, 13:03 
Не в сети
Аватара пользователя

Зарегистрирован: 01 июл 2009, 08:59
Сообщения: 2254
Откуда: Екатеринбург
прог. языки: асемблер AVR
У меня это была линия поперек трассы старт/финиш. Все датчики показывают "черное" - это она. Она должна быть достаточной ширины (2 см мне хватало).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Skyer's PID Linetracer
СообщениеДобавлено: 11 май 2012, 00:28 
Не в сети
Аватара пользователя

Зарегистрирован: 13 окт 2011, 09:32
Сообщения: 24
Откуда: Ханты-Мансийск
прог. языки: AVR asembler, Delphi, C++, Php
Radist, спасибо, я тоже к этому склонялся (просто думал может кто по-другому делает). А что насчет настройки? Как я понял по вашим сообщениям П-регулятор получилось автоматизировать, а ПД-нет? Не совсем понял мат. обоснование этого. Я планирую сделать так: увеличиваем P-коэфф. и смотрим среднюю за круг ошибку, если она уменьшилась, то продолжаем увеличивать коэфф., иначе уменьшаем к предыдущему. Вроде просто, но в чем может быть подвох?

_________________
https://sites.google.com/site/skyersoft/home


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Skyer's PID Linetracer
СообщениеДобавлено: 11 май 2012, 08:32 
Не в сети
Аватара пользователя

Зарегистрирован: 01 июл 2009, 08:59
Сообщения: 2254
Откуда: Екатеринбург
прог. языки: асемблер AVR
С П-регулятором все так и есть. Есть график Т(П) время от коэффициента П. Начинаем с такого П, при котором робот не теряет трассу и способен пройти ее полностью. Затем увеличиваем П до тех пор, пока время, поначалу уменьшающееся, не начнет увеличиваться. Так находится оптимум П. А вот дальше - теоретический затык. Я предполагал так: есть функция двух переменных П и Д. То что мы сделали до этого - делали при Д = 0. Пусть П - это ось х, Д - ось у, а Т - ось z. Я предполагал, что в окресностях точки П;0 найдется точка, в которой время будет еще меньше, переходим в эту новую точку и снова проверяем окресности, и так до тех пор, пока не придем в минимум. Я просчитался. Такой точки в окресности локального минимума не было - во всех точках время было больше :( . На этом я и застрял. Сможете пройти дальше - будет здорово.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Skyer's PID Linetracer
СообщениеДобавлено: 11 май 2012, 22:27 
Не в сети
Аватара пользователя

Зарегистрирован: 13 окт 2011, 09:32
Сообщения: 24
Откуда: Ханты-Мансийск
прог. языки: AVR asembler, Delphi, C++, Php
Radist, я тут накопал на Robofreak.ru перевод инструкции по настройке регулятора. Там по сути то же самое. Возникает два вопроса:
1 Стоит ли делать интегральную составляющую? В основном читал что толку от нее нет.
2 Сегодня после кучи прогонов задумался над оптимальным расстоянием между колесами (передним и задними). Так как при текущих параметрах, робот проезжает трассу, которую выложил Ruslan, с ошибками. Хотя сегодня удалось настроить его так, что он без схода с трассы проезжал кругов 5-10. Теперь думаю туда прикручу дифф. составляющую и буду смотреть. Если будет печально, то может придется подрезать робота.

Расстояние между колесами можно прикинуть на фотках. Думаю в скором времени обновить первый пост.

_________________
https://sites.google.com/site/skyersoft/home


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Skyer's PID Linetracer
СообщениеДобавлено: 12 май 2012, 03:58 
Не в сети
Аватара пользователя

Зарегистрирован: 01 июл 2009, 08:59
Сообщения: 2254
Откуда: Екатеринбург
прог. языки: асемблер AVR
Переведенный алгоритм имеет еще одно название - "метод научного тыка". Вот только науки в нем маловато. Интегральная составляющая в лайнтрейсере не нужна, объясняю почему. Интегральная составляющая - медленно меняющийся параметр, она накапливает ошибку с учетом знака. Хороший робот трассу проезжает очень быстро. А ведь чтоб вернуться на трассу - надо сперва избавиться от того, что накопил. Так что "И" только увеличит болтанку. "И" составляющая нужна в системах с потерями, а у нас система без потерь. А вот что касается расстояния между колесами... Я бы сказал, что важно не расстояние между передними и задними колесами, а расстояние между ведущими колесами и линейкой датчиков. Малое расстояние + большая скорость - робот не успевает реагировать на поворот. Большое расстояние позволяет лучше держать трассу (на маленькой скорости робот "носом" едет по трассе, а зад на поворотах заносит, на средней скорости центр робота держит трассу, а перед и зад на поворотах заносит, на большой скорости зад робота держится на трассе, а перед сильно виляет). Поэтому большому роботу легче жить на трассе. Поэтому чем меньше робот при равных скоростях - тем круче его создатель :) .

ЗЫ. Робот проезжает трассу с ошибками - проблема в настройке регулятора. Еще одна возможная причина - когда колеса не имеют реверса. Тогда для каждой скорости есть минимальный радиус поворота, который может быть больше радиуса трассы. Я сам с таким сталкивался. Так что у хорошего лайнтрейсера должно быть два Н-моста.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Skyer's PID Linetracer
СообщениеДобавлено: 19 май 2012, 18:26 
Не в сети
Аватара пользователя

Зарегистрирован: 13 окт 2011, 09:32
Сообщения: 24
Откуда: Ханты-Мансийск
прог. языки: AVR asembler, Delphi, C++, Php
Radist, у меня расстояние от ведущих колес до передней опоры - 14 см, а до датчиков - 17. Щас при введени диф. составляющей робот ездит намного лучше, иногда вылетает, но я думаю это вылечится донастройкой. Будет ли робот лучше ездить при меньшем расстоянии? Рассматриваю возможность обрезки задней части (где сейчас батарея) и перемещения ведущих колес на 4-5 см вперед

_________________
https://sites.google.com/site/skyersoft/home


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 50 ]  На страницу Пред.  1, 2, 3, 4  След.

Часовой пояс: UTC + 4 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO