roboforum.ru

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

МикроЛайнТрейсер

Re: МикроЛайнТрейсер

Сообщение Michael_K » 29 авг 2010, 01:09

Почему бы вам не использовать датчики в аналоговом режиме? Они же, как я понял у вас к АЦП подключены?
Чем темнее, тем больше датчик "над линией". Мой вообще на двух датчиках с пидом катался...
хотя тоже далеко не на полном шиме
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: МикроЛайнТрейсер

Сообщение Radist » 29 авг 2010, 11:09

Я думал над этим, но пока только чисто идейно. Перед началом заезда у меня делается калибровка: я точно знаю что центр у меня на линии, края на белом. Центр показывает малый код, края большой. Сейчас я определяю границу так: граница = ((((край+край)/2) - центр)/2) + центр. А потом по коду от каждого датчика я формирую сперва первоначальный код, потом перевожу его в линию: -3 -2 -1 0 1 2 3. А вот как все это перевести на аналоговые датчики? Пока думаю так: центр с его минимальным отсчетом - это ноль. Край с его максимальным отсчетом - это максимальный отсчет. Когда центр поедет к белому, он будет изменяться от минимума до максимума (но изменения будут только на границе линии), а значит код изменится достаточно быстро (у меня именно из-за предпологаемого цифрового режима работы датчики расположены очень близко к полу). При этом другой крайний датчик приедет на линию и вблизи границы его показания будут уменьшаться. В общем та же проблема - не могу понять алгоритм, а также то, подойдет он мне или нет.
Аватара пользователя
Radist
 
Сообщения: 2254
Зарегистрирован: 01 июл 2009, 08:59
Откуда: Екатеринбург
прог. языки: асемблер AVR

Re: МикроЛайнТрейсер

Сообщение Michael_K » 29 авг 2010, 15:54

Тут вам нужно для начала просто попробовать, различают ли ваши датчики вообще промежуточные положения.
Возможно их нужно приподнять над полом, отрегулировать подсветку или даже заменить, чтобы они так работали.

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

Я бы тупо нашел центр масс линии вообще без калибровки.
- получить данные от датчиков.
- взять показания самого освещенного датчика, скорректировать показания остальных по нему,
так чтобы самому освещенному датчику соответствовал ноль, и чем темнее датчик, тем значение было выше
(я предполагаю, что линия темная на белом фоне)
- Найти положение "центра масс"
LaTeX: X = \frac{\sum(D_i*X_i)}{\sum(Di)}
где Di - скорректированные показания датчика i, Xi - "положение" датчика i

Как-то так.

Добавлено спустя 10 минут 47 секунд:
В принципе, никто не мешает использовать эту же "формулу" для дискретных датчиков:
Например:
Задаете положения шести датчиков -50, -30, -10, +10, +30, +50
Они показывают, допустим 0, 0, 0, 1, 1, 0
(важно: единицы соответствуют линии!)

Считаем :)

LaTeX: \frac{(-50*0) + (-30*0) + (-10*0) + (10*1) + (30*1) + (50*0)} {0+0+0+1+1+0} = \frac{10 + 30} {2} = 20

Добавлено спустя 7 минут 53 секунды:
Для ясности приведу тот же пример с "аналоговыми" датчиками:
Допустим датчики показывают 0, 0, 5, 35, 15, 0
(Чем больше значение, тем больше датчик "над линией")

Считаем:

LaTeX: \frac{(-50*0) + (-30*0) + (-10*5) + (10*35) + (30*15) + (50*0)} {0+0+5+35+15+0} = \frac{-50 + 350 + 450} {55} = 14
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: МикроЛайнТрейсер

Сообщение Radist » 29 авг 2010, 16:57

Идея понятна, вы хорошо объяснили, спасибо. Попробую так и сделать, только у меня пока нет возможности увеличить число датчиков. Вот когда буду делать второго лайнтрейсера - там число датчиков увеличу. А у вас два датчика аналоговых было, они смотрели на край линий? Расстояние было 20 мм?
Аватара пользователя
Radist
 
Сообщения: 2254
Зарегистрирован: 01 июл 2009, 08:59
Откуда: Екатеринбург
прог. языки: асемблер AVR

