roboforum.ru

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

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




Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Алгоритм самонастройки ПД регулятора лайнтрейсера
СообщениеДобавлено: 26 дек 2010, 22:47 
Не в сети
Аватара пользователя

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

Я описал алгоритм до того, как его реализовал. Может вы найдете в нем грубые ошибки и это поможет сохранить мое время. Собираюсь реализовать алгоритм в течение новогодних каникул.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм самонастройки ПД регулятора лайнтрейсера
СообщениеДобавлено: 26 дек 2010, 22:53 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Настройку можно делать так - поставить датчик прохождения круга трассы и автоматом измерять время круга игнорируя круги на которых в бот передается корректировка коэфов.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм самонастройки ПД регулятора лайнтрейсера
СообщениеДобавлено: 26 дек 2010, 22:58 
Не в сети
Аватара пользователя

Зарегистрирован: 01 июл 2009, 08:59
Сообщения: 2254
Откуда: Екатеринбург
прог. языки: асемблер AVR
Не понял каким автоматом и кто должен измерять время круга.
но догадываюсь, что измерять время будет бот.
Раз коэффициенты передаются откуда то, подозреваю что с компа через радиоканал... Это значит что прога нужна для компа, нужна двухсторонняя связь, нужна доработка лайнтрейсера. Задача решится, но возни будет больше.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм самонастройки ПД регулятора лайнтрейсера
СообщениеДобавлено: 26 дек 2010, 23:00 
Не в сети
Аватара пользователя

Зарегистрирован: 19 янв 2010, 14:51
Сообщения: 979
Откуда: Петрозаводск
прог. языки: C, FBD, Wiring-Processimg,,,LD, SFC, ST...
ФИО: Вадим
Класно! Самообучающийся робик...

_________________
Роботы, уже среди нас...
Прошу прощения за аватар, никак схему динамической индикации не могу настроить :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм самонастройки ПД регулятора лайнтрейсера
СообщениеДобавлено: 26 дек 2010, 23:14 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Radist писал(а):
Не понял каким автоматом и кто должен измерять время круга.
Комп на котором ведется лог и манипуляции коэфами.

Radist писал(а):
подозреваю что с компа через радиоканал...
Да.

Добавлено спустя 2 минуты 17 секунд:
vadinator писал(а):
Класно! Самообучающийся робик...
Можно и так, ддя этого надо на длинном прямом участке дистанции нарисовать поперечную черту для затемнения всех датчиков или магнит расположить а на боте датчик холла или иначе дать боту информацию о прохождении круга.

_________________
Читайте !


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм самонастройки ПД регулятора лайнтрейсера
СообщениеДобавлено: 27 дек 2010, 22:08 
Не в сети
Аватара пользователя

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

У меня оба ведущих колеса с реверсом. Линейка датчиков выдает отклонение от центра линии плюс/минус 25 мм. Максимальный шим 255, что дает максимальный коэффициент П = 10, а с учетом реверса П максимум равен 20. Так я рассуждал. На деле же оказалось что отклонений от центра линии в 25 мм у бота практически нет, и коэффициент П может быть больше 20 (работает регулятор при этом без захода в насыщение). Выходит что зря я поставил 6 датчиков - хватило бы и 4. Просто мой бот не очень быстрый, максимальная скорость по прямой 23 см/с, а опрос датчиков проводится достаточно быстро - вот я до краёв линейки и не дохожу. Но я не знаю, можно ли было предвидеть этот результат заранее, или же в данном случае раз на раз не приходится.

Я проверял коэффициенты 7, 10, 15, 19, 22
Получил результаты (перевел их в секунды)
11,505
10,884
10,663
10,465
10,388

Это иллюстрация того, что на глаз коэффициенты можно подобрать ОЧЕНЬ грубо.

ЗЫ. Трасса не 1-34, а укороченная до 1,85 м. Но мой робот не лайнтрейсер в чистом виде - на нем я оттачиваю алгоритмы и испытываю датчики. Робот-многостаночник.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм самонастройки ПД регулятора лайнтрейсера
СообщениеДобавлено: 28 дек 2010, 01:04 
Не в сети
Аватара пользователя

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

