OSD на ATmega1281

Vlado

проект OSD+LRS повторил Сергей-ubd

а это чье?

msv

Это мое… 😃 В смысле что хоть один человек повторил мой подвиг и безстрашно летает на моих глюках. Правда пока с пиросенсорами от smalltim и без наземки, но у него все еще впереди… 😃
//—
Что только не придумаешь при дефиците интересных идей… Вот от безделья слепил по сути “горячее” (конфигуратором) переключение разрешения OSD:

Vlado

что хоть один человек повторил мой подвиг и безстрашно летает на моих

я тоже уже повторил в двух экземплярах ( как в кавказской пленнице, там правда было в трех ИМХО это перебор) и даже один пир есть. В силу множества проектов и работ, как бы двигалось не спешно, но сейчас подперло не на шутку, сетевой график.

переключение разрешения OSD:

софтверный зум? на сколько?

Vlado

Количество дропов за последние 2,56сек.

тоже впечетляет, особенно пикание ( дропы? ) как у счетчика гегера.Полезная весч ИМХО. Аккурат в те времена в воскресенье делал пробежку и угораздило же когда чернобыльская тучка проплывала над головой.

msv

Пикала ИМУ-шка- “Да не дергайте вы меня!”. Загрублю, до критических значений еще далеко, а раздражает. Дропов на таких расстояниях нет (маленькая циферка в самом верхнем правом углу). Но они, если что, тоже пикают…
Странно, никто не расспрашивает про ИМУ… На сей момент главный предмет моей гордости. 😃 А там есть о чем поговорить… Столько лет пужался страшным калманом, который не каждый STM переварит… А тут простой алгоритм (все-таки оригинальный код пришлось маленько модифицировать), мега8 и такой приличный результат… Кстати на выложенном видео полет на холмистой местности, и визуальный горизонт не совпадает с реальным. Поэтому может показаться, что иму “косит”, а на самом деле все наоборот… 😃

ubd

ЗЫ Еще новость сезона, проект OSD+LRS повторил Сергей-ubd. Вроде бы вполне успешно летает с ним на skywalker. Думает о наземке и ИМУ…

Да подтверждаю! Скай летает!
Серёга молодец, сделал классную весчь, которую не сложно повторить.
Вон у смалтима да же не так всё гладко, глюки страшные. Мне уже довелось пообщаться с его системой…

Странно, никто не расспрашивает про ИМУ… На сей момент главный предмет моей гордости.

Похоже интересуюсь только я. Там выше интересовались, так пропали что то, а зря…
Вообще Серёга ты молодец! У тебя единственный доведенный до ума проект, из тех что тут на форуме существуют. Я у тебя вообще не замечаю глюков. Когда на RTH летает, я настолько уверен что он не упадёт, что да же не смотрю на него, и могу по телефону говорить если кто то позвонит мне в этот момент.

то только не придумаешь при дефиците интересных идей… Вот от безделья слепил по сути “горячее” (конфигуратором)

Реально, когда пиксель шире, это лучше. По крупнее да же. Мне больше нравиться.

Панкратов_Сергей
ubd:

Похоже интересуюсь только я. Там выше интересовались, так пропали что то, а зря…
Вообще Серёга ты молодец!

Интересно и очень.
В каком формате ИМУ -ка выдает инфу автопилоту?
Не планируется открытый проект ? В плане возможности использования этого ИМУ в других, сторонних проектах ?

msv

Расскажу про ИМУ…
Период опроса гироскопов 10мс. Период опроса акселей и компаса 80мс. Основной цикл 20мс (синхронизирован с гироскопами). В нем используется усредненные данные за два чтения от гироскопов и скорректированные на центробежные ускорения и отфильтрованные экспоненциальным фильтром (постоянная времени фильтра 200мс) данные от акселей.
Вектор акселя перед использованием нормализуется (в отличии от оригинального кода).
Еще отличие- не используется интегральные компоненты PI-регулятора. Точнее они устанавливаются в значения корректирующие дрейф гироскопов на этапе автокалибровки после каждого включения. На этом этапе для оси Z гироскопа используется простейшие демпфирование вращения, для остальных осей обычным образом вычисленная ошибка между вектором Z DCM и вектором акселя. Все остальное время работы эти значения не меняются, а дрейф столь медленный, что мне было лениво его измерять. Есть шанс, что в полете от изменения температуры или еще чего дрейф увеличится, но реально это может привести только к незначительным статическим отклонениям и практически не заметны для расчета центробежных ускорений.
Время выполнения основного цикла всего 4мс, поэтому атмега на своих несчастных 16мгц большую часть времени скучает…

Панкратов_Сергей:

В каком формате ИМУ -ка выдает инфу автопилоту?

Мне слишком хотелось использовать освободившийся разъем на плате OSD под пиросенсоры, поэтому пришлось изобретать свой SPI-подобный протокол с софтовой реализацией. OSD в конце каждой видео-строки генерирует строб, по которому IMU передает/принимает бит данных. Т.о. с начала кадра за 80 строк ИМУ сбрасывает в OSD 10байт информации, а потом еще за 8 строк, считывает скорость GPS. Конечно изврат… но зато все стыковалось без необходимости переделывать готовую железку OSD.
Одновременно данные передаются по UART для отладки на ПК. Причем прекомпиляцией можно выбрать передачу или сырых данных от сенсоров или уже просчитанные углы Эйлера.
Конечно зная протокол, можно передавать данные в любом формате (занят только аппаратный I2S для платы с сенсорами). Думаю не сложно слепить ШИМ с простейшим интегратором и передавать в аналоге. Так сначала и задумывал… Но прикинув, что уже готовые значения перегонять аналоговые попугаи, а потом обратно… как бы не слишком грамотно… Да и линейную скорость (GPS) надо как-то все равно принимать…

