рейтинг блогов

Не знаешь что делать - рефактори!

топ 100 блогов balmerdx03.09.2022 Как уже писал - вспомнил про свою машинку на Kendryte K210. Посмотрел на код на Python, понял что многое позабывал, а из-за отсутствия типизации понять что к чему и почему немного сложнее, чем на С++.



Решил некоторую часть кода переписать на С++. У плюсов есть разные плюшки по сравнению с Питоном. Типизация. Удобные операции с векторами (вектора, которые двухмерные или трёхмерные). numpy с грехом пополам заменилось на Eigen. Графики пробовал разными вариантами рисовать. gnuplot даже более-менее удобен, но ему чегото не хватает. В конце концов плюнул - и стал использовать всё тот-же mathplotlib, что и в python коде.

Пока менял numpy на Eigen - увидел, что он даже на cuda компилируется. Смысла правда в этом немного, в cuda экосистеме есть свои примитивы.

Вспомнил, что такое матрица Хаусхолдера, QR факторизация и как делать среднеквадратичные приближения используя решение системы линейных уравнений. Не зря кстати вспомнил. Смог более тонко настроить граничные условия сплайна. На границе команд - явно указал ему, что ускорение может меняться скачком, а в других местах ускорение плавно меняется.

Кстати тут есть шутка юмора. Вот есть сплайн y(t) = a0 + a1*t + a2*t*t + a3*t*t*t. Казалось бы - четыре независимых параметра. Но! Мы накладываем на соединении двух кусочков сплайнов ограничения на совпадение положения, скорости и ускорения. Остаётся всего один независимый параметр. И как оказалось - так и надо. Если брать сплайн более высокого порядка, то он уже начинает не только основную функцию приближать, но и выгибаться, чтобы точнее приблизить шум измерения.

Оптические энкодеры вразы лучше, чем энкодеры на датчиках холла. Оптические энкодеры не только дают в 100 раз больше тиков, но и более равномерный результат выдают.

Запустил ещё раз машинку с новыми датчиками и призадумался. Вот вам пачка графиков. На каждом графике много линий разного отттенка, так как машинку по 10 раз запускал с одними и теми-же параметрами.

Первые три графика - движение вперёд. На колёса подаётся одинаковая мощность на одинаковое время.
Не знаешь что делать - рефактори!
Не знаешь что делать - рефактори!
Не знаешь что делать - рефактори!
График положения естественно завсегда кажется очень гладким. Но и на нём видно, что в разных экспериментах колёса проезжают разное расстояние. И правое (синий цвет) колесо проезжает меньше, чем левое (оранжевый цвет). Графики скорости правого и левого колеса сильно отличаются. Ну и видно, что повторяемость результатов - плюс/минус лапоть.

Следующая тройка графиков - вращение машинки:
Не знаешь что делать - рефактори!
Не знаешь что делать - рефактори!
Не знаешь что делать - рефактори!

Тут тоже видно, что левое (оранжевый график) и правое (синий график) колёса имеют достаточно разный паттерн поведения. Это не ошибка измерения, перепроверил несколько раз.

Причем правое колесо не хочет двигаться с одинаковой скоростью даже после того, как разогналось до максимума и ускорение близко к нулю. Может быть это из-за того, что на правом колесе есть слабая, но видимая при вращении "восьмёрка". Может какая другая причина. Не знаю. Но график скорости практически избавлен от шума и это радует.

Теперь надо таки собраться силами, и настроить ПИД регулятор, который будет заставлять колёса двигаться каждый раз примерно одинаково. Уже пробовал - даже простейший регулятор, который учитывает только интегральную составляющую, даже такой регулятор даёт вполне удовлетворительный результат. Тут самое сложное - выцепить из этих графиков кривую с минимумом шумов и биений.

Оставить комментарий

Архив записей в блогах:
Что за бл*ть блокада Ленинграда происходит сейчас в славном добром украинском городке Славянск? Прошу прощения у особо чувствительных особ, которым неприятно читать мои "французские" высказывания, но у меня не хватает исконно русских слов /да, мне можно подарить словарь/. Судари киевские, ...
Всем доброго времени суток. Вот и старт! БОЕВЫЕ ХОМЯКИ Ната ( thelemith ) Всем привет) Всё-таки в жж куда роднее, чем где-то ещё) А дома и стены помогают) Бежать буду с двумя дизайнами Dimensions - Oriental Orchids (в основном) и Inviting Holiday Wreath (в оставшееся время). ...
День Победы - это время, когда в целом ряде музеев, особенно технических, проводятся различные мероприятия. В этом году парадов с исторической техникой меньше, но количество скомпенсировали качеством. Даже в пределах Москвы и Московской области мероприятий было столько, что приходилось ...
...
Часть моих друзей и знакомых с начала 2000-х с презрением относились к интернету. "Интернет - это помойка, там сидят только дебилы, зачем он тебе нужен? Что ты там вообще делаешь?" Ну, помимо очевидных ответов ("интернет - это весь мир, и если вы не можете найти там ничего, кроме ...