roboforum.ru

Технический форум по робототехнике.
Текущее время: 27 ноя 2024, 04:18

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




Начать новую тему Ответить на тему  [ Сообщений: 125 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7, 8, 9  След.
Автор Сообщение
 Заголовок сообщения: Re: МикроЛайнТрейсер
СообщениеДобавлено: 29 авг 2010, 01:09 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроЛайнТрейсер
СообщениеДобавлено: 29 авг 2010, 11:09 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроЛайнТрейсер
СообщениеДобавлено: 29 авг 2010, 15:54 
Не в сети
Аватара пользователя

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

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

Я бы тупо нашел центр масс линии вообще без калибровки.
- получить данные от датчиков.
- взять показания самого освещенного датчика, скорректировать показания остальных по нему,
так чтобы самому освещенному датчику соответствовал ноль, и чем темнее датчик, тем значение было выше
(я предполагаю, что линия темная на белом фоне)
- Найти положение "центра масс"
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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроЛайнТрейсер
СообщениеДобавлено: 29 авг 2010, 16:57 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроЛайнТрейсер
СообщениеДобавлено: 29 авг 2010, 17:46 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроЛайнТрейсер
СообщениеДобавлено: 29 авг 2010, 21:30 
Не в сети
Аватара пользователя

Зарегистрирован: 01 июл 2009, 08:59
Сообщения: 2254
Откуда: Екатеринбург
прог. языки: асемблер AVR
Буду разбираться. Для начала попробовал свою вчерашнюю идею, насчет пропорциональности ухода с линии использовать отклонения 1,2,5. Это было очень просто сделать, всего 2 числа поменять. И коэффициенты я наловчился быстро подбирать. Каждый проход трека уникальный, но если говорить о рекорде, то у меня получилось за 9 секунд пройти мой 185 см трек, против 18 секунд в самом начале экспериментов.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроЛайнТрейсер
СообщениеДобавлено: 30 авг 2010, 13:30 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроЛайнТрейсер
СообщениеДобавлено: 30 авг 2010, 15:36 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроЛайнТрейсер
СообщениеДобавлено: 30 авг 2010, 22:44 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроЛайнТрейсер
СообщениеДобавлено: 31 авг 2010, 07:13 
Не в сети
Аватара пользователя

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


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

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Radist, это все здорово, но...
Я вполне допускаю, что ваша тележка просто физически не может выполнить поворот на высокой скорости... То есть может быть просто мощность выдаваемая на колесо мала. Из-за этого и ускорения малы.

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

Хотя, конечно, датчик пошире позволил бы сильнее "вылететь" с поворота - менее строго следить за трассой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроЛайнТрейсер
СообщениеДобавлено: 31 авг 2010, 09:52 
Не в сети
Аватара пользователя

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


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

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

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


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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: МикроЛайнТрейсер
СообщениеДобавлено: 13 сен 2010, 08:36 
Не в сети
Аватара пользователя

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


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

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


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

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


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

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