Вопросы по iNav
Создаю ветку для привлечения внимания русскоговорящего сообщества к новой прошивке с поддержкой навигации. Сделана на базе Cleanflight, поэтому поддерживает многие полетные контроллеры.
Предыстория
Почти с начала моего увлечения мультироторами я летаю на Cleanflight. До поры до времени меня всё устраивало, но когда мне надоело летать низко-близко встал вопрос возврата домой (обычного и по отказу РУ). После некоторого ковыряния в коде я решил переделать всю навигацию с нуля.
Так в апреле 2015 года началась работа над проектом Nav-Rewrite (который позже переименовался в iNav).
Главной идеей проекта стало добавление к “официальному” Клинфлайту продвинутой навигации.
Что уже сделано
- Новые полетные режимы ALTHOLD, POSHOLD и RTH
- Улучшенная фильтрация гироскопов и акселерометров
- Новый алгоритм определения положения в пространстве. Точнее и быстрее.
- Инерциальная навигационная система, дополняющая GPS для большей точности
- Улучшенная калибровка акселерометра и компаса
- “Умный” возврат домой, использующий безопасную высоту и умеющий сам посадить аппарат
- Возврат домой по отказу РУ
- Автономные миссии по путевым точкам
GitHub:
github.com/iNavFlight/inav
Документация:
github.com/iNavFlight/inav-docs/wiki
Сборки:
github.com/iNavFlight/inav/releases
Поскольку все делается почти на голом энтузиазме, приветствуется любая помощь 😃
Спасибо за тему. Можно будет сравнить. На RGC, с сентября месяца уже 200 страниц обсуждения написали, это 20 сообщений в день! Видать, есть о чем поговорить 😁
При подключении внешнего компаса от gps к 10dof sprf3 плате, надо чтобы он совпадал по расположению с тем, что на плате? На gps он кверху ногами (roll180 для apm), мозг тоже перевернуть надо?
При подключении внешнего компаса от gps к 10dof sprf3 плате, надо чтобы он совпадал по расположению с тем, что на плате?
Совсем не обязательно, у Клинфлайта и соответственно у iNav есть параметр align_mag, который определяет расположение компаса по отношению к плате. Варианты - DEFAULT (как на плате), CW0 (совпадает с направлением платы), CW90 (по часовой на 90 градусов), CW180, CW270, CW0FLIP (совпадает с направлением платы, но перевернут), CW90FLIP, CW180FLIP, CW270FLIP
На RGC, с сентября месяца уже 200 страниц обсуждения написали, это 20 сообщений в день!
Да, на RCG ветка очень активная. Поначалу были сплошные багрепорты, ничего толком не работало, летало не туда, не той стороной или не летало вообще. Сейчас в основном вопросы по запуску или предложения по улучшению, хотя багрепорты тоже бывают, особенно если что-то кардинально меняется 😁
О магнитометре. Вроде как он отключается в Cleanflight.
github.com/cleanflight/cleanflight/blob/…/Cli.md
set mag_hardware =1. 0 = Default, use whatever mag hardware is defined for your board type ; 1 = None, disable mag ; 2 = HMC5883 …
Понятно, что речь не идет о физическом отключении. Это на программном уровне отказ от опроса этого датчика. Или невозможно опрашивать внешний компас при наличии внутреннего?
Это на программном уровне отказ от опроса этого датчика. Или невозможно опрашивать внешний компас при наличии внутреннего?
set mag_hardware = 1 - это отказ от определения и использования магнетометра.
Если чип магнетометра на внешнем модуле тот же что и на плате контроллера, программно выбрать тот или другой невозможно - у них общая шина обмена данными и один и тот же адрес. Обычно используют HMC5883L или HMC5983 (это по сути один и тот же чип), их различить программно нельзя.
Cleanflight теоретически должен поддерживать еще один магнитометр - AK8975, но он пока не работает и у меня нет чипа, на котором можно отлаживать код.
Я как то обрезал дорожки компаса на cc3d revolution и она перестала заводиться =( Хотя показания менялись при подключении внешнего.
Я как то обрезал дорожки компаса на cc3d revolution и она перестала заводиться =( Хотя показания менялись при подключении внешнего.
Бессвинцовый припой которым сейчас паяют платы очень хрупкая штука, чем резать дорожки лучше чип скальпелем аккуратно “отщелкнуть” от платы. Или отпаять, если фен есть 😁
У меня чаще дорожки от платы “отщёлкиваются”, чем припой от детали. На f3 пробовал компас - тоже меняются показания при подключении внешнего. В итоге непонятно, что там происходит, контроллер посылает запрос компасу по адресу, но адреса у них одинаковые и они одновременно ему отвечают с наслоением?
На назе пробовал режим маг на внутреннем - так просто крутится вокруг своей оси не переставая.
контроллер посылает запрос компасу по адресу, но адреса у них одинаковые и они одновременно ему отвечают с наслоением
Да, именно так и происходит. Тот что “на борту” нужно отключить от шины.
На назе пробовал режим маг на внутреннем - так просто крутится вокруг своей оси не переставая.
Причин может быть две
- Магнитные наводки от батареи/регулей/силовых проводов/пищалки
- Неправильная калибровка компаса
Проверить калибровку можно просто - с выключенными моторами покрутить коптер и понаблюдать за Heading в конфигураторе:
Нос коптера на север - Heading = 0
Нос коптера на восток - heading = 90
Нос коптера на юг - heading = 180
Причем heading не должен сильно меняться (3-5 градуса - это нормально) если коптер наклонять не меняя направления. Если картинка в конфигураторе крутится при кренах - либо плохо сделана калибровка, либо не та ориентация компаса (align_mag).
Доброго времени суток! Расскажите пожалуйста, а через что конфигурировать то данную прошивку? Где строить маршрут полёта, точку возврата, путевые точки?
Доброго времени суток! Расскажите пожалуйста, а через что конфигурировать то данную прошивку? Где строить маршрут полёта, точку возврата, путевые точки?
Конфигурировать параметры через Cleanflight Configurator, как и “официальный” Cleanflight или Betaflight.
Точка возврата - всегда то место откуда коптер взлетел.
А вот с маршрутом полета (путевыми точками) пока засада - есть EzGUI для Android и mwptools для Linux. Для винды пока утилиты нет. Путевые точки хранятся в оперативной памяти, поэтому загружать их нужно после подключения батареи, непосредственно перед взлетом.
А самолетный вариант работы с жпс планируется в эту прошивку. Типа как у Патрика
А самолетный вариант работы с жпс планируется в эту прошивку.
А он уже есть, и наработки Патрика Э. в этом очень сильно помогли 😃
Работает на “голом” GPS, без компаса и барометра. На летающем крыле опробован успешно.
То есть не нужна плата 10dof с барометром для самолёта?
Просто выбираю, что поставить на самолёт для фпв, чтобы мог домой вернуться при потере сигнала и вручную лететь не мешал - apm или даже cc3d можно с этой прошивкой?
Не знаю почему, но на апм очень быстро ищет gps, а на cc3d, cc3d revolution, бетафлае на спф3 - это какие то танцы с коптёром по полчаса. А может прямо в воздухе опять потерять gps и полететь на запад - всегда на запад улетает.
Просто выбираю, что поставить на самолёт для фпв, чтобы мог домой вернуться при потере сигнала и вручную лететь не мешал - apm или даже cc3d можно с этой прошивкой?
Можно и CC3D с этой прошивкой. Правда самолетный код толком не отлажен, да и возврат домой по потере сигнала в общем-то тоже пока тщательно не тестировался (хотя меня пару раз выручал).
Не знаю почему, но на апм очень быстро ищет gps, а на cc3d, cc3d revolution, бетафлае на спф3 - это какие то танцы с коптёром по полчаса.
Это больше зависит от GPS-модуля. У меня дешевый Ublox Neo-6M находит спутники через 30 секунд после включения.
А может прямо в воздухе опять потерять gps и полететь на запад - всегда на запад улетает.
iNav после потери GPS-а подождет пару секунд и экстренно сядет (без контроля позиции, на голом барометре). На самолете без барометра поведение будет непредсказуемым, лучше экстренную посадку по потере GPS-а отключить (set nav_position_timeout = 0) - пусть прямо летит пока снова не поймает спутники.
То есть не нужна плата 10dof с барометром для самолёта?
С компасом и барометром удержание высоты и навигация будут точнее. Особенно если самолет быстрый.
Это больше зависит от GPS-модуля
Один и тот же gps модуль, на апм за 30 сек, на реве 30 минут. Он в гкс показывает, что нашёл уже даже 10 спутников, но использует только 3. Пришлось увеличивать pdop или hdop до 15, чтобы начал использовать больше спутников.
А ещё раз на пиксавке внутренний компас подвёл и при возврате домой коптёр описал круг метров 300. В нём есть какой то защитный алгоритм конечно и он просто садился, но я не знал, в чём дело и отключил все эти алгоритмы. В итоге он понимал, что компас сошёл с ума, но по прежнему ориентировался на него.