А де наші АйТі, коли вони так потрібні?

псб, понял.
стоит брать видосы с фпв-камер. Оно ближе к реальности будет.
Це і є з FPV, тільки з іншого дрона.
З FPV дрона переслідувача - буде заважати работа оператора і службові дані на моніторі (які підмішує дрон, там маркер центру, який в мене постійно проходив фільтр як питома людина і тракер починав відстежувати маркер, бо першим його побачив.
 
не хочу обидеть глубокоуважаемого ресета,
но мне интересней создать решение для фпв-дрона.
Увидел цель, локализовал цель, и забыл. Тут да - еще САУ от трекера нужно синтезировать, но ведь только такое решение и устроит.
да, знаю - шум + слабый аналоговый сигнал... Но разве мы тут пальцем деланные?
 
я думал что под него решение продумываем?
смысл делать трекер для наблюдающего дрона?
Так ти продумуєш рішення для САУ в умовах відстеження таргет парам.
А підставити хочеш умови - в яких вже є САУ (у вигляді оператора), який робить всю роботу за тебе. Вже. Прямо втой самий час.

Тут або потрібно напедалити модель дрона і для дебага керувати моделлю, або брати чисте відео, де ціль не переслідується.

Взагалі - для початкового етапу то похуй, зараз питання на стадії "взагалі щось розпізнати". Тут канає будь-яке відео. Бажано - багато різних відео в різних умовах. Чьорний сілует на фоні снігу - то тепличні умови.
 
не хочу обидеть глубокоуважаемого ресета,
но мне интересней создать решение для фпв-дрона.
Увидел цель, локализовал цель, и забыл. Тут да - еще САУ от трекера нужно синтезировать, но ведь только такое решение и устроит.
да, знаю - шум + слабый аналоговый сигнал... Но разве мы тут пальцем деланные?
Це не FPV - це баражуючий боєприпас. "відпустив і забув".
Ти хочеш розробити дешевий аналог ланцета.FPV - це фьост пьосон віжн. Саме дрон, який виводить на ціль оператор, а не баражуючий автономний мисливець.
Мисливець то наступний етап, ти переплигаєш з задачі на задачу, починаючи вирішувати більш складнішу.
Це є помилка планування. Так не роблять проекти.
 
в принципе я знаю как сделать то, о чем говорю.
единственное, что я не знаю - получится ли реализовать это на устройстве?
хз что там у вас за малина, или jetson-nano?
Особенно интересно, если есть люди, котрые хотелибы сами тоже такое сделать.
Т.е. мне не пришлось бы реализовывать 100% R&D.

crisis вроде отгрыз кусок фильтра калмана. Чувствую его радость. Даже боюсь представить его восторг, когда он разберётся в Extended Kalmann Filter. - но это уже факультатив.
если он даже начнут собирать yolo + kalmann под устройство - мне чертовски будет интересно узнать о его успехах, и помочь - если что там спотконётся.
 
в принципе я знаю как сделать то, о чем говорю.
единственное, что я не знаю - получится ли реализовать это на устройстве?
хз что там у вас за малина, или jetson-nano?
Я б рекомендував використовувати різні підходи для різних галузей застосування.
Для трека з FPV в якості "останьої милі" (в даному випадку - останіх метрів) - достатньо менш потужної платформи, бо частину роботи виконує оператор, і таргет не є абстрактною моделлю, а є еонкретним об'єктом, який для САУ - є вхідним параметром, бо його вказує оператор.
Для автономного пошуку без оператора - САУ може бути та сама, але об'єкт шукається самою САУ.
Відміни певні будуть саме в пошуку таргет обжект.
Особенно интересно, если есть люди, котрые хотелибы сами тоже такое сделать.
Т.е. мне не пришлось бы реализовывать 100% R&D.
Їх повний фейсбук
1708252977341.png
 
у меня пока один вопрос - всё описанное уже опробовано на устростве?
yolo нуждается в GPU. А этого, насколько я понял у вас нет.
Если интересно, рекомендую линейку jetson nano. Не реклама. Просто только про это слышал.
Туда же понадобится оптимизатор нейронок. гугли - TensorRT. Работает быстрее, занимает меньше памяти.
Про нану читал, более того, нашел таблицу производительности разных девайсов при работа с cv2+нейросети. На руках пока только 4 малина, с ней только голый cv2.

в принципе я знаю как сделать то, о чем говорю.
единственное, что я не знаю - получится ли реализовать это на устройстве?
хз что там у вас за малина, или jetson-nano?
Особенно интересно, если есть люди, котрые хотелибы сами тоже такое сделать.
Т.е. мне не пришлось бы реализовывать 100% R&D.

crisis вроде отгрыз кусок фильтра калмана. Чувствую его радость. Даже боюсь представить его восторг, когда он разберётся в Extended Kalmann Filter. - но это уже факультатив.
если он даже начнут собирать yolo + kalmann под устройство - мне чертовски будет интересно узнать о его успехах, и помочь - если что там спотконётся.
Это не я его, а он меня отгрыз. Алгоритм применил, ничего сложного там нет - идет из коробки cv2.KalmanFilter(4, 2)
Он работает. На тестовых видео я теперь получаю момент, когда поведение условной цели начинает отличаться от прогнозируемого. Однако дальше уперся.
Предположим есть видео где цель равномерно движется по линейной траектории, но периодически закрывается сторонними объектами (мое первое видео, где пидр сьебывает от дрона, и периодически оказывается закрыт уличными столбами). Видео Ресета тоже подходит - движение цели неравномерно, но тоже закрывается условными кустами.
Применяем любой алгоритм трекинга cv2 и получаем такой результат: в момент закрытия цели сторонним объектом, с высокой степенью вероятности трекинг перенесется на объект, и потеряет цель. Процент потери зависит от алгоритма, но реально большой.
Применяем калмана, и получаем триггер события, когда условная цель сховалась за елкой. А дальше затык. К этому моменту контуры цели уже частично слились с сторонним обьектом. Мы можем поискать цель в других местах, но мы уже тупо не знаем, как она выглядит. Трекать нечего.
В голову лезут только костыли, тип сохранять контуры цели через определенный интервал, и искать потом используя их, но это дичь лютая. Пока мысли кончились.
В голове зреет мысль, шо я занимаюсь херней, и нужно брать нану, и лепить трекер через какой-нибудь yolo deepsort.
 
Применяем калмана, и получаем триггер события, когда условная цель сховалась за елкой. А дальше затык. К этому моменту контуры цели уже частично слились с сторонним обьектом. Мы можем поискать цель в других местах, но мы уже тупо не знаем, как она выглядит. Трекать нечего.
В голову лезут только костыли, тип сохранять контуры цели через определенный интервал, и искать потом используя их, но это дичь лютая. Пока мысли кончились.
В голове зреет мысль, шо я занимаюсь херней, и нужно брать нану, и лепить трекер через какой-нибудь yolo deepsort.
Для аналізу затримки відображення на композит. Можеш розібрати по кадрам і подивитись відставання. Правий монік - з композитного виходу маліни, що зліва знизу.

Для маскінгу (це коли об'єкт прикритий) є декілька підходів. Чистими лібами відмахатись - очікувано не вдастся.
Треба сочіняти бізнеслогіку поведінки дрона.
Наприклад, підхід 1: ми заводимо віртуальну систему координат, і якщо об'єкт зник - деякий час намагаємось літати по колу навкруги точки, де він зник і чекати побачити його з іншого боку.
Підхід 2: повертаємось до політного завдяння - набор висоти і новий пошук
Підхід 3: деякий час збурігаємо траекторію політу, через таймер переходимо до п.2 - набір висоти і новий пошук.

Для усих трьох - при втраті цілі потрібно припинити трекінг і констатувати втрату об`єкту.
На тому етапі, на якому ця робота зараз - просто достатньо досягти, щоб трекер не хапав кущеря при "злитті". Треба трешолд - коли ціль вже не ціль.
Зараз ця поєбота взагалі втрачає зв'язок і пиздує до зіткнення прямо. З чим зіткнення - з чим повезе.

P.S. і спробуй лассо. Ну не тієї це потужності платворми, щоб розгортати там якийсь продвинутий пошук по моделям.
Коли об'єкт знайдено - треба створити його унікальний відбиток, на всих тих відео людина спокійно знаходить куди подівся об'єкт. Це тому, що ми використовуємо більше даних - середній колір об'єкта, його контури, штампи інших об'єктів (наприклад, стовп - дуже сильно відрізняється від людини, ні хто не сплутає людину і стовп по тверезому).
Треба дивитись як представлений об'єкт в трекері, які в нього є властивості і як ми можемо їх використовувати.
 
Останнє редагування:
Для аналізу затримки відображення на композит. Можеш розібрати по кадрам і подивитись відставання. Правий монік - з композитного виходу маліни, що зліва знизу.
А отставание таки есть... На глаз около двух десяток. Это по другому делается - запускаешь таймер, и фотаешь цифры, напрямую с с таймера, и с экрана, который выводит изоражение с камеры (камера тоже смотрит на таймер). Увидишь разницу с точностью до сотых. Но не заморачивайся - мне тоже камера пришла, буду ковырять.
Хер знает, критичное отставание или нет. Имхо не критично.

Для маскінгу (це коли об'єкт прикритий) є декілька підходів. Чистими лібами відмахатись - очікувано не вдастся.
Треба сочіняти бізнеслогіку поведінки дрона.
Наприклад, підхід 1: ми заводимо віртуальну систему координат, і якщо об'єкт зник - деякий час намагаємось літати по колу навкруги точки, де він зник і чекати побачити його з іншого боку.
Підхід 2: повертаємось до політного завдяння - набор висоти і новий пошук
Підхід 3: деякий час збурігаємо траекторію політу, через таймер переходимо до п.2 - набір висоти і новий пошук.
Для усих трьох - при втраті цілі потрібно припинити трекінг і констатувати втрату об`єкту.
Это как раз понятно. Нужно писать норм обертку для бизнес логики, шоб умела в разные сценарии (+изобретать формат хранения сценария), поддерживала модульность, итд. Это как раз не должно быть проблемой, я трохи в ООП умею, и с какой стороны тыкать палкой представляю. До войны херней маялся - слепил кораблик для рыбалки на ардуино ) Сценарий автопилота (всякие полярные+декартовы координаты ЖПС, телеметрия и прочая лабуда). Писать шото хоть немного объектно-ориентированное на ардуино (по факту си), когда ты этот си в глаза не видел, бррр. Как вспомню, так вздрогну.
Я может не шарю, но здесь такая же херня, только левел ап. (к Х+Y добавился Z). Ну и писать можно на чем нибудь нормальном, что хоть слова полиморфизм и инкапсуляция понимает.
Фактически, учитывая твое видео, получается шо
1. Берем готовый камик за 500 баксов (любой).
2. Отрезаем от него приемник. Там будет скорее всего crossfire или шото такое.
3. Припаиваем приемник в юарт малины через какую нибудь
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
ебалу.
4. Через такую же ебалу припаиваем в другой юарт sbus полетника.
5. Выкидаем родную фпв камеру, и ставим csi (с твоего видоса). Камеру прицепляем к малине. С композитного порта малины передаем PAL на полетник. Соединение полетника с видео передатчиком не меняется.

Дальше на малине пробрасываем первый юарт на второй (sbus с приемника пойдет через малину в полетник), и шарим видео с камеры на композитный выход.
Все блядь. Лететь уже можно. А остальное работа для программиста.
Цена всей этой суеты баксов триста будет. И веса грамм 50 (если с малины феном все лишние порты сдуть, или подобрать контроллер получше)
 
А отставание таки есть... На глаз около двух десяток. Это по другому делается - запускаешь таймер, и фотаешь цифры, напрямую с с таймера, и с экрана, который выводит изоражение с камеры (камера тоже смотрит на таймер). Увидишь разницу с точностью до сотых. Но не заморачивайся - мне тоже камера пришла, буду ковырять.
Хер знает, критичное отставание или нет. Имхо не критично.
При швидкості машини 40км/ч(хай тікає активно по грунтовці, швидше він не поїде, а як поїде - дрон не дожене, він більше 90 не літає, окрім гоночних) - 0,2с це 2.2м. Так, машина не поїде з нульовою затримкою одразу в протилежний бік, але, іноді і 0,5м достатньо, щоб не влучити. Тому - або предиктор на упередження, або/та/та+або - сценарій. Щоб при промаху дрон не втрачався, а щось далі робив.
Это как раз понятно. Нужно писать норм обертку для бизнес логики, шоб умела в разные сценарии (+изобретать формат хранения сценария), поддерживала модульность, итд. Это как раз не должно быть проблемой, я трохи в ООП умею, и с какой стороны тыкать палкой представляю. До войны херней маялся - слепил кораблик для рыбалки на ардуино ) Сценарий автопилота (всякие полярные+декартовы координаты ЖПС, телеметрия и прочая лабуда). Писать шото хоть немного объектно-ориентированное на ардуино (по факту си), когда ты этот си в глаза не видел, бррр. Как вспомню, так вздрогну.
В сі - я вмію. Об'єктно орієнтоване теж трохи вмію. Тільки не називай пітона ООП :D Там з будь-якого класу я візьму і визову якесь __name() і ні що мені не завадить. Інкапсуляція... бггг Там тільки спадкування працює, решта - фейк.
Я может не шарю, но здесь такая же херня, только левел ап. (к Х+Y добавился Z). Ну и писать можно на чем нибудь нормальном, что хоть слова полиморфизм и инкапсуляция понимает.
Фактически, учитывая твое видео, получается шо
1. Берем готовый камик за 500 баксов (любой).
Угу. Тільки там немає місця під одноплатник. Я вже казав - "будь-який" - втратить ТТХ, бо в нього з'явиться зайве навантаження.
2. Отрезаем от него приемник. Там будет скорее всего crossfire или шото такое.
Ні, приймач доведеться залишити (якщо немає бажання писати і робити свій протокол. (На LoRa, чи що?) Написати треба декодер і кодер протоколу, щоб зберігти дженерік пульт.
3. Припаиваем приемник в юарт малины через какую нибудь
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
ебалу.
Це якщо він UART видає. Він може PWM видавати на декілька каналів. Фантазія безмежна.
4. Через такую же ебалу припаиваем в другой юарт sbus полетника.
Так, маліна буде бріджом з можливістю приймати на себе керування при втраті зв'язку, або по команді.
5. Выкидаем родную фпв камеру, и ставим csi (с твоего видоса). Камеру прицепляем к малине. С композитного порта малины передаем PAL на полетник. Соединение полетника с видео передатчиком не меняется.
Єдине що - по перше треба X, або розкапати як без іксів направити стрім на DAC. Так глибоко в маліну я не ліз. Але, якщо ікси запущені - він розглядає це як другий дісплей з усима витікаючими. Не знаю, якщо я вийму його CSI дісплей, який зараз на шлейфі в плату - він затупить, чи проста зрозуміє, що дісплей один і зробить його головним.
Є і плюс - можеш домішувати будь-яку службову в сигнал, бо то твій дисплей і малюй що хочеш.
Дальше на малине пробрасываем первый юарт на второй (sbus с приемника пойдет через малину в полетник), и шарим видео с камеры на композитный выход.
Все блядь. Лететь уже можно. А остальное работа для программиста.
Цена всей этой суеты баксов триста будет. И веса грамм 50 (если с малины феном все лишние порты сдуть, или подобрать контроллер получше)
39,46гр - Pi4 modelB 4GB. Пішов зважив. Якщо здувати USB - ще менше. Але, окрім ваги воно ще й зохаває по електриці. до 2А по 5В сама малина (в середньому 0.8А, але, це залежить від коду, як навантажиш - зросте споживання) + 0,25А - тільки камера з підсвіткою. Можна відкрутити підсвітку ІЧ, буде менше, але про сутінки забудеш - камери для малини це не для FPV, якщо FPV в мене тупо бачить все в 2 ночі, бо на вулиці фонарі, то з малиною так не вийде.
Те моє відео - там на шторі видно як єбашить ІЧ підсвітка. Якщо відкручу - там буде ніхуя не розібрати. І це ще непогана камера, вона може таке, але, суб'єктивно - від ФПВшних гірша рази в три. І асортименту не особо є, на відміну від FPV, який масовий і там можеш і нічну знайти при бажанні, і не коштує усі гроші світу.
 
Так, маліна буде бріджом з можливістю приймати на себе керування при втраті зв'язку, або по команді.
Ключевое. Именно так я вижу решение. Можно конечно вообще выкинуть полетник, натянуть на малину какую нибудь кастомную прошивку, подрубить всю перефирию напрямую. Но чота мне эта идея не зашла.
И дельное замечание о том, как расшарить камеру напрямую в композитный выход, минуя Х. Есть тут спецы, кто знает? А то я еще недавно гуглил что такое "sudo" :D А что такое Х до сих пор не знаю. Подозреваю что графическая оболочка рабочего стола.
Меня сегодня Калман крепко за жопу покусал - со студенческих времен так много гуглить не приходилось. Наверное переключусь на железки - есть все компоненты для дрона, попробую реализовать схему из моего предыдущего поста.
 
Про нану читал, более того, нашел таблицу производительности разных девайсов при работа с cv2+нейросети. На руках пока только 4 малина, с ней только голый cv2.

В голову лезут только костыли, тип сохранять контуры цели через определенный интервал, и искать потом используя их, но это дичь лютая. Пока мысли кончились.
В голове зреет мысль, шо я занимаюсь херней, и нужно брать нану, и лепить трекер через какой-нибудь yolo deepsort.
Треба вигадувати якусь метрику для захопленої вперше цілі. Наприклад, середнє значення кольору пікселів, щоб не захоплювало щось зовсім ліве.

В сі - я вмію. Об'єктно орієнтоване теж трохи вмію. Тільки не називай пітона ООП :D Там з будь-якого класу я візьму і визову якесь __name() і ні що мені не завадить. Інкапсуляція... бггг Там тільки спадкування працює, решта - фейк.
В Пітоні як раз одна з найкращих сучасних реалізацій ООП. Вона як іграшка-конструктор, легка і ненав'язлива, при необхідності дуже легко влізти всередину, подивитись як працює і поправити, якщо щось не подобається.
Краще, на мою думку, тільки в Го, де люди нарешті перестали себе дурити і викинули ООП, повернувшись до структур даних.
 
Треба вигадувати якусь метрику для захопленої вперше цілі. Наприклад, середнє значення кольору пікселів, щоб не захоплювало щось зовсім ліве.


В Пітоні як раз одна з найкращих сучасних реалізацій ООП. Вона як іграшка-конструктор, легка і ненав'язлива, при необхідності дуже легко влізти всередину, подивитись як працює і поправити, якщо щось не подобається.
Краще, на мою думку, тільки в Го, де люди нарешті перестали себе дурити і викинули ООП, повернувшись до структур даних.
Не сильно ли медленная змия будет для подобных задач, все таки язык высокого уровня
 
Не сильно ли медленная змия будет для подобных задач, все таки язык высокого уровня
Єдине, для чого там потрібен Пітон - смикати важкі бібліотечні функції opencv, який вже написаний нормальною мовою. Якщо не наробити хєрні в програмі, власне пітонівський код буде по часу виконання непомітний.
Власне, це мало чим відрізняється від кейсу застосування Матлаба.
 
Итак, продолжаем заниматься никому не нужной ерундой. Приехали железки, и можно потыкать паяльником.
Идем согласно ранее озвученному плану:
1. Берем готовый камик за 500 баксов (любой).
2. Отрезаем от него приемник. Там будет скорее всего crossfire или шото такое.
3. Припаиваем приемник в юарт малины через какую нибудь
Тільки зареєстровані користувачі бачать весь контент у цьому розділі
ебалу.
4. Через такую же ебалу припаиваем в другой юарт sbus полетника.
5. Выкидаем родную фпв камеру, и ставим csi (с твоего видоса). Камеру прицепляем к малине. С композитного порта малины передаем PAL на полетник. Соединение полетника с видео передатчиком не меняется.
Готового дрона нема, но есть железки. Стандартный стек F405 (не совсем стандартный, но здесь не об этом) + дальнобойка crossfire. Припаиваем приемник к стеку, биндим, прошиваем полетник и настраиваем приемник в INAV.
Кстати, по ходу пьесы вырисовывается шо INAV похоже гадость, и нужно уходить в бетафлай. Но об этом позже.
Проверяем - все работает, мы видим каналы приемник в INAV.
Дальше согласно ранее продуманному плану, отпаиваем приемник от полетника, и припаиваем его к uart малины. Дальше нужно полетник припаять ко второму uart малины, но здесь нас ждет первый сурпрыз - на малине из коробки только 1 uart. Пичаль :(
Но немного гуглинга и правки /boot/config.txt и у нас нарисовывается новый uart. То, что нужно.
Ну и чтобы 2 раза не ходить, припаиваем на полетник серву. Циферки хорошо, но лучше все проверять наживую.
Получается примерно такая икебана
1708617004745.png


Все, паяльник прячем, больше он пока не нужен. Пришло время тыкать кнопки.
Лепим новый скрипт на питоне. Открываем оба наших юарта, и пишем с первого (приемник) во второй (полетник). Здесь пришлось немного повозиться, но в результате все завелось, и работает без задержек.
Хрен знает чего, но форум не грузит локальные видео, даже не большие. Ну, пусть будет так



Т.е. на текущем моменте малина выступает как мост между приемником, и полетником. Дальше нужно научить ее управлять полетником самостоятельно. Штош, смотрим что у нас есть.
Crossfire имеет свой протокол данных - CRSF. Гуглим спецификацию протокола и находим
Тільки зареєстровані користувачі бачать весь контент у цьому розділі

Ну, вроде обычная хреновина. Однако изначально хотел реализовать это на протоколе SBUS. Он более старый и медленный, но используется во многих полетниках и аппах. Однако попытка натянуть сову на глобус заставить crossfire работать с SBUS через INAV результата не принесли, хотя мануал для бетафлай есть.
Штош... мальчик, девочка, какая в жопу разница нам все равно че потрошить.
Но раньше чем изобретать велосипед, ищем готовые решения. А вот оно - библиотека для работы с CRSF.
Ставим либу, парсим наш юарт, и у нас уже не просто слепой мост - теперь малина видит все каналы, а это есть хорошо. Однако, прямой необходимости ПОНИМАТЬ что шлет оператор, я сейчас не вижу - хотя не исключаю какие либо сценарии, где нужно будет корректировать управление оператора. Намного важнее это организовать прямое управление полетником с малины. И это есть у меня.
Дописываем пару строк в скрипт, и мы уже самостоятельно формируем пакеты для полетника. Что придумать для проверки.... да просто пошевелим сервой. Медленно ее поворачиваем в одно положение, после чего резко возвращаем обратно, и так в цикле.
Хуяк, хуяк и в продакшн.



Что получилось? Автономный модуль. Вроде что простого сервой пошевелить - а хуй там. Серва на полетнике. Точно также вместо сервый управляются моторы дрона (которых правда щас нету :D) - только переменную в другую позицию поствить. Полетник думает, что им управляет оператор, но это не так. Аппаратура выключена. На малине есть управление всеми каналами и реальном времени, и это более-менее внятно работает.
Дальше попробую собрать телеметрию с полетника, и имея уже такой апи, что-то сочинить. Правда что я сочинять буду не зная питона - большой вопрос.
 
Останнє редагування:
Итак, продолжаем заниматься никому не нужной ерундой. Приехали железки, и можно потыкать паяльником.
Идем согласно ранее озвученному плану:

Готового дрона нема, но есть железки. Стандартный стек F405 (не совсем стандартный, но здесь не об этом) + дальнобойка crossfire. Припаиваем приемник к стеку, биндим, прошиваем полетник и настраиваем приемник в INAV.
Кстати, по ходу пьесы вырисовывается шо INAV похоже гадость, и нужно уходить в бетафлай. Но об этом позже.
Проверяем - все работает, мы видим каналы приемник в INAV.
Дальше согласно ранее продуманному плану, отпаиваем приемник от полетника, и припаиваем его к uart малины. Дальше нужно полетник припаять ко второму uart малины, но здесь нас ждет первый сурпрыз - на малине из коробки только 1 uart. Пичаль :(
Но немного гуглинга и правки /boot/config.txt и у нас нарисовывается новый uart. То, что нужно.
Ну и чтобы 2 раза не ходить, припаиваем на полетник серву. Циферки хорошо, но лучше все проверять наживую.
Получается примерно такая икебана
1708617004745.png


Все, паяльник прячем, больше он пока не нужен. Пришло время тыкать кнопки.
Лепим новый скрипт на питоне. Открываем оба наших юарта, и пишем с первого (приемник) во второй (полетник). Здесь пришлось немного повозиться, но в результате все завелось, и работает без задержек.
Хрен знает чего, но форум не грузит локальные видео, даже не большие. Ну, пусть будет так



Т.е. на текущем моменте малина выступает как мост между приемником, и полетником. Дальше нужно научить ее управлять полетником самостоятельно. Штош, смотрим что у нас есть.
Crossfire имеет свой протокол данных - CRSF. Гуглим спецификацию протокола и находим
Тільки зареєстровані користувачі бачать весь контент у цьому розділі

Ну, вроде обычная хреновина. Однако изначально хотел реализовать это на протоколе SBUS. Он более старый и медленный, но используется во многих полетниках и аппах. Однако попытка натянуть сову на глобус заставить crossfire работать с SBUS через INAV результата не принесли, хотя мануал для бетафлай есть.
Штош... мальчик, девочка, какая в жопу разница нам все равно че потрошить.
Но раньше чем изобретать велосипед, ищем готовые решения. А вот оно - библиотека для работы с CRSF.
Ставим либу, парсим наш юарт, и у нас уже не просто слепой мост - теперь малина видит все каналы, а это есть хорошо. Однако, прямой необходимости ПОНИМАТЬ что шлет оператор, я сейчас не вижу - хотя не исключаю какие либо сценарии, где нужно будет корректировать управление оператора. Намного важнее это организовать прямое управление полетником с малины. И это есть у меня.
Дописываем пару строк в скрипт, и мы уже самостоятельно формируем пакеты для полетника. Что придумать для проверки.... да просто пошевелим сервой. Медленно ее поворачиваем в одно положение, после чего резко возвращаем обратно, и так в цикле.
Хуяк, хуяк и в продакшн.



Что получилось? Автономный модуль. Вроде что простого сервой пошевелить - а хуй там. Серва на полетнике. Точно также вместо сервый управляются моторы дрона (которых правда щас нету :D) - только переменную в другую позицию поствить. Полетник думает, что им управляет оператор, но это не так. Аппаратура выключена. На малине есть управление всеми каналами и реальном времени, и это более-менее внятно работает.
Дальше попробую собрать телеметрию с полетника, и имея уже такой апи, что-то сочинить. Правда что я сочинять буду не зная питона - большой вопрос.

Вам чем дальше, тем больше аплодируют разрабы кацапских летадл. Столько годной инфы бесплатно да с тестами. Не, понятно, что свецов и у них хватает, но я бы на вашем месте не выкладывал все так подробно.
 
Это не годная инфа, а поделка на коленке. И никакой инфы нет - ни библиотек, ни кода. Те куски кода, которые мы обсуждали выше - это чужие примеры, спизженые в инете. Ну разве что ссылку на вики выложил :D
 
Однако, прямой необходимости ПОНИМАТЬ что шлет оператор, я сейчас не вижу - хотя не исключаю какие либо сценарии, где нужно будет корректировать управление оператора.
Воно знадобиться в момент переходу з керування оператором на керування малиною.
Якщо перехід буде безумовний, то дефолтні параметри малини вчинять "стрибок" і можуть перекинути дрон.
Малина повинна починати керування з тієї точки, де знаходилось фактичне керування на той час. Ми ж не знаємо в яку мить зв'язок наєбнеться. Дрон може в цей час виконувати розворот, чи набирати висоту, і ти такий - хуяк і якісь вдфонарні середні значення на механіку в'єбав.
Найпростіше - проста копіювати собі в змінні те, що приходить з пульта. Вирубати при цьому піди, щоб не залітали в насичення через неможливість керування.
 
Назад
Зверху Знизу