L298 погорел из-за перехода на литиевые 3S аккумы. Переключение в режиме АБС требует аккуратности, когда мотор предельно способен выжрать более 4А при смене направления движения. Кроме того, конкретно этот L298 был со снятым радиатором - борьба за вес. Исправились.
В общем оно поехало, причем очень уверенно держит линию, даже выезжая далеко за край - помнит где потерял линию: проехал полкомнаты в повороте и таки нашел. Фантастика. Но, ПИД - не спасает. Фактически решающий фактор - вынос датчиков вперед, но тогда поворот радиусом 300мм - это гарантированный выход за линию и снятие с соревнований за "срезание углов". Пока удалось развить среднюю скорость по трассе .. 58 см/сек. :(
Получается L298 пожглись ЭДС создаваемая движками в фазе торможения? Или просто пусковые токи в моменты включений, производимых достаточно часто? Отсутствие радиатора очевидно усугубило.
Как бы не делали, в поворотах скорость будет снижатся, одно колесо тянет, другое тормозит. Тут без вариантов. С этим фактом прийдется смирится, а не боротся. Былбы свободный выбег или поворот колес - можно бы было еще фантазировать.
От ШИМ в повороте (ну или АБС одного колеса - без разницы как назвать) не отказывайтесь. Пока тачка без датчиков и автоматики не научится делать устойчивый поворот с минимальным радиусом на максимально достижимой скорости никакая автоматика ниче на даст. Она просто упрется в физические ограничения тачки, а найти оптимум этих ограничений не сможет. Его искать Вам. А автоматика сможет только вовремя переключатся между режимами прямо и поворот. При радиусе больше минимума - переключать будет часто, наверно после каждого периода ШИМ. В переключении режимов тоже есть вопросы, типа достаточности вращающего момента чтоб задать требуемую скорость вращения тачки вокруг вертикали за имеющееся время упреждения (вот оно - растояние выноса датчиков!!!) при существующем моменте инерции. Но степ дай степ.
Да, как понял, драйвер погорел из-за противоЭДС мотора в режиме АБС. Просто первый раз когда запустили, забыли указать паузу в 2мсек на реверс мотора. Драйвер не успел закрыть активные транзюки, как его пнули в обратном направлении + токи с мотора. Ну и отсутствие радиатора усугубило ситуацию - управление одним (реверсировались оба движка одновременно!) мотором накрылось медным тазом. В общем, вывод банален: управление мощной нагрузкой надо программировать ТЩАТЕЛЬНО. :)
Это исправили заменой драйвера, благо этих платок у нас было 4 шт. :) Мосфетные драйвера распаяны на плате под Ардуино Мега2560 и сюда вот не лезут в габарит никак .. развел схему на 2 мосфетных драйвера "поменьше" - сделаю, заменим ими 298-е, а пока так катаемся. Максимальная скорость несколько ниже, но все равно пока она не достигнута ни в одном глазу..
Цифровые датчики погорели, и таких (с одним подстроечником) у нас было только 2шт .. сгорели оба. Но, есть ещё 6шт с двумя подсроечниками .. сейчас гоняем на них. Они сложнее настраиваются, и именно они в прошлый раз повели себя плохо с освещением поля люминечцентными лампами .. будем надеяться что проканают или спаяем ещё 2шт аналоговых к соревнованиям. Скоро можно будет тренироваться "на полях" - там и посмотрим.
Да, как оказалось погорел и один аналоговый датчик, хотя и не понял чему там гореть (ИК-светодиод + ИК фотодиод + 2 резистора) .. запаяли ещё один.
Хорошая новость: коллеги по работе выделяют 2 наны из своих закромов "в запас" .. :)
Плохая новость: просочилась инфа, что поле будет иметь повороты "плавно изменяющегося" радиуса .. как раз для исключения желаний "подгонки" под радиус поворота.
То мелочи, проблемы будут когда развилки сделаю и восмерок накрутят ;) Умеете по прямой, научитесь по минимальному радиусу - все что между ними получится последовательной комбинацией одного и второго с достаточной частотой.
Попробовали "подогнать" движение к домашней тестовой трассе. На ней есть только прямой участок и повороты только с мин. радиусом. В целом, кузяво: вынос датчиков позволяет "попасть" в поворот и пройти его практически без снижения скорости. Одно но: если датчик "сглючил" (редко но бывает), то скажем ещё на прямом участке начинается ПИД-регулировка и попасть в радиус - уже ни в какую. Положение тележки на линии практически произвольное.
В общем дошло: ПИД хорош только для малоинреционных систем или мы так и не научились его готовить. Чем ниже выставленная макс. скорость - тем лучше оно работает и тем меньший вынос датчиков можно себе позволить. Не интересно, нужны другие идеи.
вот так выглядел наш "погорелец" на УНО. На верхнем фото видно состояние сразу после сборки - хорошо заметен перекос установки двигателей и колес. Исправляли.
Как я понял вы схему расположения датчиков не меняли и у вас начальный алгоритма реагирования на рысканье и поворот одинаковый?
Если поставить взад ещё пару датчиков, то вынесенный вперёд датчик можно будет настроить только на обнаружения поворота (и крутизны поворота?), а рысканье будут отрабатывать остальные.
Это мало помогает, я бы сказал даже и совсем не помогает. Дальние датчики (на фото) - едва успевают управлять тележкой на скоростях больше 50 см/сек. Это - факт, а не реклама. :(
Ближние датчики .. можно конечно и на них, пгобовали. Только они уже ваще никуда не успевают. :((
(Вы думаете я бы выложил фото, если бы эта версия конструкции оказалась удачной ПЕРЕД соревнованием?!?)
ПИД в таком варианте - не работает как хочет того теория. Причина - бинарность датчиков: их по сути всего 2 и соотвественно ситуаций 3: "едем по линии", "ой, это край" и "линия сбоку" .. причем практически с "какого боку" - задача не решаема на 2-х датчиках. Чтобы ПИД заработал, как понимаю надо штук 5-7 датчиков..
Наверное так. На фото датчики расположены примерно как на трассе, разве что были не высталены по ширине линии на момент фотографирования. Стоят "как поставилось". Но в целом - это две группы по 2 датчика. И такое расположение не дает ответа на ряд важных вопросов, в т.ч. что и озвучено Вами. Так я тему для того и создал, чтобы понять что и как можно изменить для улучшения конструкции и кода управления. Только надо помнить, что одно дело нам тут, взрослым собрать суперскоростного робота и совсем другое дело объяснить ребенку что к чему да так, чтобы он смог самостоятельно выступить с этим.. а времени осталось практически 2 выходных .. :(
Открытое письмо преподавателям Инженерного лицея НГТУ, тусующимся тут:
Ребята - вносить существенные изменения в правила соревнований за всего 2 оставшихся дня выходных - есть позор.
Вы - не смогли решить задачу и решили поменять правила. Класс!
Разобрались, исправляю пост:
В правила гонки по линии сделаны дополнения:
1. Старт по автоматически открывающимся воротам с узв. датчика. У нас он так и происходит с прошлого раза, не проблема;
2. Фотофиниш. Тоже пофиг;
3. Вторая партия гонок производится с произвольно расставленными препятствиями на линии. Их надо объезжать. Изменение программы должно быть совершено участниками во время соревнований за 1.5 часа. Вот тут и кроется вся засада: ребенок программирует на Ардублоке, у которого ограничен макс. размер программы, примерно 300 строками "С". Сейчас программа занимает около 280 строк (осталось места на примерно 1-2 блока if-then-else с парой операторов внутрях). То есть впихнуть чего-то сложного в программу уже практически нельзя.
А самое главное, что надо добавлять к роботу или сервомашинку на узв. датчик и/или энкодеры, а лучше и то и другое. Это катастрофически (см. фото, серва около 30гр!) влияет на габарит, развесовку по осям, положение ЦТ, предельные скорости моторов и т.д. - т.е. все рассчеты, сделанные мною и подгонки положения ЦТ, упрощающее их, все идет лесом (см. выше "без float" - никак) .. в общем, вариант скоростного преодоления трассы можно считать закрытым. Конечно же, ребенку многие цифирьки и места крепления узлов выданы как "волшебное число", также как и "скорость звука" .. в Ардублоке пришлось делать работу в узв. датчиком "ручками".. нет там нормального датчика. Но, это в общем-то и не его уровень знаний.
Фактически, надо делать изменения конструкции робота перед второй частью соревнований + заливать в него другую программу, которую надо будет составлять из нескольких кусков Ардублока (не влезает!), переименовывая переменные в них "на ходу". Да и есть ещё противоречие с пунктом правил: "после начала соревнований вносить изменения в конструкцию - запрещено"..
В общем, главный судья согласился с моими возражениями и что требуется тщательная доработка задумок. Будут думать.
А самое смешное то, что аргумент "хочется увидеть что дитенки сами умеют, а не их тренера" - тут ни разу не проходит, потому как объезд препятствий будет внедряться в программки из тех же самых "домашних заготовок", с чем главный судья - полностью согласен!!! Финиш. и не "фото". :(
А ещё веселее то, что в нашей "младшей группе" заявлено всего .. 5(пять) команд .. было бы с кем соревноваться.
Ну да, там и по регламенту "тренер" полагается. Тогда снимаю свой вопрос. А что организаторы поменяли в регдаменте? Что то запретили? Клапауций ты организаторах???
Открытое письмо преподавателям Инженерного лицея НГТУ, тусующимся тут:
Ребята - вносить существенные изменения в правила соревнований за всего 2 оставшихся дня выходных - есть позор.
Вы - не смогли решить задачу и решили поменять правила. Класс!
Все верно. У детей должно воспитыватся понимание того, что существуют различные пути решения технических проблем и социальные аспекты не менее важны чем верный алгоритм. А то повыростают и не будут толком знать куда заносить и перед кем сколько приседать. А при распаде феодальной империи правильные знакомые - такой же фактор победы как и мощный движек. И без соответствующего умения лизнуть успех в жизни не светит. Так что завязывайте с идеализмом! Не смогли отстоять старые правила - считайте что вышли на старт с разряжеными акумами.
А теперь ("пацан - дал правила, пацан их и изменил") заставьте подобный гоночный болид из Формулы-1 гоняться на трассе Драккара наравне с КАМаЗами .. ну, или наоборот поставьте КАМаЗ на Формулу-1 .. а ведь именно такое изменение и предложили организаторы, да ещё и "в последний момент"! :)
Организаторы предположили что объезд препятствий должен быть выполнен ребенком "на месте" за 1.5 часа, типа так:
"предполагается добавление энкодеров на колеса и простой объезд по энкодерам: поворачиваем на 90грд, отъезжаем, поворачиваем и т.д. .. ничего сложного не предполагалось"
Поскольку младшая группа - это 10-14лет, то требовать от ребятишек полноценного программирования с использованием обработчика прерываний (тут взрослые то путаются и регулярно всплывают темки) - несколько некорректно. Как понимаю, wiring НЕ предоставляет готовых средств для получения скорости вращения колес по энкодерам "простым вызовом функции" .. или я не прав?
Вопрос: есть ли готовая библиотечная функция получения скорости (количества срабатываний ИК-энкодера в ед. времени) по энкодерам ИЛИ есть ли "простой" способ запрограммировать такую функцию? Простой - без ручной перенастройки режимов таймера (считаем что это Ассемблер) или использования обработчика прерываний (подсчет по прерываниям).
Просто очень интересно какой "простой способ" имелся ввиду.. :)
Не, не за один! Первый раунд - чистая гонка по линии, а второй - с объездом. Время на модификацию (не заливку второй программы, а именно модификацию на месте!) - 1.5 часа. Результат считаем по "сумме лучших кругов".. как считаем, будет ли какой-то гандикап на первый и второй раунды, вид, размеры препятствий .. "мы это ещё не решили, будет решаться судьей на соревновании, но препятствия будут для всех одинаковы".
Не проходит по соображениям малого возраста участников "от 10 лет". Требует указания в параметрах имени функции, прицепляемой к прерыванию, а также реализации алгоритма подсчета за заданный промежуток времени. Измеряем скорость по энкодерам, а не просто инкрементируем счетчик. И это надо делать "фоном" в процессе работы основного алгоритма ..
Ну то есть, сделать аттач функции, которая будет инрементировать счетчик - не проблема. Но, это не вся работа! Надо сделать ещё "аттач", который будет срабатывать по времени и запоминать сколько первый аттач насчитал импульсов и сбрасывать счет заново .. вот его куда приаттачить? По идее, надо вешать как хук на обработчик времени .. но он недоступен в wiring или запускать какой-то таймер как счетчик своего времени и к нему аттачится .. требует перепрограммирования таймера ручками (считаем что это Ассемблер).. и, ваш вариант? :)
Да, ещё не забываем, что базовый МК - это УНО, а у него не так много ног куда можно приаттачиться и счетчики заняты ШИМом моторов тоже. :)
Прикол .. из заявленных 5-и участников, из-за изменений могут сняться .. 3 команды по разным причинам: у нас оно не лезет в Ардублок, у одних нет узв. датчика на руках, а заказать они не могут, у третьих нет энкодеров .. и?
Ну так снимитесь и Вы. Останется одна команда, пусть сразу 3 призовых места займет ))) Организаторам предложите 3-й раунд - бег в мешках на лыжах. Абсурд нельзя оставлять незавершенным.
ПС. Если кто из зрителей принесет в кармане генератор УЗ, то соревнованиям можна вернуть былую непредсказуемость ;)
А зачем вам энкодер? Вы же знаете на каких скоростях и за какое время входите в поворот.
Можно повернуть перед препятствием подменив данные с датчиков игнорируя реальные показания. И вернутся на линию обратно, подменив данные с датчиков, как будто потеряли линию.
Даже можно максимально ускорится на этом манёвре, так как за слёт с линии не дисквалифицируют.
Как приспособиться к изменяющимся правилам, мы уже в общем-то решили. Сейчас уже вопрос больше "риторический" и хочется таки довести дело до какой-то точки .. жду вердикта "организаторов".
...а также реализации алгоритма подсчета за заданный промежуток времени. Измеряем скорость по энкодерам, а не просто инкрементируем счетчик. И это надо делать "фоном" в процессе работы основного алгоритма ..
Ну то есть, сделать аттач функции, которая будет инрементировать счетчик - не проблема. Но, это не вся работа! Надо сделать ещё "аттач", который будет срабатывать по времени и запоминать сколько первый аттач насчитал импульсов и сбрасывать счет заново .. вот его куда приаттачить? По идее, надо вешать как хук на обработчик времени .. но он недоступен в wiring или запускать какой-то таймер как счетчик своего времени и к нему аттачится .. требует перепрограммирования таймера ручками (считаем что это Ассемблер).. и, ваш вариант? :)
Зачем так сложно?
Скорость, как известно из курса физики (правда, не помню, до 4-го класса это или после), отношение пройденного пути к затраченному времени.
Никто не заставляет проводить замеры через равные интервалы времени.
В прерывании энкодера только счетчик - ничего более.
При необходимости вызывается функция, считающая скорость. Не прерывание - просто функция, вызываемая откуда нужно.
В функции - пара статических переменных: показания счетчика и соответствующий им момент времени некоторое время назад (на самом деле две пары, но не суть). Текущая скорость вычисляется как отношение разности показания счетчика настоящего и из запомненной пары к разности времени - настоящего и из той же самой пары.
Естественно, предусмотрены средства обеспечивающие необходимую точность при частых запросах скорости (для чего и нужна вторая пара).
И на что нужна скорость при обезде препятствия воще? Та только путь - сколько в сторону ушли, на столько и вернулись. Уходить и возвращатся можна вобще и с разной скоростю.
Ок, убедили что задача имеет "простое решение" для уровня 4-го класса. Чего-то я полез в дебри.. да, достаточен путь, а он и измеряется энкодером. :)
Жаль что на Ардублоке нет возможностей программировать прерывания и параметры функций.
В целом, путем долгого медитирования над фразой "моделирование поведения" от Andriano, наконец-то дошло КАК это можно сделать с учетом большого количества влияющих факторов, за что ему отдельное "спасибо". Но, хорошо вижу что это никак не уровень знаний 4-го класса (кстати физику начинают изучать то ли в 5 то ли 7-м классе, не помню) поэтому все критические ограничения на управление придется ему выдавать как "волшебные числа", так же как "пи", "же" и т.д. и переводить в натуральные дроби, ибо "вещественных" чисел он ещё не проходил вовсе. Они ещё и отрицательные числа не проходили, а дроби пока только в виде "остаток от деления".
Да, похоже построил мат. доказательство почему ПИД не решает задачу .. жаль. В нем все так "просто" .. в общем, будем выступать с тем "что получилось", времени на моделирование и доводку машинки с учетом объездов и возможного появления "новых изменений регламента" - уже не осталось.
Всем, спасибо. Тему можно считать закрытой.
P.S. поскольку у нас ничего вменяемого не получилось, то "что-то выкладывать" из своих умозаключений (обещал выше) не вижу смысла. Сожалею.
Да, вариант возможный .. в рассылке указано, что старт по узв. датчику сохраняется, но он у нас так и планировался. Это наша "находка" с прошлых соревнований. Оказалось гораздо удобнее подставить руку перед роботом и убирать её по свистку, чем организовывать старт по кнопке: пока на кнопку нажмешь, пока отпустишь .. посмотрели как народ мучается и сделали себе по датчику. Теперь это введено в правила.
Там, теперь появилось изменение, что на "второй тур робот должен будет выполнить задание ПЕРЕД шлагбаумом до старта. Характер задания и его реализация - непосредственно на соревновании". Так шта .. "водные преграды" не исключены вовсе. ;)
Все нормально, это нас не пугает. Вот то, что убрали "тренировочный день" и на трассу с незнакомым освещением придется выходить "в темную" .. несколько напрягает. Весь регламент соревнований уложили в 1 день .. в его возрасте это достаточно напряжно. Только 1 "обед", придется давать что-то с собой дополнительно.
В целом, решение задачи скоростного (на пределе теории) движения так и не найдено, будем выступать с тем что получилось. Пока однозначный вывод что в чистом виде ПИД-регулятор не справляется с задачей: слишком большая инерция, банально не успевает подстроиться. Фиговый из него "предсказатель поворота".
В общем, пока понизили общую скорость до разумной величины и упростили ПИД-регулятор до состояния "понимания" ребенком, чтобы мог сам справляться. Моя версия программы показывает, что если идет сочетание "длинная прямая - крутой поворот 30см", то вылет за трассу составляет около 20см. на предельных по теории скоростях движения. Зато занос получается красивый .. а ещё обнаружился такой "эффект": на змейке ПИД-регулятор может даже заставить машинку возвращаться назад, при потере трассы. Очень забавно выглядит .. едет, едет себе и тут раз и попятился, нашел линию и поехал дальше. :)
Ну вот и закончился соревновательный день. Мы, к сожалению, заняли самое последнее место, поскольку наш "исскуственный интеллект" отказался ехать по линии непосредственно на зачетных кругах, хотя на этапе тренировок здорово потрепал нервы конкрентам, показав самую высокую скорость прохождения трассы - 12-14сек против команды, занявшей первое место - 18-22сек., на трассе длиной около 10м. Несколько раз слышал: "Блин, нас спасет только чудо" .. оно и произошло.
Тем не менее, я доволен как слон: это первое полноценное и самостоятельное участие сына в соревнованиях и наконец-то он победил сам себя. Во второй половине он самостоятельно подправил программу, нашел оригинальное решение той проблемы что не позволила ему показать на что способен его робот, сам отрегулировал ПИД "по своему": да, вместо расчетных 8-10сек на трассу, его тележка проезжала за 12-14сек, но достаточно уверенно.
Но, по-порядку:
Соревновантельный день предполагал 1.5 часа тренировок, постановку роботов на 15-и минутный карантин для подготовки судей и первый раунд заездов по 2 заезда по 1 кругу. Использовался фото-старт и фотофиниш, что позволяло замерить точное время прохождения трассы. Потом был "обед" и повтор: 1 час тренировок и второй раунд по 2 заезда. Предельное время прохождения линии - не более 60сек. Длина трассы около 10м. (моя оценка). Итого с "открытием соревнований" - с 11 утра до 17 вечера. Всё запротоколировано, в смысле зафотано и снято на кино. Фотки и кино пока ещё в фотоаппарате, выложу чутка позже.
На старт было заявлено 7 команд, но 2 команды не пришло вовсе. Первая тренировка снова показала всю ненадежность настройки цифровых датчиков препятствий подстроечными резисторами: постраивает, делает прогон, выключает тележку идет править программу. Залил, включил .. и упс все надо подстраивать заново. Вроде бы к середние тренировки нашел "золотую середину" в настройке датчиков и робот поехал, но виляя из стороны в сторону .. перерегулировка ПИД. Сильная .. справился сам, поменяв программу и вернувшись к предыдущей версии, где был только ПД + "предсказатель поворотов".
Поехало гораздо ровнее и в какой-то момент судья объявил о прохождении им трассы за .. 6.5сек. .. одна команда похоже запаниковала и тренировки "закончила" .. есть кусок видео где хорошо видно как эти ребятишки понурив взор играют на ноутбуке в игрушку, вместо того, чтобы доделывать код. Забегая вперед: со второго раунда они таки снялись совсем. Но, добиться устойчивого прохождения трассы на такой скорости ему так и не удалось и он понизил предельную скорость робота и упростил ещё этот "ПД", заодно отказавшись от предсказателя поворотов, как я потом увидел. В итоге средняя скорость упала до 14сек., но тележка поехала гораздо ровнее и стабильней. Кроме этого, была снята "декоративная крышка" (на последующих фото/видео робот без неё). Как он сказал потом: "А она нарушала центровку и утяжеляла робота. Так ему стало гораздо легче".
Тем не менее, на первый карантин он ушел со словами: "вряд ли поедет, собьется настройка датчиков .. аккумуляторы остынут и датчики перестанут работать". А поправлять после карантина - запрещено правилами. Так оно и произошло: на старте оба забега наш робот бодро стартанув .. поехал в сторону полностью игнорируя линию. Из оставшихся 4-х команд (кроме нашей): лучшее время 22сек, и следующее 40 и 50сек. У одной команды робот тоже "сошел с дистанции" проигнорив линию вовсе.
Вторая тренировка. И снова, робот показывает свои 12-14сек достаточно уверенно. Он решил завершив настройку датчиков поставить робота на карантин оставив его во включенном состоянии .. я подозревал, что это не приведет к желаемому эффекту, поскольку стояние целых 15 минут .. идет разряд аккумуляторов, падает напряжение хоть и незначительно и идет расстройка датчиков .. будет "тоже самое". Но вмешиваться не стал. В итоге так оно и получилось: на страрте оба раза робот бодро поехал мимо линии. И он снова получил в зачетном времени честно заработанные прочерки.
У остальных: лучшее время улучшилось до 18сек (слышал на тренировке: "если он настроит свои датчики, нам капец"), команда с 50сек - снялась со второго раунда, ещё 2 команды поехали "мимо линии" .. и того нормально все проехало только 2 команды. Победители соревнований, как полагаю находятся в младшей группе последний год .. уж больно большенькие ребятишки.
Тем не менее, я доволен как слон. Он впервые участвовал на соревновании, он сам нашел несколько решений из непростой для него ситуации, он сам попробовал выяснить (пообщался с судьей) можно ли подрегулировать датчики после карантина и непосредственно перед стартом, он наконец-то вкусил манящий дух соревнований: "Да, если бы не эти дурацкие датчики! Мы были бы первые! Я нашел ошибку в программе и поправил её .."
P.S. Заходил в старшую группу. То что мне там довелось видеть мало чем отличалось от ситуации в нашей группе: теже 30-50сек на прохождение дистанции, теже потери линии .. разве что видел 3 робота, имеющих так же как и у нас "гребенку с датчиками" .. но тех скоростей, что показывал наш в тренировочных заездах тоже видеть не довелось. Мелочь, а приятно. :)
Ну .. поражение произошло от некачественных датчиков. Мы научились их настраивать и считали что победим, но я не учел того, что после карантина ему не дадут подстроить датчики ещё раз, просто выпустил этот момент правил из головы при подготовке. Как теперь понимаю, их конструкция по сути содержит дефект: использование TSOP-прибора в качестве принимающего элемента. Их неустойчивость настройки просто феноменальна. Кроме нас, их не использовал больше никто.
-"К следующим соревнованиям, я напаяю аналоговых датчиков сколько надо." - его реплика, которая говорит о многом. Сейчас у нас было подготовлено только 4шт, из которых 1 погорел вместе с УНО, когда на плату я подал 12в по ошибке на внутренние 5в, а у второго после изготовления был случайно залит клеем фотоприемник.. вот и получилось что у нас было 2 аналоговых датчика и 4 цифровых датчика препятствий/линии. Паять новые на замену внезапно оказалось не из чего.
Arhat109-2, понятно, что поражение явилось результатом двух факторов - собственной неопытности и определенного неспрогнозированного стечения обстоятельств. Но я о том, что если бы, скажем, сейчас ему удалось занять 1-2 место, то к следующим соревнованиям он бы готовился уже менее тщательно, и, потерпев неудачу на вторых-третьих соревнованиях, перенес бы это гораздо более болезненно. А так - все вышло в точности по народной мудрости "первый блин комом". И это нормально.
Ну .. если уж комом, то это всеж-таки второй блин. :) В прошлом году мы попытались попасть на отборочный тур Робофеста, но там тоже его подвели датчики. Но в тот раз он практически мало что понимал в по сути мною написанной программы и очень побоялся выступать, на тренировочном времени - терялся по любому поводу .. нас, "тренеров" туда не подпускали даже близко и он просто вставал и искал глазами меня, показывая знаками что не знает что ему делать дальше. И на поле, его просто отодвигали старшие коллеги в сторонку когда им было надо прокатить робота. Он и двигался. В результате снялись во время первого тренировочного времени, даже не дойдя до раунда. Все-таки был слишком мелким ещё. В целом, я потому и доволен как слон, что тут он выглядел даже увереннее своих старших коллег (он и тут был самым мелким и один в команде, остальные по 2) и некоторым даже пытался помогать и что-то даже советовать. Вырос и справился со страхом, который явно присутствовал с утра.
P.S. Проверили настройку датчиков дома .. фантастика! Они держат настройку "как часы". Включил, погонял робота по домашней трассе, выключил и пошел есть. Через полчаса(!) включил - "всё поехало"... вот жеж зараза какая.
P.P.S. Куда заливать видео? Нужен сайт, где не требуется регистрация по телефону..
Как теперь понимаю, их конструкция по сути содержит дефект: использование TSOP-прибора в качестве принимающего элемента. Их неустойчивость настройки просто феноменальна. Кроме нас, их не использовал больше никто.
годами TSOP работают на объектах и ничего
вот только питание этому датчику требуется обяательно фильтровать, ничего сложного простая RC -цепочка, но без нее работает, т.е. не работает, именно так как описано
вот из опыта применения одного товарища
" нашел я все таки у себя в хламе, рекомендованную Вами TSOP1736.В процессе экспериментов выяснились такие моменты, чувствительность к качеству питания, обалденная чувствительность к полезному сигналу (по этой причине пока вместо ИК-светодиода использую обычный красный).Из минусов, может проскакивать "ложный" импульс .Вот что получается https://www.youtube.com/watch?v=t0CaaWLdp90
Из за инерционности камеры кажется, что светодиод за TSOP просто горит, на самом деле он загорается как только проходит метка, когда останавливается патрон это заметно."
//с простым ПИД регулятором похоже не всё так просто "как пишут". Пока его настройка составляет некую проблему.
)) Есть точка зрения что проблема останется непреодолимой. САУ не на одном ПИД держится.
// пожгли L298 драйвер моторов при проверке АБС-торможений.
Теперь его невозможно выполнять? А из-за чего он погорел?
//под психологическим давлением.
Не давайте тактическик подсказки соперникам ;)
L298 погорел из-за перехода на литиевые 3S аккумы. Переключение в режиме АБС требует аккуратности, когда мотор предельно способен выжрать более 4А при смене направления движения. Кроме того, конкретно этот L298 был со снятым радиатором - борьба за вес. Исправились.
В общем оно поехало, причем очень уверенно держит линию, даже выезжая далеко за край - помнит где потерял линию: проехал полкомнаты в повороте и таки нашел. Фантастика. Но, ПИД - не спасает. Фактически решающий фактор - вынос датчиков вперед, но тогда поворот радиусом 300мм - это гарантированный выход за линию и снятие с соревнований за "срезание углов". Пока удалось развить среднюю скорость по трассе .. 58 см/сек. :(
Получается L298 пожглись ЭДС создаваемая движками в фазе торможения? Или просто пусковые токи в моменты включений, производимых достаточно часто? Отсутствие радиатора очевидно усугубило.
Как бы не делали, в поворотах скорость будет снижатся, одно колесо тянет, другое тормозит. Тут без вариантов. С этим фактом прийдется смирится, а не боротся. Былбы свободный выбег или поворот колес - можно бы было еще фантазировать.
От ШИМ в повороте (ну или АБС одного колеса - без разницы как назвать) не отказывайтесь. Пока тачка без датчиков и автоматики не научится делать устойчивый поворот с минимальным радиусом на максимально достижимой скорости никакая автоматика ниче на даст. Она просто упрется в физические ограничения тачки, а найти оптимум этих ограничений не сможет. Его искать Вам. А автоматика сможет только вовремя переключатся между режимами прямо и поворот. При радиусе больше минимума - переключать будет часто, наверно после каждого периода ШИМ. В переключении режимов тоже есть вопросы, типа достаточности вращающего момента чтоб задать требуемую скорость вращения тачки вокруг вертикали за имеющееся время упреждения (вот оно - растояние выноса датчиков!!!) при существующем моменте инерции. Но степ дай степ.
Да, как понял, драйвер погорел из-за противоЭДС мотора в режиме АБС. Просто первый раз когда запустили, забыли указать паузу в 2мсек на реверс мотора. Драйвер не успел закрыть активные транзюки, как его пнули в обратном направлении + токи с мотора. Ну и отсутствие радиатора усугубило ситуацию - управление одним (реверсировались оба движка одновременно!) мотором накрылось медным тазом. В общем, вывод банален: управление мощной нагрузкой надо программировать ТЩАТЕЛЬНО. :)
Это исправили заменой драйвера, благо этих платок у нас было 4 шт. :) Мосфетные драйвера распаяны на плате под Ардуино Мега2560 и сюда вот не лезут в габарит никак .. развел схему на 2 мосфетных драйвера "поменьше" - сделаю, заменим ими 298-е, а пока так катаемся. Максимальная скорость несколько ниже, но все равно пока она не достигнута ни в одном глазу..
Цифровые датчики погорели, и таких (с одним подстроечником) у нас было только 2шт .. сгорели оба. Но, есть ещё 6шт с двумя подсроечниками .. сейчас гоняем на них. Они сложнее настраиваются, и именно они в прошлый раз повели себя плохо с освещением поля люминечцентными лампами .. будем надеяться что проканают или спаяем ещё 2шт аналоговых к соревнованиям. Скоро можно будет тренироваться "на полях" - там и посмотрим.
Да, как оказалось погорел и один аналоговый датчик, хотя и не понял чему там гореть (ИК-светодиод + ИК фотодиод + 2 резистора) .. запаяли ещё один.
Хорошая новость: коллеги по работе выделяют 2 наны из своих закромов "в запас" .. :)
Плохая новость: просочилась инфа, что поле будет иметь повороты "плавно изменяющегося" радиуса .. как раз для исключения желаний "подгонки" под радиус поворота.
То мелочи, проблемы будут когда развилки сделаю и восмерок накрутят ;) Умеете по прямой, научитесь по минимальному радиусу - все что между ними получится последовательной комбинацией одного и второго с достаточной частотой.
Попробовали "подогнать" движение к домашней тестовой трассе. На ней есть только прямой участок и повороты только с мин. радиусом. В целом, кузяво: вынос датчиков позволяет "попасть" в поворот и пройти его практически без снижения скорости. Одно но: если датчик "сглючил" (редко но бывает), то скажем ещё на прямом участке начинается ПИД-регулировка и попасть в радиус - уже ни в какую. Положение тележки на линии практически произвольное.
В общем дошло: ПИД хорош только для малоинреционных систем или мы так и не научились его готовить. Чем ниже выставленная макс. скорость - тем лучше оно работает и тем меньший вынос датчиков можно себе позволить. Не интересно, нужны другие идеи.
вот так выглядел наш "погорелец" на УНО. На верхнем фото видно состояние сразу после сборки - хорошо заметен перекос установки двигателей и колес. Исправляли.
В стиле безумного макса )))
От подглючивания датчиков фильтр Кальмана рекомендуют.
//ПИД хорош только для малоинреционных систем
Нет. инерционность в нем учитывается коэффициентами.
Как я понял вы схему расположения датчиков не меняли и у вас начальный алгоритма реагирования на рысканье и поворот одинаковый?
Если поставить взад ещё пару датчиков, то вынесенный вперёд датчик можно будет настроить только на обнаружения поворота (и крутизны поворота?), а рысканье будут отрабатывать остальные.
Это мало помогает, я бы сказал даже и совсем не помогает. Дальние датчики (на фото) - едва успевают управлять тележкой на скоростях больше 50 см/сек. Это - факт, а не реклама. :(
Ближние датчики .. можно конечно и на них, пгобовали. Только они уже ваще никуда не успевают. :((
(Вы думаете я бы выложил фото, если бы эта версия конструкции оказалась удачной ПЕРЕД соревнованием?!?)
ПИД в таком варианте - не работает как хочет того теория. Причина - бинарность датчиков: их по сути всего 2 и соотвественно ситуаций 3: "едем по линии", "ой, это край" и "линия сбоку" .. причем практически с "какого боку" - задача не решаема на 2-х датчиках. Чтобы ПИД заработал, как понимаю надо штук 5-7 датчиков..
Nosferatu не об этом спрашивал. Из-за простоты конструкции по датчикам не различимы:
1. уход с линии по причине смещения в сторону сохраная паралельность линии
2. поворота морды в сторону - рысканья. При этом ЦМ может оставатся на линии.
3. приближения к повороту.
И реакция одинаковая получается во всех случаях. Что неверно и дает неустойчивость системы когда все сложится причудливым образом.
Наверное так. На фото датчики расположены примерно как на трассе, разве что были не высталены по ширине линии на момент фотографирования. Стоят "как поставилось". Но в целом - это две группы по 2 датчика. И такое расположение не дает ответа на ряд важных вопросов, в т.ч. что и озвучено Вами. Так я тему для того и создал, чтобы понять что и как можно изменить для улучшения конструкции и кода управления. Только надо помнить, что одно дело нам тут, взрослым собрать суперскоростного робота и совсем другое дело объяснить ребенку что к чему да так, чтобы он смог самостоятельно выступить с этим.. а времени осталось практически 2 выходных .. :(
Открытое письмо преподавателям Инженерного лицея НГТУ, тусующимся тут:
Ребята - вносить существенные изменения в правила соревнований за всего 2 оставшихся дня выходных - есть позор.
Вы - не смогли решить задачу и решили поменять правила. Класс!
Разобрались, исправляю пост:
В правила гонки по линии сделаны дополнения:
1. Старт по автоматически открывающимся воротам с узв. датчика. У нас он так и происходит с прошлого раза, не проблема;
2. Фотофиниш. Тоже пофиг;
3. Вторая партия гонок производится с произвольно расставленными препятствиями на линии. Их надо объезжать. Изменение программы должно быть совершено участниками во время соревнований за 1.5 часа. Вот тут и кроется вся засада: ребенок программирует на Ардублоке, у которого ограничен макс. размер программы, примерно 300 строками "С". Сейчас программа занимает около 280 строк (осталось места на примерно 1-2 блока if-then-else с парой операторов внутрях). То есть впихнуть чего-то сложного в программу уже практически нельзя.
А самое главное, что надо добавлять к роботу или сервомашинку на узв. датчик и/или энкодеры, а лучше и то и другое. Это катастрофически (см. фото, серва около 30гр!) влияет на габарит, развесовку по осям, положение ЦТ, предельные скорости моторов и т.д. - т.е. все рассчеты, сделанные мною и подгонки положения ЦТ, упрощающее их, все идет лесом (см. выше "без float" - никак) .. в общем, вариант скоростного преодоления трассы можно считать закрытым. Конечно же, ребенку многие цифирьки и места крепления узлов выданы как "волшебное число", также как и "скорость звука" .. в Ардублоке пришлось делать работу в узв. датчиком "ручками".. нет там нормального датчика. Но, это в общем-то и не его уровень знаний.
Фактически, надо делать изменения конструкции робота перед второй частью соревнований + заливать в него другую программу, которую надо будет составлять из нескольких кусков Ардублока (не влезает!), переименовывая переменные в них "на ходу". Да и есть ещё противоречие с пунктом правил: "после начала соревнований вносить изменения в конструкцию - запрещено"..
В общем, главный судья согласился с моими возражениями и что требуется тщательная доработка задумок. Будут думать.
А самое смешное то, что аргумент "хочется увидеть что дитенки сами умеют, а не их тренера" - тут ни разу не проходит, потому как объезд препятствий будет внедряться в программки из тех же самых "домашних заготовок", с чем главный судья - полностью согласен!!! Финиш. и не "фото". :(
А ещё веселее то, что в нашей "младшей группе" заявлено всего .. 5(пять) команд .. было бы с кем соревноваться.
А преподаватели иженерного лицея знают что им на соревнования делает машинку взрослый дядька?
#дедывоевали ой, всё...
Кто вам сказал что делает взрослый? Наоборот даже несколько раз писалось что ребенок сам делает, потому и двигается медленно.
Ну да, там и по регламенту "тренер" полагается. Тогда снимаю свой вопрос. А что организаторы поменяли в регдаменте? Что то запретили? Клапауций ты организаторах???
я разрешил маркер, рисующий прохождение телеги - теперь каждый участник является победителем!
Открытое письмо преподавателям Инженерного лицея НГТУ, тусующимся тут:
Ребята - вносить существенные изменения в правила соревнований за всего 2 оставшихся дня выходных - есть позор.
Вы - не смогли решить задачу и решили поменять правила. Класс!
Все верно. У детей должно воспитыватся понимание того, что существуют различные пути решения технических проблем и социальные аспекты не менее важны чем верный алгоритм. А то повыростают и не будут толком знать куда заносить и перед кем сколько приседать. А при распаде феодальной империи правильные знакомые - такой же фактор победы как и мощный движек. И без соответствующего умения лизнуть успех в жизни не светит. Так что завязывайте с идеализмом! Не смогли отстоять старые правила - считайте что вышли на старт с разряжеными акумами.
Исправил открытое письмо по результатам обсуждения изменений. В общем, да. Складывается ощущение что "социальный аспект" не менее важен. :(
Идея с маркером у него была месяц назад :)
Сейчас он предложил решение кардинальнее: установить на тележку пистолет и расстреливать препятствия на ходу. :)
Идея №2: "мех. рука", переставляющая препятствия за робота на то же место.
Исправил открытое письмо по результатам обсуждения изменений. В общем, да. Складывается ощущение что "социальный аспект" не менее важен. :(
пацан сказал - пацан исправил.
дык, организаторы конкурса аналогично поступили: правила написали - правила исправили.
в чём суть претензии? напиши свои правила и установи на телегу гранатомёт! расстреляй жюри нафиг - новоросия вперде!
О_О
Ага, а где "фотоприемники"? :)
А теперь ("пацан - дал правила, пацан их и изменил") заставьте подобный гоночный болид из Формулы-1 гоняться на трассе Драккара наравне с КАМаЗами .. ну, или наоборот поставьте КАМаЗ на Формулу-1 .. а ведь именно такое изменение и предложили организаторы, да ещё и "в последний момент"! :)
Кстати, вопрос профессионалам:
Организаторы предположили что объезд препятствий должен быть выполнен ребенком "на месте" за 1.5 часа, типа так:
"предполагается добавление энкодеров на колеса и простой объезд по энкодерам: поворачиваем на 90грд, отъезжаем, поворачиваем и т.д. .. ничего сложного не предполагалось"
Поскольку младшая группа - это 10-14лет, то требовать от ребятишек полноценного программирования с использованием обработчика прерываний (тут взрослые то путаются и регулярно всплывают темки) - несколько некорректно. Как понимаю, wiring НЕ предоставляет готовых средств для получения скорости вращения колес по энкодерам "простым вызовом функции" .. или я не прав?
Вопрос: есть ли готовая библиотечная функция получения скорости (количества срабатываний ИК-энкодера в ед. времени) по энкодерам ИЛИ есть ли "простой" способ запрограммировать такую функцию? Простой - без ручной перенастройки режимов таймера (считаем что это Ассемблер) или использования обработчика прерываний (подсчет по прерываниям).
Просто очень интересно какой "простой способ" имелся ввиду.. :)
https://www.arduino.cc/en/Reference/AttachInterrupt по каким-то соображениям не подходит?
PS. Но, вообще-то, попытка совместить линию с объездом препятствий за один проезд - это жесть.
Не, не за один! Первый раунд - чистая гонка по линии, а второй - с объездом. Время на модификацию (не заливку второй программы, а именно модификацию на месте!) - 1.5 часа. Результат считаем по "сумме лучших кругов".. как считаем, будет ли какой-то гандикап на первый и второй раунды, вид, размеры препятствий .. "мы это ещё не решили, будет решаться судьей на соревновании, но препятствия будут для всех одинаковы".
Не проходит по соображениям малого возраста участников "от 10 лет". Требует указания в параметрах имени функции, прицепляемой к прерыванию, а также реализации алгоритма подсчета за заданный промежуток времени. Измеряем скорость по энкодерам, а не просто инкрементируем счетчик. И это надо делать "фоном" в процессе работы основного алгоритма ..
Ну то есть, сделать аттач функции, которая будет инрементировать счетчик - не проблема. Но, это не вся работа! Надо сделать ещё "аттач", который будет срабатывать по времени и запоминать сколько первый аттач насчитал импульсов и сбрасывать счет заново .. вот его куда приаттачить? По идее, надо вешать как хук на обработчик времени .. но он недоступен в wiring или запускать какой-то таймер как счетчик своего времени и к нему аттачится .. требует перепрограммирования таймера ручками (считаем что это Ассемблер).. и, ваш вариант? :)
Да, ещё не забываем, что базовый МК - это УНО, а у него не так много ног куда можно приаттачиться и счетчики заняты ШИМом моторов тоже. :)
Прикол .. из заявленных 5-и участников, из-за изменений могут сняться .. 3 команды по разным причинам: у нас оно не лезет в Ардублок, у одних нет узв. датчика на руках, а заказать они не могут, у третьих нет энкодеров .. и?
Ну так снимитесь и Вы. Останется одна команда, пусть сразу 3 призовых места займет ))) Организаторам предложите 3-й раунд - бег в мешках на лыжах. Абсурд нельзя оставлять незавершенным.
ПС. Если кто из зрителей принесет в кармане генератор УЗ, то соревнованиям можна вернуть былую непредсказуемость ;)
А зачем вам энкодер? Вы же знаете на каких скоростях и за какое время входите в поворот.
Можно повернуть перед препятствием подменив данные с датчиков игнорируя реальные показания. И вернутся на линию обратно, подменив данные с датчиков, как будто потеряли линию.
Даже можно максимально ускорится на этом манёвре, так как за слёт с линии не дисквалифицируют.
Как приспособиться к изменяющимся правилам, мы уже в общем-то решили. Сейчас уже вопрос больше "риторический" и хочется таки довести дело до какой-то точки .. жду вердикта "организаторов".
...а также реализации алгоритма подсчета за заданный промежуток времени. Измеряем скорость по энкодерам, а не просто инкрементируем счетчик. И это надо делать "фоном" в процессе работы основного алгоритма ..
Ну то есть, сделать аттач функции, которая будет инрементировать счетчик - не проблема. Но, это не вся работа! Надо сделать ещё "аттач", который будет срабатывать по времени и запоминать сколько первый аттач насчитал импульсов и сбрасывать счет заново .. вот его куда приаттачить? По идее, надо вешать как хук на обработчик времени .. но он недоступен в wiring или запускать какой-то таймер как счетчик своего времени и к нему аттачится .. требует перепрограммирования таймера ручками (считаем что это Ассемблер).. и, ваш вариант? :)
Зачем так сложно?
Скорость, как известно из курса физики (правда, не помню, до 4-го класса это или после), отношение пройденного пути к затраченному времени.
Никто не заставляет проводить замеры через равные интервалы времени.
В прерывании энкодера только счетчик - ничего более.
При необходимости вызывается функция, считающая скорость. Не прерывание - просто функция, вызываемая откуда нужно.
В функции - пара статических переменных: показания счетчика и соответствующий им момент времени некоторое время назад (на самом деле две пары, но не суть). Текущая скорость вычисляется как отношение разности показания счетчика настоящего и из запомненной пары к разности времени - настоящего и из той же самой пары.
Естественно, предусмотрены средства обеспечивающие необходимую точность при частых запросах скорости (для чего и нужна вторая пара).
И на что нужна скорость при обезде препятствия воще? Та только путь - сколько в сторону ушли, на столько и вернулись. Уходить и возвращатся можна вобще и с разной скоростю.
Ок, убедили что задача имеет "простое решение" для уровня 4-го класса. Чего-то я полез в дебри.. да, достаточен путь, а он и измеряется энкодером. :)
Жаль что на Ардублоке нет возможностей программировать прерывания и параметры функций.
В целом, путем долгого медитирования над фразой "моделирование поведения" от Andriano, наконец-то дошло КАК это можно сделать с учетом большого количества влияющих факторов, за что ему отдельное "спасибо". Но, хорошо вижу что это никак не уровень знаний 4-го класса (кстати физику начинают изучать то ли в 5 то ли 7-м классе, не помню) поэтому все критические ограничения на управление придется ему выдавать как "волшебные числа", так же как "пи", "же" и т.д. и переводить в натуральные дроби, ибо "вещественных" чисел он ещё не проходил вовсе. Они ещё и отрицательные числа не проходили, а дроби пока только в виде "остаток от деления".
Да, похоже построил мат. доказательство почему ПИД не решает задачу .. жаль. В нем все так "просто" .. в общем, будем выступать с тем "что получилось", времени на моделирование и доводку машинки с учетом объездов и возможного появления "новых изменений регламента" - уже не осталось.
Всем, спасибо. Тему можно считать закрытой.
P.S. поскольку у нас ничего вменяемого не получилось, то "что-то выкладывать" из своих умозаключений (обещал выше) не вижу смысла. Сожалею.
Отпишитесь как пройдут соревнования, интересно же...
И видео! Видео побольше!
Постараемся наделать фоток и видео обязательно.
Вау! Пришла рассылка об отмене препятствий на линии .. мелочь, а приятно. Теперь наша программулина влезет в Ардублок нормально. :)
Постараемся наделать фоток и видео обязательно.
Вау! Пришла рассылка об отмене препятствий на линии .. мелочь, а приятно. Теперь наша программулина влезет в Ардублок нормально. :)
они там совсем больные на голову?
кто же сначала объявляет соревнование, а правила задним числом додумывает?
Постараемся наделать фоток и видео обязательно.
Вау! Пришла рассылка об отмене препятствий на линии .. мелочь, а приятно. Теперь наша программулина влезет в Ардублок нормально. :)
они там совсем больные на голову?
кто же сначала объявляет соревнование, а правила задним числом додумывает?
Очень даже реалистично имитируют поведение заказчика при завершении проекта ))))
В день старта будут делать удивленный вид "Как не говорили про водные преграды? Конечно плавучесть обязательна!!"
Да, вариант возможный .. в рассылке указано, что старт по узв. датчику сохраняется, но он у нас так и планировался. Это наша "находка" с прошлых соревнований. Оказалось гораздо удобнее подставить руку перед роботом и убирать её по свистку, чем организовывать старт по кнопке: пока на кнопку нажмешь, пока отпустишь .. посмотрели как народ мучается и сделали себе по датчику. Теперь это введено в правила.
Там, теперь появилось изменение, что на "второй тур робот должен будет выполнить задание ПЕРЕД шлагбаумом до старта. Характер задания и его реализация - непосредственно на соревновании". Так шта .. "водные преграды" не исключены вовсе. ;)
Все нормально, это нас не пугает. Вот то, что убрали "тренировочный день" и на трассу с незнакомым освещением придется выходить "в темную" .. несколько напрягает. Весь регламент соревнований уложили в 1 день .. в его возрасте это достаточно напряжно. Только 1 "обед", придется давать что-то с собой дополнительно.
В целом, решение задачи скоростного (на пределе теории) движения так и не найдено, будем выступать с тем что получилось. Пока однозначный вывод что в чистом виде ПИД-регулятор не справляется с задачей: слишком большая инерция, банально не успевает подстроиться. Фиговый из него "предсказатель поворота".
В общем, пока понизили общую скорость до разумной величины и упростили ПИД-регулятор до состояния "понимания" ребенком, чтобы мог сам справляться. Моя версия программы показывает, что если идет сочетание "длинная прямая - крутой поворот 30см", то вылет за трассу составляет около 20см. на предельных по теории скоростях движения. Зато занос получается красивый .. а ещё обнаружился такой "эффект": на змейке ПИД-регулятор может даже заставить машинку возвращаться назад, при потере трассы. Очень забавно выглядит .. едет, едет себе и тут раз и попятился, нашел линию и поехал дальше. :)
Искусственный интеллект. Вылезет из машики и захватит вселенную. :)
Ну вот и закончился соревновательный день. Мы, к сожалению, заняли самое последнее место, поскольку наш "исскуственный интеллект" отказался ехать по линии непосредственно на зачетных кругах, хотя на этапе тренировок здорово потрепал нервы конкрентам, показав самую высокую скорость прохождения трассы - 12-14сек против команды, занявшей первое место - 18-22сек., на трассе длиной около 10м. Несколько раз слышал: "Блин, нас спасет только чудо" .. оно и произошло.
Тем не менее, я доволен как слон: это первое полноценное и самостоятельное участие сына в соревнованиях и наконец-то он победил сам себя. Во второй половине он самостоятельно подправил программу, нашел оригинальное решение той проблемы что не позволила ему показать на что способен его робот, сам отрегулировал ПИД "по своему": да, вместо расчетных 8-10сек на трассу, его тележка проезжала за 12-14сек, но достаточно уверенно.
Но, по-порядку:
Соревновантельный день предполагал 1.5 часа тренировок, постановку роботов на 15-и минутный карантин для подготовки судей и первый раунд заездов по 2 заезда по 1 кругу. Использовался фото-старт и фотофиниш, что позволяло замерить точное время прохождения трассы. Потом был "обед" и повтор: 1 час тренировок и второй раунд по 2 заезда. Предельное время прохождения линии - не более 60сек. Длина трассы около 10м. (моя оценка). Итого с "открытием соревнований" - с 11 утра до 17 вечера. Всё запротоколировано, в смысле зафотано и снято на кино. Фотки и кино пока ещё в фотоаппарате, выложу чутка позже.
На старт было заявлено 7 команд, но 2 команды не пришло вовсе. Первая тренировка снова показала всю ненадежность настройки цифровых датчиков препятствий подстроечными резисторами: постраивает, делает прогон, выключает тележку идет править программу. Залил, включил .. и упс все надо подстраивать заново. Вроде бы к середние тренировки нашел "золотую середину" в настройке датчиков и робот поехал, но виляя из стороны в сторону .. перерегулировка ПИД. Сильная .. справился сам, поменяв программу и вернувшись к предыдущей версии, где был только ПД + "предсказатель поворотов".
Поехало гораздо ровнее и в какой-то момент судья объявил о прохождении им трассы за .. 6.5сек. .. одна команда похоже запаниковала и тренировки "закончила" .. есть кусок видео где хорошо видно как эти ребятишки понурив взор играют на ноутбуке в игрушку, вместо того, чтобы доделывать код. Забегая вперед: со второго раунда они таки снялись совсем. Но, добиться устойчивого прохождения трассы на такой скорости ему так и не удалось и он понизил предельную скорость робота и упростил ещё этот "ПД", заодно отказавшись от предсказателя поворотов, как я потом увидел. В итоге средняя скорость упала до 14сек., но тележка поехала гораздо ровнее и стабильней. Кроме этого, была снята "декоративная крышка" (на последующих фото/видео робот без неё). Как он сказал потом: "А она нарушала центровку и утяжеляла робота. Так ему стало гораздо легче".
Тем не менее, на первый карантин он ушел со словами: "вряд ли поедет, собьется настройка датчиков .. аккумуляторы остынут и датчики перестанут работать". А поправлять после карантина - запрещено правилами. Так оно и произошло: на старте оба забега наш робот бодро стартанув .. поехал в сторону полностью игнорируя линию. Из оставшихся 4-х команд (кроме нашей): лучшее время 22сек, и следующее 40 и 50сек. У одной команды робот тоже "сошел с дистанции" проигнорив линию вовсе.
Вторая тренировка. И снова, робот показывает свои 12-14сек достаточно уверенно. Он решил завершив настройку датчиков поставить робота на карантин оставив его во включенном состоянии .. я подозревал, что это не приведет к желаемому эффекту, поскольку стояние целых 15 минут .. идет разряд аккумуляторов, падает напряжение хоть и незначительно и идет расстройка датчиков .. будет "тоже самое". Но вмешиваться не стал. В итоге так оно и получилось: на страрте оба раза робот бодро поехал мимо линии. И он снова получил в зачетном времени честно заработанные прочерки.
У остальных: лучшее время улучшилось до 18сек (слышал на тренировке: "если он настроит свои датчики, нам капец"), команда с 50сек - снялась со второго раунда, ещё 2 команды поехали "мимо линии" .. и того нормально все проехало только 2 команды. Победители соревнований, как полагаю находятся в младшей группе последний год .. уж больно большенькие ребятишки.
Тем не менее, я доволен как слон. Он впервые участвовал на соревновании, он сам нашел несколько решений из непростой для него ситуации, он сам попробовал выяснить (пообщался с судьей) можно ли подрегулировать датчики после карантина и непосредственно перед стартом, он наконец-то вкусил манящий дух соревнований: "Да, если бы не эти дурацкие датчики! Мы были бы первые! Я нашел ошибку в программе и поправил её .."
P.S. Заходил в старшую группу. То что мне там довелось видеть мало чем отличалось от ситуации в нашей группе: теже 30-50сек на прохождение дистанции, теже потери линии .. разве что видел 3 робота, имеющих так же как и у нас "гребенку с датчиками" .. но тех скоростей, что показывал наш в тренировочных заездах тоже видеть не довелось. Мелочь, а приятно. :)
Пролностью разделяю Ваши чувства: поражение на первых соревнованиях - это наиболее оптимальный вариант для дальнейшего развития.
Ну .. поражение произошло от некачественных датчиков. Мы научились их настраивать и считали что победим, но я не учел того, что после карантина ему не дадут подстроить датчики ещё раз, просто выпустил этот момент правил из головы при подготовке. Как теперь понимаю, их конструкция по сути содержит дефект: использование TSOP-прибора в качестве принимающего элемента. Их неустойчивость настройки просто феноменальна. Кроме нас, их не использовал больше никто.
-"К следующим соревнованиям, я напаяю аналоговых датчиков сколько надо." - его реплика, которая говорит о многом. Сейчас у нас было подготовлено только 4шт, из которых 1 погорел вместе с УНО, когда на плату я подал 12в по ошибке на внутренние 5в, а у второго после изготовления был случайно залит клеем фотоприемник.. вот и получилось что у нас было 2 аналоговых датчика и 4 цифровых датчика препятствий/линии. Паять новые на замену внезапно оказалось не из чего.
Arhat109-2, понятно, что поражение явилось результатом двух факторов - собственной неопытности и определенного неспрогнозированного стечения обстоятельств. Но я о том, что если бы, скажем, сейчас ему удалось занять 1-2 место, то к следующим соревнованиям он бы готовился уже менее тщательно, и, потерпев неудачу на вторых-третьих соревнованиях, перенес бы это гораздо более болезненно. А так - все вышло в точности по народной мудрости "первый блин комом". И это нормально.
Ну .. если уж комом, то это всеж-таки второй блин. :) В прошлом году мы попытались попасть на отборочный тур Робофеста, но там тоже его подвели датчики. Но в тот раз он практически мало что понимал в по сути мною написанной программы и очень побоялся выступать, на тренировочном времени - терялся по любому поводу .. нас, "тренеров" туда не подпускали даже близко и он просто вставал и искал глазами меня, показывая знаками что не знает что ему делать дальше. И на поле, его просто отодвигали старшие коллеги в сторонку когда им было надо прокатить робота. Он и двигался. В результате снялись во время первого тренировочного времени, даже не дойдя до раунда. Все-таки был слишком мелким ещё. В целом, я потому и доволен как слон, что тут он выглядел даже увереннее своих старших коллег (он и тут был самым мелким и один в команде, остальные по 2) и некоторым даже пытался помогать и что-то даже советовать. Вырос и справился со страхом, который явно присутствовал с утра.
P.S. Проверили настройку датчиков дома .. фантастика! Они держат настройку "как часы". Включил, погонял робота по домашней трассе, выключил и пошел есть. Через полчаса(!) включил - "всё поехало"... вот жеж зараза какая.
P.P.S. Куда заливать видео? Нужен сайт, где не требуется регистрация по телефону..
Видео на ютуб.
Датчики питаете постоянкой наверно. Переходите на импульсное.
Датчики питаете постоянкой наверно. Переходите на импульсное.
смысл? у него датчики открытые - ловят шопопало и отражение линии и внешнее освещение.
*дятлу рекомендовал присмотреться к готовым телегам, но оно упёрлось рогом и решило механические недостатки бороть программным образом.
Как теперь понимаю, их конструкция по сути содержит дефект: использование TSOP-прибора в качестве принимающего элемента. Их неустойчивость настройки просто феноменальна. Кроме нас, их не использовал больше никто.
годами TSOP работают на объектах и ничего
вот только питание этому датчику требуется обяательно фильтровать, ничего сложного простая RC -цепочка, но без нее работает, т.е. не работает, именно так как описано
вот из опыта применения одного товарища
" нашел я все таки у себя в хламе, рекомендованную Вами TSOP1736.В процессе экспериментов выяснились такие моменты, чувствительность к качеству питания, обалденная чувствительность к полезному сигналу
(по этой причине пока вместо ИК-светодиода использую обычный красный).Из минусов, может проскакивать "ложный" импульс
.Вот что получается
https://www.youtube.com/watch?v=t0CaaWLdp90
Из за инерционности камеры кажется, что светодиод за TSOP просто горит, на самом деле он загорается как только проходит метка, когда останавливается патрон это заметно."