Re: МикроЛайнТрейсер

Сообщение Michael_K » 29 авг 2010, 17:46

Да. Просто два аналоговых датчика. Расстояние между ними - по ширине линии.
На вход ПИДа подавалась просто разность значений датчиков.
Вот тут forum87/topic7255-15.html#p144251
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: МикроЛайнТрейсер

Сообщение Radist » 29 авг 2010, 21:30

Буду разбираться. Для начала попробовал свою вчерашнюю идею, насчет пропорциональности ухода с линии использовать отклонения 1,2,5. Это было очень просто сделать, всего 2 числа поменять. И коэффициенты я наловчился быстро подбирать. Каждый проход трека уникальный, но если говорить о рекорде, то у меня получилось за 9 секунд пройти мой 185 см трек, против 18 секунд в самом начале экспериментов.

Добавлено спустя 53 минуты 59 секунд:
Только что на центральном датчике проверил, как он ведет себя при переходе через границу черное/белое. Ведет себя нормально, код меняется от минимума до максимума плавно, но пятно от светодиода на полу маленькое (датчики от пола в 2,5 мм, чтоб постороннюю засветку минимизировать). Есть возможность приподнять датчики на 2 мм. Но тогда надо чтобы трасса освещалась равномерно, сверху. Сейчас я свои опыты делаю ночью (вечером ребенок не дает), освещение сбоку от настольной лампы. Завтра попробую реализовать программу, правда еще до конца алгоритм не продумал.
Аватара пользователя
Radist
 
Сообщения: 2254
Зарегистрирован: 01 июл 2009, 08:59
Откуда: Екатеринбург
прог. языки: асемблер AVR

Re: МикроЛайнТрейсер

Сообщение Radist » 30 авг 2010, 13:30

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

Re: МикроЛайнТрейсер

Сообщение Michael_K » 30 авг 2010, 15:36

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

Re: МикроЛайнТрейсер

Сообщение Radist » 30 авг 2010, 22:44

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

Re: МикроЛайнТрейсер

Сообщение Radist » 31 авг 2010, 07:13

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

Re: МикроЛайнТрейсер

Сообщение Michael_K » 31 авг 2010, 08:02

Radist, это все здорово, но...
Я вполне допускаю, что ваша тележка просто физически не может выполнить поворот на высокой скорости... То есть может быть просто мощность выдаваемая на колесо мала. Из-за этого и ускорения малы.

Например, мой лайнтрейсер (где-то давал ссылку в этой теме)... он ведь даже на плавных поворотах после разгона на прямой, чтобы резко тормознуть колесо, врубал его назад на всю катушку - настолько велика была Д-составляющая в ПИДе. Это при том, что вперед он ехал только на половине или двух-третях ШИМ-а.

Хотя, конечно, датчик пошире позволил бы сильнее "вылететь" с поворота - менее строго следить за трассой.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: МикроЛайнТрейсер

Сообщение Radist » 31 авг 2010, 09:52

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

Re: МикроЛайнТрейсер

Сообщение Radist » 06 сен 2010, 22:52

За это время сделал новый датчик и оживил его. Отлично работает в аналоговом режиме, его ширина стала 50 мм против бывших 30 (6 отражательных оптронов). Датчик выдает отклонение от центра и сторону, где линия в пределех от минус 25 до плюс 25 мм. Все это хорошо, но на этом хорошее заканчивается. Я вынес датчик вперед на 8 см. Он хоть и легкий, да моторчики то у меня слабые, на силе трения работают. Перестала ездить моя тележка на одном колесе (на двух ездит еще, но толку то) :( . Придется опять переделывать тележку, даже не знаю на каких движках попробовать. Будем искать.

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

Re: МикроЛайнТрейсер

Сообщение Michael_K » 06 сен 2010, 23:28

Попробуйте найти маленький редукторчик "фенольный". Типа такого:
forum8/topic6776.html
Он реально не сильно больше сервы получается, а передачи там не такие злостные.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: МикроЛайнТрейсер

Сообщение Radist » 13 сен 2010, 08:36

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

Пред.След.

Вернуться в Line Tracer

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

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