Панкратов_Сергей:

Не планируется открытый проект ?

Очень долго работал в сфере программирования, но, честно, до конца не понимаю, что это такое… 😃 Исходники уже предлагал выложить, вроде никого не заинтересовало…

ADima
msv:

вроде никого не заинтересовало…

Заинтересовало но ещё не дорос до этого.😃

Vlado

долго работал в сфере программирования,

а почему работал? больше, все? или что?

Enigm

А где можно взять схемы,печатку и тд ? есть ли отдельный сайт по проэкту, или из топика выискивать ?

msv

Увы… но даже крайней схемы и печатки OSD не не сохранил в электронном виде. Банально по ошибке затер старой версией… Собственно отличались они фактически только схемами видеомодулятора. Тк. этот элемент системы мне до сих пор не нравится, то нет желания его отрисовывать и тем более выкладывать. Думаю найти схемы в ветке не сложно, если будут проблемы или вопросы- спрашивайте здесь или в личке.

ubd

У меня же есть последние, по которым у меня всё работает. Выложить?

Syberian

По IMU непонятно, куда делся компас? В DCM не используется. Где-то в главной плате yaw вычисляется стандартным TCC, или берется только ground course?

Enigm
ubd:

У меня же есть последние, по которым у меня всё работает. Выложить?

Если не трудно выложите комплект который вы собрали, хочу тоже повторить и поиспытать.

msv
Syberian:

По IMU непонятно, куда делся компас?

Пробовал в DCM компас применить (в исходниках закомментировано). Идея такая- вектор компаса и ось Z DCM определяют вертикальную плоскость, на которой лежит векторе курса. Т.о. векторное произведение оси Z DCM и нормализированного вектора компаса даст вектор в горизонтальной плоскости с направлением на восток (при правильном порядке умножения), те. должен соответсвовать оси Y DCM. Соответственно кросс-продукт этого полученного вектора с осью Y DCM даст значение, пропорциональное отклонению между этими векторами, по которой можно корректировать дрейф гироскопа вокруг оси Z (курс) и при желании вокруг оси Y. В принципе на столе это работало, но что-то в летных испытаниях не заладилось, пока не стал разбираться, просто убрал эту часть.
АП в MainBoard использует только GPS-курс. Поэтому летать в ветер со скоростью больше скорости самолета- не рекомендуется…

ubd:

У меня же есть последние, по которым у меня всё работает. Выложить?

Это плата и схема на которой летал в прошлом сезоне. Там немного завалена АЧХ и поэтому немного подъедается поднесущая цвета, но в принципе, конечно, схемы/печатки рабочие… Может есть смысл пока отделить цифровую часть и модулятор? а потом глядишь коллективным разумом родим бескомпромиссный модулятор свободный от всех недостатков в тч. не залазяющий спектром в цветовую поднесущую… Но куча платок, конечно не самый удобный вариант, поэтому решение на ваш выбор…

ubd

А у меня цвета не яркие это из за того что АЧХ завалена, или модуляция слабая?
Я у себя на видеопердатчике нашёл переменник, который за моделяцию отвечает. Нужно, пробовать настраивать. Но нужно с тобой в поле, что бы сравнить с твоими цветами.
Серёга, а ты не мог бы срисовать свои изменения, для архива. А то так и забудется.

Syberian
msv:

ока не стал разбираться, просто убрал эту часть.

да, закоменченная глючит.
Попробуйте ТСС (tilt compensated compass)

float TCC(float bx, float by, float bz, float phi, float theta)
{    float Xh, Yh, angle;
    Xh = bx * cosf(theta) + by * sinf(phi) * sinf(theta) + bz * cosf(phi) * sinf(theta);
    Yh = by * cosf(phi) - bz * sinf(phi);
    angle =atan2f(-Yh, Xh);// + declination);
    return angle;
}

фи - крен, тета - тангаж, все в радианах.
Bxyz - оси компаса

Применять вместо yaw из DCM .

У компаса все оси должны быть выровнены по диапазону и смещениям.

msv

Серега, уровень модуляции лучше настраивай осциллографом. Смотри прямо на приемнике с нагрузкой. По картинке это не просто сделать. Заваленная поднесущая цвета почти не влияет на насыщенность, только на слабом зашумленном сигнале будет раньше и больше заметен цветовой шум и переход в ч/б.
Олег, ну совсем то глючить вроде не должен… Все вроде работало, только при старте мог “задуматься”, когда расхождение углов по курсу было близкое к 180град. У меня дефайнами (на скорую руку, для теста) определены смещения нулей компаса, может в этом проблема?. Или направления осей не соответствуют моим сенсорам?..
Вообще был удивлен насколько компас дает маленькую проекцию на горизонтальную плоскость… Всю жисть, представляя школьный компас, считал что магнитное поле земли практически параллельно горизонту… 😃
В принципе компас больше интересен как еще один канал для коррекции дрифта гироскопов… Но пока решил не заморачиваться…

Syberian
msv:

У меня дефайнами (на скорую руку, для теста) определены смещения нулей компаса

Нет, я чистый алгоритм в Х вставил попробовать 😃 Там все датчики уже закалиброваны и выверены. С осями надо было разбираться, по акселю пришлось А[0] инвертировать и первую омегу в коррекции развернуть, иначе компенсация по ЖПС работает с обратным знаком. С компасом та же заморочка, поэтому не стал париться и пропустил через ТСС “снаружи”
У вас как-то совсем просто компенсация сделана, только по Y акселя. В маневрах с креном (когда omega[0] появляется) и при линейных ускорениях компенсации нет.