При определенных соотношениях механической и электромагнитной постоянных времени, а именно при переходные процессы в электроприводе имеют колебательный характер.
<del>
Рис. 5.7. Изменение момента (а) и скорости (б) при пуске ДПТ НВ при существенной индуктивности цепи якоря
Итак задача: есть трасса, есть линия, есть машина ,есть скетч и есть рекорд? Вопрос кто или что ограничивает рекорд. Ну что бы был рекорд,надо выше скорость, надо мощнее мотор, который будет преодолевать сопротивление воздуха и трения на трассе. А это зависимость кубическая (в третей степени). Опять же если скорость выше, то машина будет быстрее пересекать линию. То или линию делать шире (ага сейчас организаторы конкурса позволят расширить линию) или быстрее реагировать, частоту процессора повышать.(но думаю тут дело не скорости процессора). Есть такой факт. Что бы пройти быстрее трассу нужны хорошие тормоза. Потому что набирая скорость на прямых участках надо на повороте ее сбросить. А это обеспечивают тормоза. Почему вопрос упирается в тормоза. Потому что кинитическая энергия это mV2/2 . Если на малых скоростях ее легко набрать и легко сбросить. И тормозной путь будет значительно меньше ширины линии. То чем выше скрость тем выше тормозной путь и машинка вылетает за линию.
Когда уже перестанем насиловать свой мозг, а передадим все эти вопросы оптимизации нейронным сетям - ???
Пора уже переходит к следующему технолгическому укладу (6-му ("ИИ")), а вы сейчас пытаетсь "примерно" решить задачку в стиле 5-го технологического уклада ("автоматическое управление").
Вычислительной мощности современного микроконтроллера вполне хватает, чтобы в нем "жил" искусственный интеллект.
Давайте уже шагайте вперед, а не топчитесь на месте (решая примитивные задачки типа включить/выключить светодиод)
"Итак задача: есть трасса, есть линия, есть машина ,есть скетч и есть рекорд? Вопрос кто или что ограничивает рекорд. Ну что бы был рекорд,надо выше скорость, надо мощнее мотор, который будет преодолевать сопротивление воздуха и трения на трассе. А это зависимость кубическая (в третей степени) .."
Ну вот это та самая причина, из-за которой на Робофинист повезли откровенно унылую материальную базу. Те моторы, что были приобретены - оказались откровенно слабыми, как и те, что рассмотрены тут выше. Облегчать тележку - имеем сильно ограниченные возможности, желая оставаться в рамках "Ардуино как Лего". Хочется не только "быстро носиться по трассе", но и показать что такое можно (в доп. пределах) делать ДЕТИШКАМ, собирая машинки из "кубиков". Минимальный вес, что нам удалось достичь - 135гр или около того. Неплохо, но для штатных моторов N20 - все-таки "многовато" и соревноваться с машинками 80-100гр - бесперспективно, применяя "типовой ПИД". Тем более, что его применение практически непрерывно выводит управление моторами в 4-й квадрант (думаю, теперь уже с теорией ознакомились многие)..
Ну .. рекордом я бы это не называл, не мы одни такие, есть и лучше. Пока что наш подход (табличное моделирование функций управления) позволяет катать существенно тяжелее тележки со скоростями близкими к облегченным с ПИД-управлением. Но и только.
Сейчас есть понимание (и случайно найденный практический пример) того, что МОЖНО кататься на скоростях, превышающих теор. предел по трению (Клапауций - ты не прав!) .. но вот нет "теории" как и почему оно так .. за что тема и поднята по второму разу.
Да, тормоза - "наше всё". Грамотные, правильные и вовремя. Но этого пока недостаточно. Надо вывести управление тележкой из 4-го квадранта по максиуму, иначе никакие моторы долго не выдержат, а они и так пользуются в режиме "перегруза", ибо отношение "тяга/вес" (энерговооруженность эл. привода в целом)) явно недостаточно.
Грустно, что кроме троллей и флудерастов, которым пофиг где и кого поносить, мало кто принимает участие в обсуждении.
Вопрос:Если мощность двигателей можно как-то измерить. Но как измерить "мощность тормозов"? Это скорее измеряют коственно, тормозным путем с определеной скоростью , и временем торможения.Последнее измерить сложнее, но на гонках это тоже немаловажный факт.
Вопрос: У вас есть моделька. Как замерить ее тормозной путь. 1)-разогнать до определеной скорости. Разумеется не до "ШИМ-скорости", а до реальной. Привет энкодер на вращение. 2) подать с помощью сенсора команду остановки-модель едет перпендикулярно лиии и на линии идет сигнал СТОП и 3) померить рулеткой на сколько заехала моделька.
Вопрос: Куда и какие тормоза ставить? Если у вас на модели 4 колеса и на двух стоят моторы, то тормоза можно поставить на оставшихся колесах. Ведь все понятно. Эти колеса свободно вращаются и трение они не должны создавать, что бы моделька ездила быстрее. Но и процессе торможения модельки эти колеса тоже не учавствуют. А вот это уже не хорошо. Так что на них желательно повесить тормоза с тем же принципом как и у электромагнитных муфт.
ПС: Есть еще один вариант повесить на оставшие колеса еще пару моторов. Тогда при езде вперед подать 10% мощности, что бы компенсировать свои потери. А при торможении добавить импульс 10% мощности назад. Но здесь надо провести кучу исследований длительности тормозного пути, по схеме приведеной выше.
Господа! Я не в силах продраться через срач и понять суть высокого диспута.Простите.
Можно ли уточнить позиции "с нуля"?
-------------------------------
1. Задача.
Прохождение трассы на самобеглой тележке с автономным уравлением за минимальное время.
Трасса указана некой линией, от которой нельзя отклоняться более чемна хх см, так?
Снимать заранее и пользовать модель трассы запрещено, так?
========================
Аналитического решения задача не имеет. Как и любая задача управления - цель приблизиться к идеалу.
Совершенно очевидно, что есть несколько факторов, максимально влияющих на результат.
Вот они:
1. Мощность двигателя.
2. площадь контакта колеса, материал покрышки, нагрузка на колесо - все, что влияет на коэфф. сцепления.
3. способность предвидеть маневр и его точную величину. То есть, раз нет модели, насколько выдвинуть вперед и какой точности датчик линии использовать. Можно ли использовать средства измерения скорости,нагрузки на ось и пр.
..все остальное считается тем или иным способом. Демагогию про то, что это должно быть доступно детям - в жопу. Искуственные ограничения - это бег в мешке - не смешно и не удобно.
==
Собственно вопрос:
Из трех факторов выше, что и как ограничено правилами соревнований?
Господа! Я не в силах продраться через срач и понять суть высокого диспута.Простите.
Можно ли уточнить позиции "с нуля"?
-------------------------------
1. Задача.
Прохождение трассы на самобеглой тележке с автономным уравлением за минимальное время.
Трасса указана некой линией, от которой нельзя отклоняться более чемна хх см, так?
Снимать заранее и пользовать модель трассы запрещено, так?
========================
Аналитического решения задача не имеет. Как и любая задача управления - цель приблизиться к идеалу.
Совершенно очевидно, что есть несколько факторов, максимально влияющих на результат.
Вот они:
1. Мощность двигателя.
2. площадь контакта колеса, материал покрышки, нагрузка на колесо - все, что влияет на коэфф. сцепления.
3. способность предвидеть маневр и его точную величину. То есть, раз нет модели, насколько выдвинуть вперед и какой точности датчик линии использовать. Можно ли использовать средства измерения скорости,нагрузки на ось и пр.
..все остальное считается тем или иным способом. Демагогию про то, что это должно быть доступно детям - в жопу. Искуственные ограничения - это бег в мешке - не смешно и не удобно.
==
Собственно вопрос:
Из трех факторов выше, что и как ограничено правилами соревнований?
Для 3 пункта
Максимальные размеры робота 200*200*200 мм.
Во время заезда робот не может изменять свои размеры.
а датчиками хоть увешайся только надо успеть информацию с них обработать.
а датчиками хоть увешайся только надо успеть информацию с них обработать.
Да что там обрабатывать. Или у вас машинка паралельно заезду теорему Пифагора анализирует. Датчики должны показывать ошибку ухода с линии. И чем точнее тем лучше. Это точно от скорости машинки не зависит. Другой вопрос, что разогнавшая машинка не сразу остановится. А когда остановится трасса окажется уже не между колес. Вот поэтому не надо думать о теореме Пифагора , когда едешь как сумашедший. Вот поэтому и ограничивают скорость автомобилей. Может какому -то водителю захочется подумать о своем , а не глядеть на дорогу.
Во время заезда робот не может изменять свои размеры.
а датчиками хоть увешайся только надо успеть информацию с них обработать.
1. я правильно понял, что я не могу сделать вынесенную на полметра вперед штангу, чтобы заранее видеть линию?
2. органичения на мощность электроники есть? если я хочу видеть трассу далеко, то могу ли я поставить оранж пи и камеру с оптикой, чтобы в реальном времени видеть линию на метр вперед? Если нет то жаль. ;)
я просто считаю, что лучшее решение - нормальное читерство. ;) все ездят на АВР 16 МГц (уно-нано-мега), а ты езди на АРМе в 4 ядра и полтора ГГц. вместо дурацких фототранзисторов - нормальную камеру. Анализ изображения в реальном времени, предсказание, ТОЧНОЕ, кривизны поворота за метр до него, тензодатчики на все оси, для контроля оптимального входа в вираж. Контроль проскальзывания на все 4 колеса, все ведущие на хороших BLDC. Отсюда возможность контролируемого дрифта. Можно еще балансирную массу в пределах габарита двигать, чтобы внутренние колеса в вираже подгружать.
и ДА, это будет совсем не детская машинка... особенно по цене.
Забыл еще про покрышки из специального липкого силикона, тогда можно программу упростить и дрифт не обсчитывать.
Я не говорю, что писать, даже под 4-х ядерный арм, такое можно быстро, но реально. Ничего изобретать не надо. все эти вещи уже есть и всю теорию можно найти, а значит и написать. Полгода и бюджет от 10К баксов. ;)
Это если по-взрослому подходить.... а остальное - "бег в мешке".
-----------------
вот интересно, с такой тележкой организаторы сразу выпрут нафиг или сперва подумают?
Да! ВОт еще читерский вопрос: если во время квалификации запомнить трассу (самой машинкой, без внешних, запрещенных, приборов), это нарушение? Ведь если есть модель трассы, то даже на Нано можно проехать ее оптимально. И ничего городить не нужно.
Да! ВОт еще читерский вопрос: если во время квалификации запомнить трассу (самой машинкой, без внешних, запрещенных, приборов), это нарушение? Ведь если есть модель трассы, то даже на Нано можно проехать ее оптимально. И ничего городить не нужно.
японцы так и делают - первый проход медленный, затем ускоряются до вылета: запоминают предпоследний и на ега параметрах едут.
1. Соревнований много и разных, на каждом свои правила, но общая суть едина: проехать заданную трассу за минимально возможное время. Съездом, как правильно указано считается нахождение тележки всеми опорами (не обязательно колесами!) с одной стороны линии. Вариации:
а) линия - черная полоса на белом поле, может быть "узкой" - 15мм или евролиния, "робофестовской" - 20мм и "широкой" - 50мм или русская линия. Есть также варианты с прерывистой линией, в т.ч. из "кружочков", "квадратикой" и т.п., инверсной белая линия на черном поле (местами) и т.п., может иметь вариации по ширине (местами)..
б) вариации правил на съезд: игнор съезда менее N секунд (как правило не более 3), полный запрет (дисквалификация), требование вернуться взад на место до съезда;
в) размеры тележек: типовые 200х200, 250х250, реже 300х300 и даже 400х400 для "русской линии" в 50мм. Вес ограничивается редко и как правило до 5 кГ. Типовые размеры реальных тележек в районе 200х200 и чаще 170х170. Всё остальное, как правило, едет "хуже". Вес стараются сделать "как можно меньше".
г) трасса может быть как известна заранее (типовые трассы: Робофест, широкая линия 50мм: для младшего и старшего возраста - 2 варианта, трассы robochallenge - 15мм с прошлых лет), так и до соревнований и на тренировочные поля перед заездами могут выложить "типа такой", а непосредственно на соревновательное поле выложить "новую" трассу. Направление движения (по/против" часовой стрелки", первая/вторая дорожки и т.п.) может быть известно заранее, а может определяться исключительно на момент запуска конкретно вашей тележки судьей.
Тут кто во что горазд и имеет ли соотв. ресурсы напечатать нечто заранее и сохранить это в тайне.. Робофестовская трасса хороша тем, что рисована "от руки" и на ней практически нет 2-х одинаковых поворотов, и она относительно небольшая (можно разместить в комнате) 3х1.5м и вымерена по длине - 9м60см, а также имеет "промежуточную" ширину линии, но как недостаток - имеет перекресток и стартовую линию, которые скоростные роботы для "евролиний" (15мм) часто принимают за поворот и успевают(!) свернуть "за угол".
д) На трассе могут быть препятствия, которые или надо преодолевать (горка, балка, качающийся мост) или объезжать их временно покидая трассу (кирпич - практически видел даже обычный М-75, стенка). Бывают и комбинации препятствий. Какие препятствия выставят судьи на соревновательную трассу, как правило решается непосредственно перед стартом всех участников (для всех одинаково) методом "игральный кубик".
е) Соревнования могут быть по конкретной мат. базе (как правило "Lego EV3"), так и "смешанные", что гораздо реже. Могут быть как в конкретной возрастной группе, так и "без ограничений".
ж) Старт-Финиш бывает как "фото", так и по "отмашке судьи" или по заданному сигналу/свистку. Замер времени как ручной так и электронный. Если дорожек больше одной или зон старта на дорожке, то может одновременно стартовать более 1 машинки и могут проходить "финальные заезды" на призовые места, а гонки "на время", тогда называются "квалификация" и проходят для оценки "кто с кем едет" (наш Робофест-2017 в частности: 1 ошибка прохождения линии на "четвертьфинале" и усё .. тока третье место, несмотря на квалификацию)
з) любая связь с тележкой во время проезда - запрещена практически везде и любым способом. Если обнаруживается - дисквалификация, и возможно надолго. :)
1. Гонщики класса "профи" используют соответствующую материально-техническую базу от спец. фирм, таких как Polulu (эта просто наиболее часто). Это: мотор-редукторы, колеса со спец.резиной, комплекты и наборы готовых датчиков настроенных на соотв. ширину (часто 8-10шт на 15мм). Из контроллеров часто едут Нано, СТМ32 и последнее время - Teensy 3. Аккумуляторы на 80% - Li-po, Li-ion. Средний вес таких тележек 110 - 250гр и от гонки к гонке снижается неуклонно. Старт-пуск со смартфона, просмотр параметров, настройка ПИД - с него же. Средняя стоимость такой тележки (моя оценка, мож соврал) в районе 10 000руб.
2. Гонщики на образовательных конструкторах. С этими всё ясно и так. Используют что есть в наборе, соревнуются практически всегда исключительно промеж себя, и ещё и делятся по наборам. Причина - понятна: "дополнительные проходные баллы" при поступлениях в ВУЗ и пр.
3. Самодельщики .. тут кто во что горазд... вот мы - из этих. :)
Продолжу. Применяемые "спец. средства", особенно во "взрослых" категориях (Робофинист 2017, "высшая лига" в частности тоже):
1. Шины из очень мягкой микропористой резины или силиконовые со спец. протектором по типу Формула-1. Имеют к-т трения более 0.8 о гоночный баннер с трассой. Специально моются, протираются "спиртом" перед каждым заездом. Есть в т.ч. и самодельные.
2. Импеллер(ы) (призер прошлых лет робот "Карлсон", вес 120гр) на носу тележки для повышения маневренности на разворотах.
3. Импеллеры для прижима тележки к трассе. Ставится по центру тяжести всей тележки (по возможности).
Программные решения:
а) "публичные":
"что вижу - то пою". Самая простая программа для 2-х датчиков: выключаем мотор с той стороны, датчик которой видит линию. Тем не менее, в ряде случаев вполне способна конкурировать с ПИД.
"ПИД регулятор". Замер датчиков вычисляет текущее отклонение середины линии датчиков от оси движения и ПИД регулятором производится устранение этой ошибки. На сейчас практически типовое ПО.
"конечный автомат" .. применяется редко, но тоже видел.
ну и вот наше решение: по результатам замеров, считается модель по которой строится таблица управления моторами в зависимости от текущей ошибки с датчиков.
Ошибка считается примитивно: каждый датчик имеет условное "расстояние от оси" (0 - по центру, +1,-1, +2,-2 и т.д.) и тупо суммируются все датчики, которые видят линию. После чего делим сумму на общее количество датчиков. Видим линию - датчику присваивается "1", видим поле - "0". Вот на это "видение" и домножается расстояние датчика при суммировании.
Разные "АРМ", имеющие встроенный float в качестве "видения линии" используют отнормированное значение яркости непосредственно с датчика на диапазон 0..1. В результате получаем float ошибку, которая гораздо точнее дискретной. Собственно и ПИД у них также считается через float, что дает более плавное управление. Результат в обоих случаях нормируется на диапазон ШИМ.
Торможение. Во-первых, есть "естественное" торможение, ибо любой поворот требует разной скорости моторов, а на прямой их часто разгоняют до макс. ШИМ. Соответственно, управление остается только на внутреннем колесе и чем круче поворот - тем сильнее будет торможение за счет снижения скорости внутреннего колеса.
Во вторых, если поворот круче заданного (ошибка растет быстрее ограничения), то производят снижение скорости и внешнего колеса тоже.
Торможение ABS. Есть применение и ему в ряде решений. В этом случае моторы включают "взад" на заданное время и "на выбег" с чередованием. Сокращает тормозной путь достаточно существенно и применяется в разворотах на радиусах до 100мм. Как результат - хорошо видно как тележка встает колом на развороте или сразу после.
Проблема в том, что все эти меры НЕ позволяют ехать на скоростях даже 80% от предельной по к-ту трения.
ВОТ КАК ЕХАТЬ на 90-120% ОТ К-ТА ТРЕНИЯ И ЕСТЬ ОБСУЖДАЕМЫЙ ВОПРОС.
Да! ВОт еще читерский вопрос: если во время квалификации запомнить трассу (самой машинкой, без внешних, запрещенных, приборов), это нарушение? Ведь если есть модель трассы, то даже на Нано можно проехать ее оптимально. И ничего городить не нужно.
Изложил основные положения и типовые решения. Думаю теперь Вы самостоятельно способны ответить на этот вопрос. :)
Если нет, то подскажу, почему так никто не делает: ошибка движения постоянно колеблется с высокой скоростью. Интегрирование далеко не всегда дает правильный результат, особенно при недостаточно настроенном ПИД. С учетом ограниченного количества датчиков (как правило 2-3-5-6-8-10шт) диксретизация ошибки может сильно затруднить настройку ПИД, которая и так не проста.
С учетом изложенного "запоминать трассу" у НАНО не то что не хватит памяти, а даже не хватит места "сообразить" что интегрированный кусок замеров есть "поворот с малым радиусом".. тележку колбасит непрерывно и где там тот самый "поворот" .. надо ещё догадаться.
1. я правильно понял, что я не могу сделать вынесенную на полметра вперед штангу, чтобы заранее видеть линию?
У каждой трассы/тележки есть свое "оптимальное" расстояние выноса датчиков вперед. Вынос дальше не улучшает ситуацию. Как правило соревнования ограничивают размер больше чем это оптимальное расстояние. По-просту - "хватает" того что разрешено.
wdrakula пишет:
2. органичения на мощность электроники есть? если я хочу видеть трассу далеко, то могу ли я поставить оранж пи и камеру с оптикой, чтобы в реальном времени видеть линию на метр вперед?
Таких ограничений в ряде соревнований нет. Где-то есть: "только Лего". "только Ардуино" и т.д.
wdrakula пишет:
я просто считаю, что лучшее решение - нормальное читерство. ;) все ездят на АВР 16 МГц (уно-нано-мега), ..
Делайте. Робофинист, robochallenge - к вашим услугам. Никаких ограничений кроме предельных размеров ("высшая лига" конечно, там есть и для детей по возрастам тоже). Основные параметры трасс: ширина линии 15мм, допускаются крутые повороты с радиусами до 75мм (практически прямой угол). Длина трасс от 14метров. Рисунок трассы - может быть неизвестен до начала соревнования. Запрещены промышленные роботы заводской сборки и только.
wdrakula пишет:
Забыл еще про покрышки из специального липкого силикона, тогда можно программу упростить и дрифт не обсчитывать.
Я не говорю, что писать, даже под 4-х ядерный арм, такое можно быстро, но реально. Ничего изобретать не надо. все эти вещи уже есть и всю теорию можно найти, а значит и написать. Полгода и бюджет от 10К баксов. ;)
.. "всего"? Недорого однако .. :) Но, опять же: пробуйте. Силиконовые покрышки - пользуются, есть даже "импеллеры" прижимающие тележку к трассе с большим весом её самой в несколько раз.., а вот как ехать с управляемым дрифтом - как раз и есть темя для обсуждения.
wdrakula пишет:
вот интересно, с такой тележкой организаторы сразу выпрут нафиг или сперва подумают?
В ряде мест - не выпрут. И даже сами сможете участвовать как взрослый.. :)
Осталось применить три линии датчиков. Спереди , сзади и по середине. Ведь для того что бы измерить радиус поворота трасы нужно знать 3(три) точки. B согласно радиусу выставить ШИМ правого и левого колеса. А также компенсировать занос на дрифте.
У каждой трассы/тележки есть свое "оптимальное" расстояние выноса датчиков вперед. Вынос дальше не улучшает ситуацию. Как правило соревнования ограничивают размер больше чем это оптимальное расстояние. По-просту - "хватает" того что разрешено.
Хотелось бы уточнить: существуют ли в правилах ограничения, которые лимитируют количество датчиков либо запрещают установку датчиков кроме как в одну линию перпендикулярную продольной оси тележки?
Если "нет", то процитированное утверждение не может быть истинным вследствие своей абсурдности.
Собственно, сообщаю, что я тут отлучусь ненадолго: приехал из Китая фрезерный CNC станочек, так что несколько дней переключу свое внимание на него.
Теперь так: то, что я сделал, ни в коей мере не является ответом на поставленный в теме вопрос, а лишь показывает, как осуществляется численное моделирование явления. В качестве явления также выбран неинтересный с практической точки зрения одномерный случай с единственным мотором и одним колесом. Интересная с практической точки зрения модель, естественно, получится в несколько раз сложнее.
ПРи проведении моделирования сначала выписываются дифференциальные уравнения, описывающие явление. Затем они дополняются алгебраическими уравнениями до замыкания системы (иногда для замыкания приходитс вводить новые дифф.уравнения). Потом весь процесс численно интегрируется по шагам тем или иным способом.
В примере применен способ Эйлера, когда каждая из величин на n+1 шаге вычисляется, исходя из величин на шаге n. В некоторых случаях может быть целесообразно при вычислении отдельный величин на n+1 шаге использовать другие уже вычисленные величины на этом же шаге. Иногда зависимость между величинами сложнее, и приходится применять итерацию. Но простейший способ продемонстрирован.
В конце шага переменным "старого" шага присваиваются величины переменных только что вычисленного "нового", и процесс повторяется.
Когда получен какой-либо результат, он сравнивается с практикой посредством натурного моделирования. После чего уточныется маематическая модель. И так несколько итераций. Но постепенно начинают появляться идеи, что можно улучшить в логике управления или конструкции самого натурного образца, т.е. математическая и натурные модели переходят к синхронному совершенствованию. Собственно, ради этого этапа численное моделирование и проводится.
Я тут перевел моделирующую программу на Си и выкладываю ее сдесь, чтобы всяк желающий мог посмотреть ее, чему-то, возможно, научиться, а где-то, наоборот, найти ошибки (ну не до этого мне сейчас).
#include <iostream>
using namespace std;
// численное моделирование движение тележки (1 колесо, 1-мерный случай)
const double Pi = 3.1415926;
const double G = 9.81;
const double epsilon = 1.0e-12;
const double reductor = 6.0; // коэффициент замедления редуктора
const double U = 8.2; // В - напряжение питания
const double Imax = 1.5; // А - ток заторможенного якоря
const double Ihh = 0.1; // А - ток холостого хода
const double Zy = U/Imax; // Ом - сопротивление якоря
const double Wmax = 11200/60/6*0.85; // скорость ХХ с учетом редуктора 6:1 и кпд 85%
const double Qmax = 0.06; // н/м - максимальный момент (торможеия) на валу с редуктором
const double Qhh = Qmax/Imax*Ihh; // н/м - момент сопротивления самого двигателя
const double L = 0.2; // Гн - индуктивность якоря двигателя
const double Mw = 0.01034; // масса колеса
const double Rw = 0.0185; // радиус колеса
const double kRw = 0.875; // коэффициент, учитывающий, что основная масса локализуется в диапазоне 75-100% радиуса (сред 87.5%)
const double iMw = Mw*(Rw*kRw)*(Rw*kRw); // момент инерции колеса =m*R^2, считаем, что масса сосредоточена на 87.5% радиуса
const double My = 0.02; // масса якоря
const double Ry = 0.0065; // радиус якоря
const double iMy = 0.5*My*Ry*Ry*reductor; // момент инерции яуоря "за редуктором"
const double Mt = 0.265; // масса тележки
const double Kp = 0.86; // коэффициент трения покоя
const double Ks = Kp*0.75; // коэффициент трения скольжения
const double Kk = 0.03; // коэффициент трения качения
const double iMt = Mt*Rw*Rw; // момент инерции тележки отн.оси колеса
const double Qtp = Kp*Mt*Rw*G; // максимальный момент силы трения колеса с полом без проскальзывания
const double Qts = Ks*Mt*Rw*G; // максимальный момент силы трения колеса с полом с проскальзыванием
template <class T>
T abs(T a) { return a >= 0 ? a : -a; }
void PrintConst() {
cout << "Коэфф. редуктора: " << reductor << endl;
cout << "Напряжение питания: " << U << endl;
cout << "Ток торможения: " << Imax << endl;
cout << "Ток холостого хода: " << Ihh << endl;
cout << "Сопроивление якоря: " << Zy << endl;
cout << "Скорость ХХ редукт: " << Wmax << endl;
cout << "Момент торможения: " << Qmax << endl;
cout << "Момент сопр.двиг.: " << Qhh << endl;
cout << "Коэфф. противо-ЭДС: " << (U - Ihh*Zy)/Wmax << endl;
cout << "Индуктивн. якоря: " << L << endl;
cout << "Масса колеса: " << Mw << endl;
cout << "Радиус колеса: " << Rw << endl;
cout << "Коэфф.радиуса д/и.: " << kRw << endl;
cout << "Момент инер.колеса: " << iMw << endl;
cout << "Масса якоря: " << My << endl;
cout << "Радиус якоря: " << Ry << endl;
cout << "Момент инерц.якоря: " << iMy << endl;
cout << "Масса тележки: " << Mt << endl;
cout << "Коэфф.трен.покоя: " << Kp << endl;
cout << "Коэфф.трен.скольж.: " << Ks << endl;
cout << "Коэфф.трен.качен.: " << Kk << endl;
cout << "Момент инерц.тележ: " << iMt << endl;
cout << "Момент без проск.: " << Qtp << endl;
cout << "Момент с проскальз: " << Qts << endl;
}
double I0,I1; // ток якоря в начале и в конце шага интегрирования
double E0,E1; // противо-ЭДС в начале и в конце шага интегрирования
double W0,W1; // скорость вращения якоря в начале и в конце шага интегрирования
double V0,V1; // скорость тележки в начале и в конце шага интегрирования
double t = 0.0; // время
double dt = 0.0005; // шаг интегрирования
long nstep; // номер шага интегрирования
bool slide = false;
long prevSlide; // момент переключения проскальзывания на восстановление
void Step(double dt) {
I1 = I0 + dt*(U - E0 - I0*Zy)/L;
// дополнительный момент торможения Mhh прибавляется либо вычистается в/от Mdv в зависимости от направления вращения,
// при нулевой скорости - момент двигателя Mdv обнуляется если по модулю меньше Mhh
double Q = (Qmax + Qhh)*I0/Imax;
if (W0 >= epsilon) Q -= Qhh;
else if (W0 < (-epsilon)) Q += Qhh;
else if ((Q - Qhh) > 0.0) Q -= Qhh;
else if ((Q + Qhh) < 0.0) Q += Qhh;
else Q = 0.0;
if (slide) {
if (V0 < (W0*Rw*2.0*Pi)) {
W1 = W0 + dt*(Q - Qts)/(iMw + iMy)/(2.0*Pi);
V1 = V0 + dt*Ks*G; // Qts = Ks*Mt*Rw*G,
} else {
W1 = W0 + dt*(Q + Qts)/(iMw + iMy)/(2.0*Pi);
V1 = V0 - dt*Ks*G; // Qts = Ks*Mt*Rw*G,
}
// здесь условие для восстановления контакта с поверхностью
if (((V0 - W0*Rw*2.0*Pi)*(V1 - W1*Rw*2.0*Pi)) < 0) {
if ((nstep - prevSlide) > 3) {
slide = false;
V1 = W1*Rw*2.0*Pi;
}
}
} else {
W1 = W0 + dt*Q/(iMw + iMy + iMt)/(2.0*Pi);
V1 = W1*Rw*2.0*Pi;
// здесь условие для срыва
if (abs(Q)*iMt/(iMw + iMy + iMt) > Qts) {
slide = true;
prevSlide = nstep;
}
}
E1 = W1/Wmax*U;
if (nstep == 0) cout << '\t' << "t:" << '\t' << "dt:" << '\t' << "I*10:" << '\t' << "W1:" << '\t' << "E:" << '\t' << "Q*1000:" << '\t' << "V*10:" << '\t' << "slide" << endl;
cout << nstep << '\t' << t*1000.0 << '\t' << I1*10 << '\t' << W1 << '\t' << E1 << '\t' << Q*1000 << '\t' << V1*10 << '\t' << slide << endl;
I0 = I1;
W0 = W1;
E0 = E1;
V0 = V1;
t += dt;
}
int main(int argc, char *argv[]){
PrintConst();
for (nstep = 0; nstep <= 1000; nstep++)
Step(dt);
return 1;
}
Как освободитесь - возвращайтесь. В целом все верно, но вы допустили ряд ошибок из-за чего получили резонансные явления на холостом ходе. Пока озвучивать не буду, надеюсь что кто-нибудь ещё разберется и отпишется. Резонанс в ДПТ возможен, но только в определенном и крайне редком случае, поэтому и не рассматривается в большинстве учебной лит-ры. У Вас получилось исключительно из-за ошибки моделирования, "правильный" график выложил выше.
Да, моделирование ведется именно таким способом и тоже применял этот метод. Для уменьшения ошибки дискретизации интегрирования, некоторые параметры можно брать "средними" от расчета за предыдущий и последующий шаг, типа есть значение "до" начала интервала и есть "после", берем среднее по интервалу.
По выносу датчиков. Утверждение верно в предположении линейки датчиков. Если датчики разносятся повдоль оси тележки, то конечно существуют иные ограничения.
Ну и по программе: для этих целей вполне достаточно Экселя с его диаграммами. :)
"я просто считаю, что лучшее решение - нормальное читерство. ;) все ездят на АВР 16 МГц (уно-нано-мега), а ты езди на АРМе в 4 ядра и полтора ГГц. вместо дурацких фототранзисторов - нормальную камеру. Анализ изображения в реальном времени, предсказание, ТОЧНОЕ, кривизны поворота за метр до него, тензодатчики на все оси, для контроля оптимального входа в вираж. Контроль проскальзывания на все 4 колеса, все ведущие на хороших BLDC. Отсюда возможность контролируемого дрифта. Можно еще балансирную массу в пределах габарита двигать, чтобы внутренние колеса в вираже подгружать.
и ДА, это будет совсем не детская машинка... особенно по цене.
... Полгода и бюджет от 10К баксов. ;)"
Поскольку под Луноход на кубок РТК уже заказал BLDC моторы, то слегка поизучал и сюда этот вопрос.
Итого: чтобы машинко летело по трассе - потребен мин. инерционный момент, а значит "вес" - критичен. Так вот:
1) автомобильных BLDC моторов легче 50-70гр не нашел вовсе.
2) применение легких BLDC "авиационно-коптерного" назначения не возможно, ибо они sensorless - это раз, и второе их контроллеры не умеют делать многое, и в частности практически нигде нет контроля тока мотора, реверса и др. фич автомобильного применения.
3) установка камеры страдает тем же самым недостатком - "вес", плюсом алгоритмы разпознавания изображения, особенно "за метр", с учетом того что линия может иметь повороты через каждые 40-70см трассы и практически на 90* .. т.е. там мало того что потребуется искать линию, надо будет ишо и разобраться грамотно по какой их них едем сейчас.
4 .. ну ездят и на АРМ-ах и на АВРах .. кому как вздумается.. в текущих реалиях скорость проца роялей не играет..
В общем, за 10к баксов и полгода, Вы подписались на: а) разработать и изготовить (4шт) собственный BLDC sensored мотор для трассового применения (весом 10-15гр!); б) разработать и изготовить собственный ESC-контроллер к нему со всеми требуемыми фичами ..
ви уверены что это стоит 10к баксов и Вам полгода достаточно? :)
Если вы опять зацепили эту тему, то скажу и я. Надо различать вождение человеком от вождения компьютером. Вы же не считаете, что бы лететь самолету, то надо махать крыльями. Вот так и здесь. Почему человек смотрит трассу впереди себя. Потому что трассу под машиной он банально не видит. Корпус машины закрывает. Вот и приходится человеку глядя на ситуацию вокруг представлять что делается под брюхом машины. Тем более то что под брюхом будет человек видит заранее,за секунду до закрытие корпусом машины. Так с компьютером все иначе. Можно прямо заглянуть под брюхо с помощью датчиков или же камерой и большой памяти и мощности процессора вычислять то что окажется под брюхом. ПС: Я хотел выложить ранее схему оптимального размещения датчиков и математику расчетов. Но подумал, зачем народу творчество портить.
Ну я просто жду, когда в тему вернется обсуждение алгоритмов и их моделей. Оптимальное размещение датчиков тоже уже давно вычислил и даже разъяснял коллегам "почто так", что сказалось на последних соревнованиях тоже.
Отписался по заявленному, поскольку поначалу показалось "трезвая мысля, почему бы и не?" .. нет. И за 10 килобаксов - вопрос не решить. :)
P.S. Да, и вариант с шаговиками - тоже решений не имеет или я не нашел таковых, увы.
3) установка камеры страдает тем же самым недостатком - "вес", плюсом алгоритмы разпознавания изображения, особенно "за метр", с учетом того что линия может иметь повороты через каждые 40-70см трассы и практически на 90* .. т.е. там мало того что потребуется искать линию, надо будет ишо и разобраться грамотно по какой их них едем сейчас.
Предсказывать хотя бы первый поворот за 40см было бы уже неплохо.
Я как то на андроиде делал слежение за изменением цвета центрального пикселя с камеры. ХЗ какая скорость считывания одного пикселя, надо считать. Ведь одиночный пиксель с камеры можно рассматривать как удалённый датчик линии.
Ну я просто жду, когда в тему вернется обсуждение алгоритмов и их моделей. Оптимальное размещение датчиков тоже уже давно вычислил и даже разъяснял коллегам "почто так", что сказалось на последних соревнованиях тоже.
Ну-да ну-да. Коллеги такие тупые попались, раз сто им объяснил, уже и сам понял, а они все тупят дальше. Прежде всего это не слет вунденкиндов, которые ищут лучшего решения, не смотря на стоимость и сложность решения. Вот это и ограничивает результат. Прежде всего кто из вас задумывался о точке центра тяжести модели. Размещение этой точки относительно линии и есть ошибка схода модели с линии. Угол вектора направления модели к этой точке и касательная линии это ошибка поворота. И вам надо вычислить оператор поворота и оператор компенсащии смещения.
<del>
<del>
<del>
<del>
<del>
<del>
<del>
http://pandia.ru/text/79/389/41306-6.php
<del>
При определенных соотношениях механической и электромагнитной постоянных времени, а именно при
переходные процессы в электроприводе имеют колебательный характер.
<del>
Рис. 5.7. Изменение момента (а) и скорости (б) при пуске ДПТ НВ при существенной индуктивности цепи якоря
<del>
<del>
P.S. Тому кто первый допрет в чем закавыки (и не одна!) - мои респекты. :)
<del>
Итак задача: есть трасса, есть линия, есть машина ,есть скетч и есть рекорд? Вопрос кто или что ограничивает рекорд. Ну что бы был рекорд,надо выше скорость, надо мощнее мотор, который будет преодолевать сопротивление воздуха и трения на трассе. А это зависимость кубическая (в третей степени). Опять же если скорость выше, то машина будет быстрее пересекать линию. То или линию делать шире (ага сейчас организаторы конкурса позволят расширить линию) или быстрее реагировать, частоту процессора повышать.(но думаю тут дело не скорости процессора). Есть такой факт. Что бы пройти быстрее трассу нужны хорошие тормоза. Потому что набирая скорость на прямых участках надо на повороте ее сбросить. А это обеспечивают тормоза. Почему вопрос упирается в тормоза. Потому что кинитическая энергия это mV2/2 . Если на малых скоростях ее легко набрать и легко сбросить. И тормозной путь будет значительно меньше ширины линии. То чем выше скрость тем выше тормозной путь и машинка вылетает за линию.
Когда уже перестанем насиловать свой мозг, а передадим все эти вопросы оптимизации нейронным сетям - ???
Пора уже переходит к следующему технолгическому укладу (6-му ("ИИ")), а вы сейчас пытаетсь "примерно" решить задачку в стиле 5-го технологического уклада ("автоматическое управление").
Вычислительной мощности современного микроконтроллера вполне хватает, чтобы в нем "жил" искусственный интеллект.
Давайте уже шагайте вперед, а не топчитесь на месте (решая примитивные задачки типа включить/выключить светодиод)
<del>
"Итак задача: есть трасса, есть линия, есть машина ,есть скетч и есть рекорд? Вопрос кто или что ограничивает рекорд. Ну что бы был рекорд,надо выше скорость, надо мощнее мотор, который будет преодолевать сопротивление воздуха и трения на трассе. А это зависимость кубическая (в третей степени) .."
Ну вот это та самая причина, из-за которой на Робофинист повезли откровенно унылую материальную базу. Те моторы, что были приобретены - оказались откровенно слабыми, как и те, что рассмотрены тут выше. Облегчать тележку - имеем сильно ограниченные возможности, желая оставаться в рамках "Ардуино как Лего". Хочется не только "быстро носиться по трассе", но и показать что такое можно (в доп. пределах) делать ДЕТИШКАМ, собирая машинки из "кубиков". Минимальный вес, что нам удалось достичь - 135гр или около того. Неплохо, но для штатных моторов N20 - все-таки "многовато" и соревноваться с машинками 80-100гр - бесперспективно, применяя "типовой ПИД". Тем более, что его применение практически непрерывно выводит управление моторами в 4-й квадрант (думаю, теперь уже с теорией ознакомились многие)..
Ну .. рекордом я бы это не называл, не мы одни такие, есть и лучше. Пока что наш подход (табличное моделирование функций управления) позволяет катать существенно тяжелее тележки со скоростями близкими к облегченным с ПИД-управлением. Но и только.
Сейчас есть понимание (и случайно найденный практический пример) того, что МОЖНО кататься на скоростях, превышающих теор. предел по трению (Клапауций - ты не прав!) .. но вот нет "теории" как и почему оно так .. за что тема и поднята по второму разу.
Да, тормоза - "наше всё". Грамотные, правильные и вовремя. Но этого пока недостаточно. Надо вывести управление тележкой из 4-го квадранта по максиуму, иначе никакие моторы долго не выдержат, а они и так пользуются в режиме "перегруза", ибо отношение "тяга/вес" (энерговооруженность эл. привода в целом)) явно недостаточно.
Грустно, что кроме троллей и флудерастов, которым пофиг где и кого поносить, мало кто принимает участие в обсуждении.
Вопрос:Если мощность двигателей можно как-то измерить. Но как измерить "мощность тормозов"? Это скорее измеряют коственно, тормозным путем с определеной скоростью , и временем торможения.Последнее измерить сложнее, но на гонках это тоже немаловажный факт.
Вопрос: У вас есть моделька. Как замерить ее тормозной путь. 1)-разогнать до определеной скорости. Разумеется не до "ШИМ-скорости", а до реальной. Привет энкодер на вращение. 2) подать с помощью сенсора команду остановки-модель едет перпендикулярно лиии и на линии идет сигнал СТОП и 3) померить рулеткой на сколько заехала моделька.
Вопрос: Куда и какие тормоза ставить? Если у вас на модели 4 колеса и на двух стоят моторы, то тормоза можно поставить на оставшихся колесах. Ведь все понятно. Эти колеса свободно вращаются и трение они не должны создавать, что бы моделька ездила быстрее. Но и процессе торможения модельки эти колеса тоже не учавствуют. А вот это уже не хорошо. Так что на них желательно повесить тормоза с тем же принципом как и у электромагнитных муфт.
ПС: Есть еще один вариант повесить на оставшие колеса еще пару моторов. Тогда при езде вперед подать 10% мощности, что бы компенсировать свои потери. А при торможении добавить импульс 10% мощности назад. Но здесь надо провести кучу исследований длительности тормозного пути, по схеме приведеной выше.
Советую зашунтировать батарею питания конденсаторами соответствующей емкости.
Это увеличит максимальный потребляемый ток в момент старта двигателя - принесет дополнительный выигрышь по времени разгона.
Господа! Я не в силах продраться через срач и понять суть высокого диспута.Простите.
Можно ли уточнить позиции "с нуля"?
-------------------------------
1. Задача.
Прохождение трассы на самобеглой тележке с автономным уравлением за минимальное время.
Трасса указана некой линией, от которой нельзя отклоняться более чемна хх см, так?
Снимать заранее и пользовать модель трассы запрещено, так?
========================
Аналитического решения задача не имеет. Как и любая задача управления - цель приблизиться к идеалу.
Совершенно очевидно, что есть несколько факторов, максимально влияющих на результат.
Вот они:
1. Мощность двигателя.
2. площадь контакта колеса, материал покрышки, нагрузка на колесо - все, что влияет на коэфф. сцепления.
3. способность предвидеть маневр и его точную величину. То есть, раз нет модели, насколько выдвинуть вперед и какой точности датчик линии использовать. Можно ли использовать средства измерения скорости,нагрузки на ось и пр.
..все остальное считается тем или иным способом. Демагогию про то, что это должно быть доступно детям - в жопу. Искуственные ограничения - это бег в мешке - не смешно и не удобно.
==
Собственно вопрос:
Из трех факторов выше, что и как ограничено правилами соревнований?
Перефразирую:
Насколько допускается отклонение от линии?
(в каком случае считается, что устроство "сошло с маршрута"?)
Перефразирую:
Насколько допускается отклонение от линии?
(в каком случае считается, что устроство "сошло с маршрута"?)
В положении соревнований написано так
Если робот сходит с дистанции (оказывается всеми колесами с одной стороны линии)
Господа! Я не в силах продраться через срач и понять суть высокого диспута.Простите.
Можно ли уточнить позиции "с нуля"?
-------------------------------
1. Задача.
Прохождение трассы на самобеглой тележке с автономным уравлением за минимальное время.
Трасса указана некой линией, от которой нельзя отклоняться более чемна хх см, так?
Снимать заранее и пользовать модель трассы запрещено, так?
========================
Аналитического решения задача не имеет. Как и любая задача управления - цель приблизиться к идеалу.
Совершенно очевидно, что есть несколько факторов, максимально влияющих на результат.
Вот они:
1. Мощность двигателя.
2. площадь контакта колеса, материал покрышки, нагрузка на колесо - все, что влияет на коэфф. сцепления.
3. способность предвидеть маневр и его точную величину. То есть, раз нет модели, насколько выдвинуть вперед и какой точности датчик линии использовать. Можно ли использовать средства измерения скорости,нагрузки на ось и пр.
..все остальное считается тем или иным способом. Демагогию про то, что это должно быть доступно детям - в жопу. Искуственные ограничения - это бег в мешке - не смешно и не удобно.
==
Собственно вопрос:
Из трех факторов выше, что и как ограничено правилами соревнований?
0) если с математикой глухо - снижайте скорость
1) Если с математикой плоховато - ставьте датчики скорости вращения колес
2) Если с математикой получше - тогда решайте описанную систему дифуравнений
3) Если с математикой отлично - стройте нейросеть и передавайте ей все вопросы по оптимизации движения
1. я правильно понял, что я не могу сделать вынесенную на полметра вперед штангу, чтобы заранее видеть линию?
2. органичения на мощность электроники есть? если я хочу видеть трассу далеко, то могу ли я поставить оранж пи и камеру с оптикой, чтобы в реальном времени видеть линию на метр вперед? Если нет то жаль. ;)
я просто считаю, что лучшее решение - нормальное читерство. ;) все ездят на АВР 16 МГц (уно-нано-мега), а ты езди на АРМе в 4 ядра и полтора ГГц. вместо дурацких фототранзисторов - нормальную камеру. Анализ изображения в реальном времени, предсказание, ТОЧНОЕ, кривизны поворота за метр до него, тензодатчики на все оси, для контроля оптимального входа в вираж. Контроль проскальзывания на все 4 колеса, все ведущие на хороших BLDC. Отсюда возможность контролируемого дрифта. Можно еще балансирную массу в пределах габарита двигать, чтобы внутренние колеса в вираже подгружать.
и ДА, это будет совсем не детская машинка... особенно по цене.
Забыл еще про покрышки из специального липкого силикона, тогда можно программу упростить и дрифт не обсчитывать.
Я не говорю, что писать, даже под 4-х ядерный арм, такое можно быстро, но реально. Ничего изобретать не надо. все эти вещи уже есть и всю теорию можно найти, а значит и написать. Полгода и бюджет от 10К баксов. ;)
Это если по-взрослому подходить.... а остальное - "бег в мешке".
-----------------
вот интересно, с такой тележкой организаторы сразу выпрут нафиг или сперва подумают?
<del>
Да! ВОт еще читерский вопрос: если во время квалификации запомнить трассу (самой машинкой, без внешних, запрещенных, приборов), это нарушение? Ведь если есть модель трассы, то даже на Нано можно проехать ее оптимально. И ничего городить не нужно.
Да! ВОт еще читерский вопрос: если во время квалификации запомнить трассу (самой машинкой, без внешних, запрещенных, приборов), это нарушение? Ведь если есть модель трассы, то даже на Нано можно проехать ее оптимально. И ничего городить не нужно.
японцы так и делают - первый проход медленный, затем ускоряются до вылета: запоминают предпоследний и на ега параметрах едут.
спутник на геостационарной орбите никто не запретит. О_О
Гы! Там, как я помню, во время заезда запрещена любая внешняя связь от тележки.... а то б я еще пару идей подкинул....
того же типа: "как нае...ть ближнего своего".
<del>
<del>
<del>
Внесу ясность в озвученные вопросы:
1. Соревнований много и разных, на каждом свои правила, но общая суть едина: проехать заданную трассу за минимально возможное время. Съездом, как правильно указано считается нахождение тележки всеми опорами (не обязательно колесами!) с одной стороны линии. Вариации:
а) линия - черная полоса на белом поле, может быть "узкой" - 15мм или евролиния, "робофестовской" - 20мм и "широкой" - 50мм или русская линия. Есть также варианты с прерывистой линией, в т.ч. из "кружочков", "квадратикой" и т.п., инверсной белая линия на черном поле (местами) и т.п., может иметь вариации по ширине (местами)..
б) вариации правил на съезд: игнор съезда менее N секунд (как правило не более 3), полный запрет (дисквалификация), требование вернуться взад на место до съезда;
в) размеры тележек: типовые 200х200, 250х250, реже 300х300 и даже 400х400 для "русской линии" в 50мм. Вес ограничивается редко и как правило до 5 кГ. Типовые размеры реальных тележек в районе 200х200 и чаще 170х170. Всё остальное, как правило, едет "хуже". Вес стараются сделать "как можно меньше".
г) трасса может быть как известна заранее (типовые трассы: Робофест, широкая линия 50мм: для младшего и старшего возраста - 2 варианта, трассы robochallenge - 15мм с прошлых лет), так и до соревнований и на тренировочные поля перед заездами могут выложить "типа такой", а непосредственно на соревновательное поле выложить "новую" трассу. Направление движения (по/против" часовой стрелки", первая/вторая дорожки и т.п.) может быть известно заранее, а может определяться исключительно на момент запуска конкретно вашей тележки судьей.
Тут кто во что горазд и имеет ли соотв. ресурсы напечатать нечто заранее и сохранить это в тайне.. Робофестовская трасса хороша тем, что рисована "от руки" и на ней практически нет 2-х одинаковых поворотов, и она относительно небольшая (можно разместить в комнате) 3х1.5м и вымерена по длине - 9м60см, а также имеет "промежуточную" ширину линии, но как недостаток - имеет перекресток и стартовую линию, которые скоростные роботы для "евролиний" (15мм) часто принимают за поворот и успевают(!) свернуть "за угол".
д) На трассе могут быть препятствия, которые или надо преодолевать (горка, балка, качающийся мост) или объезжать их временно покидая трассу (кирпич - практически видел даже обычный М-75, стенка). Бывают и комбинации препятствий. Какие препятствия выставят судьи на соревновательную трассу, как правило решается непосредственно перед стартом всех участников (для всех одинаково) методом "игральный кубик".
е) Соревнования могут быть по конкретной мат. базе (как правило "Lego EV3"), так и "смешанные", что гораздо реже. Могут быть как в конкретной возрастной группе, так и "без ограничений".
ж) Старт-Финиш бывает как "фото", так и по "отмашке судьи" или по заданному сигналу/свистку. Замер времени как ручной так и электронный. Если дорожек больше одной или зон старта на дорожке, то может одновременно стартовать более 1 машинки и могут проходить "финальные заезды" на призовые места, а гонки "на время", тогда называются "квалификация" и проходят для оценки "кто с кем едет" (наш Робофест-2017 в частности: 1 ошибка прохождения линии на "четвертьфинале" и усё .. тока третье место, несмотря на квалификацию)
з) любая связь с тележкой во время проезда - запрещена практически везде и любым способом. Если обнаруживается - дисквалификация, и возможно надолго. :)
Ну вот как-то так по обзору правил.
По материалам и типовым конструкциям:
1. Гонщики класса "профи" используют соответствующую материально-техническую базу от спец. фирм, таких как Polulu (эта просто наиболее часто). Это: мотор-редукторы, колеса со спец.резиной, комплекты и наборы готовых датчиков настроенных на соотв. ширину (часто 8-10шт на 15мм). Из контроллеров часто едут Нано, СТМ32 и последнее время - Teensy 3. Аккумуляторы на 80% - Li-po, Li-ion. Средний вес таких тележек 110 - 250гр и от гонки к гонке снижается неуклонно. Старт-пуск со смартфона, просмотр параметров, настройка ПИД - с него же. Средняя стоимость такой тележки (моя оценка, мож соврал) в районе 10 000руб.
2. Гонщики на образовательных конструкторах. С этими всё ясно и так. Используют что есть в наборе, соревнуются практически всегда исключительно промеж себя, и ещё и делятся по наборам. Причина - понятна: "дополнительные проходные баллы" при поступлениях в ВУЗ и пр.
3. Самодельщики .. тут кто во что горазд... вот мы - из этих. :)
Продолжу. Применяемые "спец. средства", особенно во "взрослых" категориях (Робофинист 2017, "высшая лига" в частности тоже):
1. Шины из очень мягкой микропористой резины или силиконовые со спец. протектором по типу Формула-1. Имеют к-т трения более 0.8 о гоночный баннер с трассой. Специально моются, протираются "спиртом" перед каждым заездом. Есть в т.ч. и самодельные.
2. Импеллер(ы) (призер прошлых лет робот "Карлсон", вес 120гр) на носу тележки для повышения маневренности на разворотах.
3. Импеллеры для прижима тележки к трассе. Ставится по центру тяжести всей тележки (по возможности).
Программные решения:
а) "публичные":
"что вижу - то пою". Самая простая программа для 2-х датчиков: выключаем мотор с той стороны, датчик которой видит линию. Тем не менее, в ряде случаев вполне способна конкурировать с ПИД.
"ПИД регулятор". Замер датчиков вычисляет текущее отклонение середины линии датчиков от оси движения и ПИД регулятором производится устранение этой ошибки. На сейчас практически типовое ПО.
"конечный автомат" .. применяется редко, но тоже видел.
ну и вот наше решение: по результатам замеров, считается модель по которой строится таблица управления моторами в зависимости от текущей ошибки с датчиков.
Ошибка считается примитивно: каждый датчик имеет условное "расстояние от оси" (0 - по центру, +1,-1, +2,-2 и т.д.) и тупо суммируются все датчики, которые видят линию. После чего делим сумму на общее количество датчиков. Видим линию - датчику присваивается "1", видим поле - "0". Вот на это "видение" и домножается расстояние датчика при суммировании.
Разные "АРМ", имеющие встроенный float в качестве "видения линии" используют отнормированное значение яркости непосредственно с датчика на диапазон 0..1. В результате получаем float ошибку, которая гораздо точнее дискретной. Собственно и ПИД у них также считается через float, что дает более плавное управление. Результат в обоих случаях нормируется на диапазон ШИМ.
Торможение. Во-первых, есть "естественное" торможение, ибо любой поворот требует разной скорости моторов, а на прямой их часто разгоняют до макс. ШИМ. Соответственно, управление остается только на внутреннем колесе и чем круче поворот - тем сильнее будет торможение за счет снижения скорости внутреннего колеса.
Во вторых, если поворот круче заданного (ошибка растет быстрее ограничения), то производят снижение скорости и внешнего колеса тоже.
Торможение ABS. Есть применение и ему в ряде решений. В этом случае моторы включают "взад" на заданное время и "на выбег" с чередованием. Сокращает тормозной путь достаточно существенно и применяется в разворотах на радиусах до 100мм. Как результат - хорошо видно как тележка встает колом на развороте или сразу после.
Проблема в том, что все эти меры НЕ позволяют ехать на скоростях даже 80% от предельной по к-ту трения.
ВОТ КАК ЕХАТЬ на 90-120% ОТ К-ТА ТРЕНИЯ И ЕСТЬ ОБСУЖДАЕМЫЙ ВОПРОС.
Да! ВОт еще читерский вопрос: если во время квалификации запомнить трассу (самой машинкой, без внешних, запрещенных, приборов), это нарушение? Ведь если есть модель трассы, то даже на Нано можно проехать ее оптимально. И ничего городить не нужно.
Изложил основные положения и типовые решения. Думаю теперь Вы самостоятельно способны ответить на этот вопрос. :)
Если нет, то подскажу, почему так никто не делает: ошибка движения постоянно колеблется с высокой скоростью. Интегрирование далеко не всегда дает правильный результат, особенно при недостаточно настроенном ПИД. С учетом ограниченного количества датчиков (как правило 2-3-5-6-8-10шт) диксретизация ошибки может сильно затруднить настройку ПИД, которая и так не проста.
С учетом изложенного "запоминать трассу" у НАНО не то что не хватит памяти, а даже не хватит места "сообразить" что интегрированный кусок замеров есть "поворот с малым радиусом".. тележку колбасит непрерывно и где там тот самый "поворот" .. надо ещё догадаться.
У каждой трассы/тележки есть свое "оптимальное" расстояние выноса датчиков вперед. Вынос дальше не улучшает ситуацию. Как правило соревнования ограничивают размер больше чем это оптимальное расстояние. По-просту - "хватает" того что разрешено.
Таких ограничений в ряде соревнований нет. Где-то есть: "только Лего". "только Ардуино" и т.д.
Делайте. Робофинист, robochallenge - к вашим услугам. Никаких ограничений кроме предельных размеров ("высшая лига" конечно, там есть и для детей по возрастам тоже). Основные параметры трасс: ширина линии 15мм, допускаются крутые повороты с радиусами до 75мм (практически прямой угол). Длина трасс от 14метров. Рисунок трассы - может быть неизвестен до начала соревнования. Запрещены промышленные роботы заводской сборки и только.
Я не говорю, что писать, даже под 4-х ядерный арм, такое можно быстро, но реально. Ничего изобретать не надо. все эти вещи уже есть и всю теорию можно найти, а значит и написать. Полгода и бюджет от 10К баксов. ;)
.. "всего"? Недорого однако .. :) Но, опять же: пробуйте. Силиконовые покрышки - пользуются, есть даже "импеллеры" прижимающие тележку к трассе с большим весом её самой в несколько раз.., а вот как ехать с управляемым дрифтом - как раз и есть темя для обсуждения.
В ряде мест - не выпрут. И даже сами сможете участвовать как взрослый.. :)
Осталось применить три линии датчиков. Спереди , сзади и по середине. Ведь для того что бы измерить радиус поворота трасы нужно знать 3(три) точки. B согласно радиусу выставить ШИМ правого и левого колеса. А также компенсировать занос на дрифте.
<del>
http://www.kolesa.ru/article/drift-ot-istorii-k-teorii-i-praktike-2015-0...
У каждой трассы/тележки есть свое "оптимальное" расстояние выноса датчиков вперед. Вынос дальше не улучшает ситуацию. Как правило соревнования ограничивают размер больше чем это оптимальное расстояние. По-просту - "хватает" того что разрешено.
Хотелось бы уточнить: существуют ли в правилах ограничения, которые лимитируют количество датчиков либо запрещают установку датчиков кроме как в одну линию перпендикулярную продольной оси тележки?
Если "нет", то процитированное утверждение не может быть истинным вследствие своей абсурдности.
Собственно, сообщаю, что я тут отлучусь ненадолго: приехал из Китая фрезерный CNC станочек, так что несколько дней переключу свое внимание на него.
Теперь так: то, что я сделал, ни в коей мере не является ответом на поставленный в теме вопрос, а лишь показывает, как осуществляется численное моделирование явления. В качестве явления также выбран неинтересный с практической точки зрения одномерный случай с единственным мотором и одним колесом. Интересная с практической точки зрения модель, естественно, получится в несколько раз сложнее.
ПРи проведении моделирования сначала выписываются дифференциальные уравнения, описывающие явление. Затем они дополняются алгебраическими уравнениями до замыкания системы (иногда для замыкания приходитс вводить новые дифф.уравнения). Потом весь процесс численно интегрируется по шагам тем или иным способом.
В примере применен способ Эйлера, когда каждая из величин на n+1 шаге вычисляется, исходя из величин на шаге n. В некоторых случаях может быть целесообразно при вычислении отдельный величин на n+1 шаге использовать другие уже вычисленные величины на этом же шаге. Иногда зависимость между величинами сложнее, и приходится применять итерацию. Но простейший способ продемонстрирован.
В конце шага переменным "старого" шага присваиваются величины переменных только что вычисленного "нового", и процесс повторяется.
Когда получен какой-либо результат, он сравнивается с практикой посредством натурного моделирования. После чего уточныется маематическая модель. И так несколько итераций. Но постепенно начинают появляться идеи, что можно улучшить в логике управления или конструкции самого натурного образца, т.е. математическая и натурные модели переходят к синхронному совершенствованию. Собственно, ради этого этапа численное моделирование и проводится.
Я тут перевел моделирующую программу на Си и выкладываю ее сдесь, чтобы всяк желающий мог посмотреть ее, чему-то, возможно, научиться, а где-то, наоборот, найти ошибки (ну не до этого мне сейчас).
Как освободитесь - возвращайтесь. В целом все верно, но вы допустили ряд ошибок из-за чего получили резонансные явления на холостом ходе. Пока озвучивать не буду, надеюсь что кто-нибудь ещё разберется и отпишется. Резонанс в ДПТ возможен, но только в определенном и крайне редком случае, поэтому и не рассматривается в большинстве учебной лит-ры. У Вас получилось исключительно из-за ошибки моделирования, "правильный" график выложил выше.
Да, моделирование ведется именно таким способом и тоже применял этот метод. Для уменьшения ошибки дискретизации интегрирования, некоторые параметры можно брать "средними" от расчета за предыдущий и последующий шаг, типа есть значение "до" начала интервала и есть "после", берем среднее по интервалу.
По выносу датчиков. Утверждение верно в предположении линейки датчиков. Если датчики разносятся повдоль оси тележки, то конечно существуют иные ограничения.
Ну и по программе: для этих целей вполне достаточно Экселя с его диаграммами. :)
Когда же вы уже созреете для использования нейронных сетей?
Когда же вы уже созреете для использования нейронных сетей?
а, ты? когда?
Когда же вы уже созреете для использования нейронных сетей?
Чьих сетей?
<del>
Подниму темку ..
wdrakula писал:
"я просто считаю, что лучшее решение - нормальное читерство. ;) все ездят на АВР 16 МГц (уно-нано-мега), а ты езди на АРМе в 4 ядра и полтора ГГц. вместо дурацких фототранзисторов - нормальную камеру. Анализ изображения в реальном времени, предсказание, ТОЧНОЕ, кривизны поворота за метр до него, тензодатчики на все оси, для контроля оптимального входа в вираж. Контроль проскальзывания на все 4 колеса, все ведущие на хороших BLDC. Отсюда возможность контролируемого дрифта. Можно еще балансирную массу в пределах габарита двигать, чтобы внутренние колеса в вираже подгружать.
и ДА, это будет совсем не детская машинка... особенно по цене.
... Полгода и бюджет от 10К баксов. ;)"
Поскольку под Луноход на кубок РТК уже заказал BLDC моторы, то слегка поизучал и сюда этот вопрос.
Итого: чтобы машинко летело по трассе - потребен мин. инерционный момент, а значит "вес" - критичен. Так вот:
1) автомобильных BLDC моторов легче 50-70гр не нашел вовсе.
2) применение легких BLDC "авиационно-коптерного" назначения не возможно, ибо они sensorless - это раз, и второе их контроллеры не умеют делать многое, и в частности практически нигде нет контроля тока мотора, реверса и др. фич автомобильного применения.
3) установка камеры страдает тем же самым недостатком - "вес", плюсом алгоритмы разпознавания изображения, особенно "за метр", с учетом того что линия может иметь повороты через каждые 40-70см трассы и практически на 90* .. т.е. там мало того что потребуется искать линию, надо будет ишо и разобраться грамотно по какой их них едем сейчас.
4 .. ну ездят и на АРМ-ах и на АВРах .. кому как вздумается.. в текущих реалиях скорость проца роялей не играет..
В общем, за 10к баксов и полгода, Вы подписались на: а) разработать и изготовить (4шт) собственный BLDC sensored мотор для трассового применения (весом 10-15гр!); б) разработать и изготовить собственный ESC-контроллер к нему со всеми требуемыми фичами ..
ви уверены что это стоит 10к баксов и Вам полгода достаточно? :)
Если вы опять зацепили эту тему, то скажу и я. Надо различать вождение человеком от вождения компьютером. Вы же не считаете, что бы лететь самолету, то надо махать крыльями. Вот так и здесь. Почему человек смотрит трассу впереди себя. Потому что трассу под машиной он банально не видит. Корпус машины закрывает. Вот и приходится человеку глядя на ситуацию вокруг представлять что делается под брюхом машины. Тем более то что под брюхом будет человек видит заранее,за секунду до закрытие корпусом машины. Так с компьютером все иначе. Можно прямо заглянуть под брюхо с помощью датчиков или же камерой и большой памяти и мощности процессора вычислять то что окажется под брюхом. ПС: Я хотел выложить ранее схему оптимального размещения датчиков и математику расчетов. Но подумал, зачем народу творчество портить.
Ну я просто жду, когда в тему вернется обсуждение алгоритмов и их моделей. Оптимальное размещение датчиков тоже уже давно вычислил и даже разъяснял коллегам "почто так", что сказалось на последних соревнованиях тоже.
Отписался по заявленному, поскольку поначалу показалось "трезвая мысля, почему бы и не?" .. нет. И за 10 килобаксов - вопрос не решить. :)
P.S. Да, и вариант с шаговиками - тоже решений не имеет или я не нашел таковых, увы.
3) установка камеры страдает тем же самым недостатком - "вес", плюсом алгоритмы разпознавания изображения, особенно "за метр", с учетом того что линия может иметь повороты через каждые 40-70см трассы и практически на 90* .. т.е. там мало того что потребуется искать линию, надо будет ишо и разобраться грамотно по какой их них едем сейчас.
Предсказывать хотя бы первый поворот за 40см было бы уже неплохо.
Я как то на андроиде делал слежение за изменением цвета центрального пикселя с камеры. ХЗ какая скорость считывания одного пикселя, надо считать. Ведь одиночный пиксель с камеры можно рассматривать как удалённый датчик линии.