roboforum.ru

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

Алгоритмы и дизайн робота для езды по линии

Re: Алгоритмы и дизайн робота для езды по линии

ALHIMIK » 16 фев 2009, 23:09

Вопрос к строителям лайнтрейсеров
Хочу построить лайнтрейсера-бим идея токава-
ИК светики кпитанию через резюк
фототранзистор подключены ко входу кампоратора
выход компаратора на элимент НЕ
к ин1 и ин2 лдшки подключается выход компаратора и инвертированный сигнал
Понимаю что это будет ездить :)
Сам вопрос - сможет ли он пройти трасу соревнований(которые OFFline)
PS
лайнтрейсера делаю в первые

Re: Алгоритмы и дизайн робота для езды по линии

Ruslan » 17 фев 2009, 03:07

ALHIMIK писал(а):Сам вопрос - сможет ли он пройти трасу соревнований(которые OFFline)

Теоретически - да. Для бимов сложности вызывают разрывы линии и перекрестки - на трассе 1-34 их нет. Конечно рекордной скорости не ожидай но попробовать стоит.

Re: Алгоритмы и дизайн робота для езды по линии

=DeaD= » 17 фев 2009, 09:51

А я тут на днях собрал бима на ошмётках от платы GATE-A8D8M2 - там как раз площадка под L293D была, разъемы аккума, движков, только датчики линии припаял и всё, так вот не проходит он линию, где она под углом сворачивает :( слишком инертные редукторы TAMIYA сдвоенные, пока они выключаются, чтобы повернуться - робот уже пролетает линию.

Надо детскую трассу сделать совсем для бимов :)

Re: Алгоритмы и дизайн робота для езды по линии

Ruslan » 17 фев 2009, 10:18

2DeaD: А ты скорость убавь или реакцию убыстри. В принципе даже для простешей трассы найдется бим, которому она будет сложновата.
Предлагаю владельцам бимов, которые затрузняются с зигзагами на трассе 1-34 заменить зигзаги на прямую линию. Ее можно получить дополнительно напечатав листы для нижней части трассы. Как вариант - выкладывайте демо-видео на своих трассах.

Re: Алгоритмы и дизайн робота для езды по линии

=DeaD= » 17 фев 2009, 10:51

Хм, попробуем :) а реакцию убыстрять не получается, я раскручиваю редуктор и он еще сколько-то крутится по инерции, разве что попробовать "в обратку" включить движки, чтобы быстрее тормозилось, если датчиком на линию наезжаем :).

Re: Алгоритмы и дизайн робота для езды по линии

sergy1976 » 10 мар 2010, 17:47

Коллеги!
Подскажите по поводу алгоритмов для трэйсера. Если увеличивается кол-во датчиков, то простой алгоритм перебора комбинаций уже не подойдет. Например, 6 датчиков, то теоретически комбинаций сигналов 2 в 6. Это уже много. :shock: Конечно, не все комбинации использовать (есть запрещенные), но все равно их слишком. В старом варианте с 4-мя датчиками, конструкция switch работала отлично.
Может в начале сравнивать значение сенсоров с определённым числом. Если, напр. = 110011, 111011, 110111, то движение вперед (активный уровень на линии лог.0). Если больше 000001, но меньше 101111, то значит линия уходит и нужно поворачивать влево. Здесь появляются грабли. Крутизна поворота получится одна для всех (нафих тогда столько датчиков). Второй баг, нет правильной реакции на запрещенные комбинации (напр, сработали крайние датчики, для непрерывной линии такое очень маловероятно, кроме натыкания на дугу).
Help!

Re: Алгоритмы и дизайн робота для езды по линии

Ruslan » 10 мар 2010, 20:00

Советую вычислять позицию по формуле:

LaTeX: pos = \frac{d_1 \cdot 1000 + d_2 \cdot 2000 + d_3 \cdot 3000 + \ldots}{d_1 + d_2 + d_3 + \ldots} = \frac{\sum_{i=1}^n 1000 i d_i}{\sum_{i=1}^n d_i}
где d1,2,3 = показания соответствующего сенсора.
После этого применяем ПИД.
Последний раз редактировалось Vooon 10 мар 2010, 21:21, всего редактировалось 1 раз.
Причина: tex :)

Re: Алгоритмы и дизайн робота для езды по линии

sergy1976 » 10 мар 2010, 21:06

RiO, не совсем въехал в формулу. Речь идет о логических уровнях или об абсолютных значениях (напр, складываем две единцы в логике, это опять "1", или 1+1=2)? Показания сенсоров могут быть "0" или "1". В числителе получим какое-то число, а если в знаменателе все нули, то как делить на ноль? :crazy:

Re: Алгоритмы и дизайн робота для езды по линии

Michael_K » 10 мар 2010, 21:30

По формуле - абсолютные значения.
Чем больше, тем более "датчик над линией"
Могут быть дискретные или аналоговые - пофиг.
Если в знаменателе ноль, то и в числителе, очевидно ноль.
Это будет означать, что "истина линия где-то рядом"

Re: Алгоритмы и дизайн робота для езды по линии

Ruslan » 10 мар 2010, 22:38

