Автопилот Arduplane - открытое ПО
АПМ пишет что сработал фаилсейв (энкодер прошит) но на точку старта возвращаться не собирается , и на карте точку дом нарисовал в африке.
Да это еще повезло, что он домой не полетел, в африке его было-бы сложно искать, большая вероятность того, что туземцы сожгут на ритуальном огне (жертвоприношение, знаете-ли)
А если серьезно, то куда ты летел, если он спутников не наловил и дом не определил. Пока не научишь его ловить спутники, об автоматических режимах и думать нечего.
Осенью поковырялся в прошивке MinimOSD. Хотел разобраться, почему по экрану пробегают “глючки”. Оказалось все просто - аффтары на утрудили себя синхронизацией обновления экрана с VSync. Или просто не осилили.
Прилагается прошивка на основе самолетной r805. Из внешних изменений - отсутствие “глючков”, индикация режима autotune, изменено отображение предупреждений в режиме “чистого экрана”. Еще они почему-то сделали загрузку шрифта отдельной прошивкой. Может, что-то у них там не влезало… В моей версии загрузка шрифта есть.
Исходники: github.com/KIrill-ka/MinimOSD-Extra
Еще они почему-то сделали загрузку шрифта отдельной прошивкой.
неправда, я из пргошивки какраз эту возможность выпилил нафиг … изза этого глючно работало… случайно срабатывал режим прошивки шрифтов))
неправда
Спасибо за наводку. В какой ситуации оно входило в режим обновления шрифта? Я на подобное не натыкался. Только я не понял, в чем моя неправда.
Спасибо за наводку. В какой ситуации оно входило в режим обновления шрифта? Я на подобное не натыкался. Только я не понял, в чем моя неправда.
переход в режим прошивки шрифтов происходил при получени трех символов перевода строки если такое случалось первые двадцать секундпосле включения или както так, вот у меня железка какимто хитрым способом эти символы получала и писала на экране апдейтинг чарсет… пришлось закоментить участок кода который отвечал за перепрошивку шрифтов. а неправда в том что загрузка шрифтов там есть… по крайней мере в нетестовых ревизиях. может вы какуюто промежуточную взяли где зачемто был код выпилен или деактивирован как в моем случае.
Ну и синхронизация с всинком в принципе полезна, но не так уж и критична
Осенью поковырялся в прошивке MinimOSD. Хотел разобраться, почему по экрану пробегают “глючки”. Оказалось все просто - аффтары на утрудили себя синхронизацией обновления экрана с VSync. Или просто не осилили.
Кирилл, спасибо за проделанную работу!
не будет ли слишком большой наглостью с моей стороны попросить вкратце рассказать показать суть сделанных изменений?
по коду в каких то функциях остался вывод данных независимо от vsync
и есть кусочек checkvsync
а неправда в том что загрузка шрифтов там есть… по крайней мере в нетестовых ревизиях
Вот, смотрите, что я имел в виду (ищите там uploadFont):
github.com/diydrones/…/MAVLink.ino
Вообще, конечно, там бардак с версиями и сложно понять, какая именно “правильная”.
Ну и синхронизация с всинком в принципе полезна, но не так уж и критична
Это что, вы хотите убедить всех, что вам моя прошивка не нужна? А зачем?
вот у меня железка какимто хитрым способом эти символы получала
Вполне вероятно, что на старте какой-то мусор может в порт сыпаться… Или какие-то особенности с последовательностью и временем старта компонентов системы. В полете это включиться не должно, т.к. там есть проверка, что если мавлинк OSD увидело, шрифты обновлять не будет пытаться. Я бы на вашем месте докопался - подключил логический анализатор или осциллограф и посмотрел, что там делается.
Пролистал немало страниц, но так и не нашел расположение оборудования (компас, контроллер, телеметрия т.д.) на самолете типа бикслера, скайвокер. Как располагается компас, телеметрия, чтоб не было влияния друг на друга?
не будет ли слишком большой наглостью с моей стороны попросить вкратце рассказать показать суть сделанных изменений
Да с удовольствием 😃
Основная штука - это запись отдельных строк в буфер в памяти. Обновление экрана делается целиком.
И решение попутных проблем - освободить памяти для буфера, ускорить работу с MAX’ом по SPI.
Вариант с буферизацией экрана я уже видел для таких OSD, только не для ardupilot/mavlink.
Программное отслеживание vsync - это сам придумал.
Еще одна вещь меня несколько удивила. В MAX7456 есть режим последовательной записи строки (auto-increment для адреса). Почему-то во всех реализациях подобных OSD, что я видел, используется некий, не описанный в документации, способ передачи данных. Который при этом в два раза медленнее.
Если интересуют более мелкие и кровавые подробности, наверное, лучше в ЛС.
Пролистал немало страниц, но так и не нашел расположение оборудования (компас, контроллер, телеметрия т.д.)
Давно это было 😃, сейчас даже автор не смог бы найти
на самолете типа бикслера, скайвокер. Как располагается компас, телеметрия, чтоб не было влияния друг на друга?
Там вроде только компас на крыло выносили, остальное плотным бутербродом упаковано было 😃
Но по уму надо его подальше от силовых проводов, остальное срастется 😃
А как (где) ставится телеметрия APM и видеопередатчик камеры? На какое расстояние они разносятся?
Если интересуют более мелкие и кровавые подробности, наверное, лучше в ЛС.
тема достойна написания статьи или как минимум отдельного обсуждения!
может в блоги рцдизайн?
А как (где) ставится телеметрия APM и видеопередатчик камеры? На какое расстояние они разносятся?
Я не замечал влияния одного на другое, телеметрию прилепил на “велкро” под АРМ, но моя не греется, если сильно греется, то лучше наружу вынести (ИМХО).
С миним ОСД есть ньюансы с питанием, камера и передатчик на 5В, запитать с одного источника не получилось, не рабртала камера и глючило ОСД, запитал передатчик от регуля, а камеру и ОСД от АРМ.
В полете это включиться не должно, т.к. там есть проверка, что если мавлинк OSD увидело, шрифты обновлять не будет пытаться. Я бы на вашем месте докопался - подключил логический анализатор или осциллограф и посмотрел, что там делается.
Лениво както))
а вот код за аплоад шрифтов отвечающий:
if (mavlink_active == 0 && millis() < 20000 && millis() > 5000) {
if (c == ‘\n’ || c == ‘\r’) {
crlf_count++;
} else {
crlf_count = 0;
}
// if (crlf_count == 3) {
// uploadFont();
// }
Вот эти три последние строчки я какраз и коментил чтоб не глючило, с ними 90%вероятность при включении словить фонт аплоад.
ну и осталась небольшая вероятность несинхрониизаци мавлинка на включени… но уже не так критично и почему происходит понять не получилось, скорее всего стейтмашина протокола глючит и иногда не может синкануться на начало пакета по какойто причине.
теоретически можно в утилите сделать параметр и передавать его в осд
для блокировки возможности заливки шрифта для тех кому мешает
Лениво както))
Ребята, по моему Вы не тем занимаетесь (не напрягайтесь) 😃
Видео от Юлиана. Подключение минимОСД к назэ32. Там авиагоризонт графический и все эволюции индицируются плавно.
Вопрос теоретический: для АРМ почему так не сделают? Я по началу думал, что это невозможно из-за использования такого МАХа.
В MAX7456 есть режим последовательной записи строки (auto-increment для адреса). Почему-то во всех реализациях подобных OSD
не берусь утверждать но буфер экрана около 450байт, у 328меги оперативы всего 2килобайта оперативы. правильно былобы програмно сформировать буфер в 450 байт, а потом по прерыванию от всинк залить его весь в максимку. но оперативы всего 2 килобайта… потому, не утверждаю, но скорее всего формируются отдельные куски экрана по каждому параметру и заливаются по координатам, что дает оверхед…плюс у максимки spi может работать на скоростях до 20 мегабит… но чем выше скорость тем выше вероятность словить глюк при передаче от видеопередатчика или ещё какой наводки…
это так, мысли в слух.
Там авиагоризонт графический и все эволюции индицируются плавно.
Вопрос теоретический: для АРМ почему так не сделают? Я по началу думал, что это невозможно из-за использования такого МАХа.
не может быть на макс графического горизонта, только псевдографикой, а количество символов ограничено 256, потому плавно не получится.
не может быть на макс графического горизонта, только псевдографикой,
Опс-с. Обознался 😃
11:00 начинается демонстрация. Действительно символами, но так плавно. Давно это видел, тогда показалось, что графика.
думаю если поменять шрифт - вместо черточек сделать жирные точки или минимально короткие черточки то символьный горизонт не будет так плох
правильно былобы програмно сформировать буфер в 450 байт, а потом по прерыванию от всинк залить его весь в максимку
вот вот!
по прерыванию а не в цикле и программно запршивать vsync!
дело в том что у макса есть аппаратный выход vsync
и более того он уже соединен с 32 ногой атмеги
а это pd2 и прерывание int0 !
единственное может надо запрещать прерывания или отключать апдейты в моменты инициализации, обновления шрифтов итд.
и наверное буфер указатель буфера объявить волотильным ибо он будет опустошаться из прерывания - но тут я не силен
дело в том что у макса есть аппаратный выход vsync и более того он уже соединен с 32 ногой атмеги
Алексей, вы какую-то конкретную плату имеете в виду?
ЗЫ: посмотрел, вроде по схеме 3dr minim osd v1.1 есть vsync к atmega, но, на своей китайской плате вроде бы прозванивал - соединения нет.
Ну вот, оказалось, что ошибался. Есть на моих платах VSync к atmega. Наверное, в следующей версии сделаю с прерыванием.
единственное может надо запрещать прерывания или отключать апдейты в моменты инициализации
Да нет, принципиального выигрыша в варианте с прерыванием не будет. Единственное, код упростится и будет молчать SPI между обновлениями экрана.