Датчики вперед выносить я уже пробовал в пятом варианте бота - стало не хватать силы движков (плечо ведь удлиннилось). Хоть и легкие датчики, да моторчики тоже не больно сильные - я же маленького бота пытаюсь сделать.
Увеличить скорость опроса датчиков тоже пробовал, более чем в 2 раза - на глаз разницы никакой.
Теперь про активное снижение мощности на поворотах. Приходила такая мысль. Но может я немного не так делал. Я делал возврат на линию более медленным (это когда бот на одном колесе кружит). По идее должно помочь, но на взгляд мало что изменилось, а время прохождения трассы увеличилось в процентном отношении прилично.
А вот последний метод интересен. Это не читерство - это управление с предсказанием, предикторы Смита и все такое. Вот только кроме этих общих фраз я про это ничего не знаю. Теорию конечно можно найти в инете, но меня то практическая реализация интересует. Порассуждаем.
На трассе есть засечка старта - это можно и нужно использовать для позиционирования бота, это его точка отсчета. Вот мы пускаем пробный круг, с известной наксимальной скоростью. Одновременно робот включил у себя таймер. С датчика приходит информация о положении линии, робот распределяет шимы по колесам, таймер считает. То есть мы знаем когда какой шим нужен. Шим с отклонением датчика связан формулой, так что писать в логи можно только отклонение датчика. Прикинем наши возможности. Мозг - тини25, Озу 128 байт. Негусто. Длина трека 300 см, выделим 100 байт - через каждые 3 см пишем в память. Хотя не знаю что лучше писать - отклонение датчика или сразу шим. По идее лучше сразу шим. Первая проблема - как узнать что робот проехал 3 см? После записи логов пора действовать. Скорость увеличили (точнее увеличили ограничитель максимального шима, причем скорость возросла не прямопропорционально увеличению шима). Узнать насколько она возросла - вторая проблема. Теперь через каждые 3 см пути (проблема номер один встретилась нам второй раз) надо включать заранее определенный шим (при этом регулятор должен работать, чтобы вести бота по линии и не работать чтобы дать боту на линию взобраться, а это уже изобретательская задача и проблема номер три). Вроде бы все. Если в моих рассуждениях нет ошибки, то достаточно решить три проблемы.
Первый раз первая проблема решается просто - делаем круг, узнаем общее время прохождения. Вторым кругом пишем логи через 1/100 общего времени. Вторая проблема не решается в точных цифрах, но если понадеяться на то, что регулятор нам поможет, то можно считать что скорось увеличится прямо пропорционально (в первом приближении, потом этим параметром можно будет поиграть). Первая проблема второй раз значит тоже решается в примерных числах - прикидываем, какое время прохождения трассы мы ожидаем, потом если что подкорректируем. А вот третья проблема - это проблема. Хотя и она решается в примерных решениях. Выдаем шим из лога, делаем задержку работе регулятора, потом регулятор вступит в работу. Ясно, что эту задержку придется тоже подбирать. Однако три параметра подбирать, причем они завязаны друг на друга. И еще есть подозрение такое: ну вот чисто теоретически смог я допустим все подобрать - летает как ракета по трассе 1-34. А что будет на другой трассе? Будут ли подобранные значения подходящими? Вроде бы должны, но грызет червяк сомнения.
Вот такие получились рассуждения. Может я опять по своей привычке перемудрил и все гораздо проще? Прошу высказываться
Добавлено спустя 3 часа 56 минут 24 секунды:До меня дошло, почему бот так себя на прямых отрезках ведет. Скорость тут не единственная причина. Когда он датчиком наезжает на угол - у него просто ширина линии растет. А поскольку он вычисляет центр масс линии, он и едет прямо, потому что центр масс смещается незначительно. В нормальном режиме линию видят 2 датчика, очень редко 3 датчика (между датчиками 10 мм). На таком вот хитром повороте сработают 4 датчика. Это и будет сигналом к возврату на линию. К счастью у меня ведется подсчет датчиков над линией - так я узнаю что я улетел с линии. Сегодня же вечером это проверю. Если все так - то работа практически окончена, можно будет приступать к съемкам фото и видео.