речь идёт об уровнях сигнала от сенсора (например 0-255).
обработка ноля - отдельная тема.
во-первых сенсоры надо ставить с шагом меньше ширины линии, чтобы не потерять линию между ними.
тогда смысл ноля зависит от предыдущего ненулевого значения: маленькое = линия слева, большое = линия справа, среднее = просто разрыв.

Re: Алгоритмы и дизайн робота для езды по линии

=DeaD= » 10 мар 2010, 22:41

А еще можно из этой информации косвенно узнавать свой угол к линии, но не направление этого угла.

Re: Алгоритмы и дизайн робота для езды по линии

sergy1976 » 11 мар 2010, 10:27

Спасибо, "буду подумать"

Re: Алгоритмы и дизайн робота для езды по линии

Andrei_SPb » 19 янв 2011, 00:41

Позволю себе поделиться с уважаемым сообществом некоторыми соображениями по поводу алгоритма лайнтрейсера. Почему бы не закладывать в робота конфигурацию трассы заранее? Правилами, ведь, это не запрещено? Или, если угодно, так: на соревнованиях на прохождение трассы дается две попытки; первую проезжаем медленно и аккуратно, записывая конфигурацию трассы в память. Пишем по данным энкодера в следующем виде - прямая, протяжённость x; дуга, радиус r, протяжённость x; прямая, протяжённость x... и так далее. Во второй попытке используем полученную информацию, т.е. держаться за линию продолжаем датчиками линии, но робот уже будет знать, где он находится. Это даёт возможность ускоряться на прямых и тормозить перед поворотами. И другая идея - поставить не одну линию датчиков, а две: одну на уровне колёс, другую - вынесенную вперёд. Это позволит роботу определять крутизну (радиус) поворота, что даст возможность реагировать на изгибы трассы с некоторым упреждением.

Re: Алгоритмы и дизайн робота для езды по линии

Radist » 19 янв 2011, 05:12

Идея не нова, на робофоруме уже встречалась. То, что вы предлагаете, сделать теоретически можно. Представим, что трасса в голове робота уже есть (полученная как вы описали - к этому мы еще вернемся). Весь вопрос в том, как этими данными воспользоваться. Вот вы говорите: на прямых ехать быстро. Моторы робота не абсолютно идентичны, будет увод, его надо компенсировать, нет гарантии, что на очень большой скорости это удастся. Скоро поворот - максимальная скорость снижается. А за какое время она снизится? Нужно знать динамические характеристики робота. Некоторые делали так: каждое отклонение от линии соответствует своему разбалансу скоростей моторов. Практика показала, что такой метод проигрывает ПД регулированию.
Теперь насчет получения линии. Чтобы проехать первый круг - уже нужен какой-то регулятор, причем желательно именно тот, который будет работать на высоких скоростях. Допустим пишем в память примерно так: едем ровно столько то импульсов энкодера, вот отклонение на 1, при нем проехали столько то, при таком отклонении проехали столько то. Мне кажется, что когда поедем второй раз - путь будет уже другим: будут и заносы, и небольшие вылеты с трассы. Все данные рассинхронозируются.
Может быть я ошибаюсь, но мне кажется, что лучше ПД регулятора для лайнтрейса ничего не придумать. Но я вас не отговариваю, опыт - критерий истины. Попробуйте ваш алгоритм, а потом ПД регулятор (настроенный, конечно). А результаты опыта - сюда. Вот и узнаем, кто прав :)

Re: Алгоритмы и дизайн робота для езды по линии

Andrei_SPb » 19 янв 2011, 22:36

Собственно, запоминание трассы не отменяет ПД регулятор, а лишь дополняет его. Не нужно пытаться проехать по данным энкодера 1 в 1, как в прошлый раз. Конфигурация трассы в памяти нужна только для того, чтобы знать, где разгоняться, а где тормозить. Держаться за линию продолжаем с помощью датчиков линии и ПД регулятора. Динамические характеристики робота можно измерить заранее и учесть в программе. Решить проблему увода на большой скорости может помочь автомобильная схема (с двумя поворачиваемыми колёсами).
По поводу получения трассы. Я потому и предложил сделать не одну, а две линейки датчиков линии, чтобы иметь возможность чётко определить начало поворота (и даже, может быть, его примерный радиус). Если линия на вынесенной вперёд линейке датчиков начала уходить в сторону, а линейка датчиков, расположенная на уровне колёс показывает, что мы продолжаем идти по линии, значит мы имеем поворот линии, а не просто небольшое отклонение робота от траектории. Запоминаем его, и в следующий раз при движении уже на большой скорости заблаговременно тормозим перед ним.
Мне кажется, что предложенная схема позволит выиграть дополнительное время там, где его только и можно выиграть - на прямых (поскольку скорость в поворотах ограничена силой сцепления колёс робота с поверхностью). Конечно, потребуется робот с высокими динамическими характеристиками, который способен очень быстро ускоряться и резко тормозить. Для этого можно взять модельный бесколлекторный двигатель с модельным регулятором. Мощьность таких двигателей доходит до сотен ватт, а регулятор способен пропускать через себя десятки ампер. Если дойдёт дело до изготовления лайнтрейсера, обязательно попробую реализовать вышеописанные принципы, поскольку только это может обеспечить превосходство над уже существующими роботами с хорошими ПИД-регуляторами.


Rambler\'s Top100 Mail.ru counter