ну тут не только от скорости зависит, а еще и от скорости отработки команд...
грубо говоря, вот задаете вы шим 200, за какое время робот до заданной скорости разгонится. То же касается и разворота.

Radist писал(а):
Это иллюстрация того, что на глаз коэффициенты можно подобрать ОЧЕНЬ грубо.

Еще неизвестно, как этот "локальный минимум" в координатах П и Д выглядит - с ходу трудно оценить.
Легко может оказаться, что этот минимум достаточно острый. Может быть вы просто далеко от него, поэтому кривая такая плавная.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм самонастройки ПД регулятора лайнтрейсера
СообщениеДобавлено: 28 дек 2010, 01:42 
Не в сети
Аватара пользователя

Зарегистрирован: 08 окт 2004, 16:43
Сообщения: 2114
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий
Просто довольно странно использовать ПИД на 4 или 6 датчиках.

_________________
Все новости о моих проектах http://savethebest.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм самонастройки ПД регулятора лайнтрейсера
СообщениеДобавлено: 28 дек 2010, 01:57 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
...если они дискретные.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм самонастройки ПД регулятора лайнтрейсера
СообщениеДобавлено: 28 дек 2010, 02:08 
Не в сети
Аватара пользователя

Зарегистрирован: 08 окт 2004, 16:43
Сообщения: 2114
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий
Ну а лайнтрейсере вроде дискретные...

_________________
Все новости о моих проектах http://savethebest.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм самонастройки ПД регулятора лайнтрейсера
СообщениеДобавлено: 28 дек 2010, 11:49 
Не в сети
Аватара пользователя

Зарегистрирован: 28 июл 2009, 10:02
Сообщения: 862
Откуда: Самара
ФИО: Павел Сергеевич
Цитата:
дискретные

А что мешает завести на аналоговый вход?

_________________
«Сон разума рождает чудовищ»


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм самонастройки ПД регулятора лайнтрейсера
СообщениеДобавлено: 28 дек 2010, 12:09 
Не в сети
Аватара пользователя

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

Но раз уж речь зашла о том, какие у меня датчики... У меня 6 оптронов, выходы с которых заведены на 6 каналов ацп. Есть две подпрограммы опроса датчиков: дискретная, где не учитывается амплитуда, а учитывается лишь положение относительно программного порога, и аналоговая, где определяется центр масс. К сожалению, линейка датчиков расположена близко к полу, поэтому вместо плавного "кадра" засветки в аналоговом режиме я имею резко меняющиеся данные. То есть и в цифровом, и в аналоговом режиме показания от линейки у меня изменяются с дискретом 5 мм. Коэффициенты у меня тоже грубые, поэтому управляющее воздействие меняется достаточно резко. В последующих конструкциях я это учту, а на фенольном шасси клиренс поменять очень проблематично.

На последок повторюсь: здесь мы обсуждаем алгоритм, который не зависит от вида датчика линии.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм самонастройки ПД регулятора лайнтрейсера
СообщениеДобавлено: 06 янв 2011, 22:48 
Не в сети
Аватара пользователя

Зарегистрирован: 01 июл 2009, 08:59
Сообщения: 2254
Откуда: Екатеринбург
прог. языки: асемблер AVR
Снова занялся алгоритмом. Экспериментально определил точку перегиба П - составляющей. Данные такие:

П время, сек
7 11,505
10 10,884
15 10,663
19 10,465
22 10,388
24 10,247
25 10,199 - вот он, минимум!
26 10,331
27 10,359

Так что в моем случае минимум не острый. Но эти данные получены не роботом, а мной - поэтому я и смог привести промежуточные точки. Задача на ближайшее время - чтоб я его запустил, а он сам нашел, что лучше всего когда П = 25.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм самонастройки ПД регулятора лайнтрейсера
СообщениеДобавлено: 06 янв 2011, 23:05 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
хм... не такой уж он и "не острый"?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Алгоритм самонастройки ПД регулятора лайнтрейсера
СообщениеДобавлено: 07 янв 2011, 00:47 
Не в сети
Аватара пользователя

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


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

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


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

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


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

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