Вопросы по iNav

jShadow

Создаю ветку для привлечения внимания русскоговорящего сообщества к новой прошивке с поддержкой навигации. Сделана на базе 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

Поскольку все делается почти на голом энтузиазме, приветствуется любая помощь 😃

ekuzmi

Спасибо за тему. Можно будет сравнить. На RGC, с сентября месяца уже 200 страниц обсуждения написали, это 20 сообщений в день! Видать, есть о чем поговорить 😁

lokanaft

При подключении внешнего компаса от gps к 10dof sprf3 плате, надо чтобы он совпадал по расположению с тем, что на плате? На gps он кверху ногами (roll180 для apm), мозг тоже перевернуть надо?

jShadow
lokanaft:

При подключении внешнего компаса от gps к 10dof sprf3 плате, надо чтобы он совпадал по расположению с тем, что на плате?

Совсем не обязательно, у Клинфлайта и соответственно у iNav есть параметр align_mag, который определяет расположение компаса по отношению к плате. Варианты - DEFAULT (как на плате), CW0 (совпадает с направлением платы), CW90 (по часовой на 90 градусов), CW180, CW270, CW0FLIP (совпадает с направлением платы, но перевернут), CW90FLIP, CW180FLIP, CW270FLIP

ekuzmi:

На RGC, с сентября месяца уже 200 страниц обсуждения написали, это 20 сообщений в день!

Да, на RCG ветка очень активная. Поначалу были сплошные багрепорты, ничего толком не работало, летало не туда, не той стороной или не летало вообще. Сейчас в основном вопросы по запуску или предложения по улучшению, хотя багрепорты тоже бывают, особенно если что-то кардинально меняется 😁

ekuzmi

О магнитометре. Вроде как он отключается в 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 …
Понятно, что речь не идет о физическом отключении. Это на программном уровне отказ от опроса этого датчика. Или невозможно опрашивать внешний компас при наличии внутреннего?

jShadow
ekuzmi:

Это на программном уровне отказ от опроса этого датчика. Или невозможно опрашивать внешний компас при наличии внутреннего?

set mag_hardware = 1 - это отказ от определения и использования магнетометра.

Если чип магнетометра на внешнем модуле тот же что и на плате контроллера, программно выбрать тот или другой невозможно - у них общая шина обмена данными и один и тот же адрес. Обычно используют HMC5883L или HMC5983 (это по сути один и тот же чип), их различить программно нельзя.

Cleanflight теоретически должен поддерживать еще один магнитометр - AK8975, но он пока не работает и у меня нет чипа, на котором можно отлаживать код.

lokanaft

Я как то обрезал дорожки компаса на cc3d revolution и она перестала заводиться =( Хотя показания менялись при подключении внешнего.

jShadow
lokanaft:

Я как то обрезал дорожки компаса на cc3d revolution и она перестала заводиться =( Хотя показания менялись при подключении внешнего.

Бессвинцовый припой которым сейчас паяют платы очень хрупкая штука, чем резать дорожки лучше чип скальпелем аккуратно “отщелкнуть” от платы. Или отпаять, если фен есть 😁

lokanaft

У меня чаще дорожки от платы “отщёлкиваются”, чем припой от детали. На f3 пробовал компас - тоже меняются показания при подключении внешнего. В итоге непонятно, что там происходит, контроллер посылает запрос компасу по адресу, но адреса у них одинаковые и они одновременно ему отвечают с наслоением?
На назе пробовал режим маг на внутреннем - так просто крутится вокруг своей оси не переставая.

jShadow
lokanaft:

контроллер посылает запрос компасу по адресу, но адреса у них одинаковые и они одновременно ему отвечают с наслоением

Да, именно так и происходит. Тот что “на борту” нужно отключить от шины.

lokanaft:

На назе пробовал режим маг на внутреннем - так просто крутится вокруг своей оси не переставая.

Причин может быть две

  1. Магнитные наводки от батареи/регулей/силовых проводов/пищалки
  2. Неправильная калибровка компаса

Проверить калибровку можно просто - с выключенными моторами покрутить коптер и понаблюдать за Heading в конфигураторе:
Нос коптера на север - Heading = 0
Нос коптера на восток - heading = 90
Нос коптера на юг - heading = 180

Причем heading не должен сильно меняться (3-5 градуса - это нормально) если коптер наклонять не меняя направления. Если картинка в конфигураторе крутится при кренах - либо плохо сделана калибровка, либо не та ориентация компаса (align_mag).

Sky-DiGGeR

Доброго времени суток! Расскажите пожалуйста, а через что конфигурировать то данную прошивку? Где строить маршрут полёта, точку возврата, путевые точки?

jShadow
Sky-DiGGeR:

Доброго времени суток! Расскажите пожалуйста, а через что конфигурировать то данную прошивку? Где строить маршрут полёта, точку возврата, путевые точки?

Конфигурировать параметры через Cleanflight Configurator, как и “официальный” Cleanflight или Betaflight.
Точка возврата - всегда то место откуда коптер взлетел.
А вот с маршрутом полета (путевыми точками) пока засада - есть EzGUI для Android и mwptools для Linux. Для винды пока утилиты нет. Путевые точки хранятся в оперативной памяти, поэтому загружать их нужно после подключения батареи, непосредственно перед взлетом.

gena_g

А самолетный вариант работы с жпс планируется в эту прошивку. Типа как у Патрика

jShadow
gena_g:

А самолетный вариант работы с жпс планируется в эту прошивку.

А он уже есть, и наработки Патрика Э. в этом очень сильно помогли 😃
Работает на “голом” GPS, без компаса и барометра. На летающем крыле опробован успешно.

lokanaft

То есть не нужна плата 10dof с барометром для самолёта?
Просто выбираю, что поставить на самолёт для фпв, чтобы мог домой вернуться при потере сигнала и вручную лететь не мешал - apm или даже cc3d можно с этой прошивкой?
Не знаю почему, но на апм очень быстро ищет gps, а на cc3d, cc3d revolution, бетафлае на спф3 - это какие то танцы с коптёром по полчаса. А может прямо в воздухе опять потерять gps и полететь на запад - всегда на запад улетает.

jShadow
lokanaft:

Просто выбираю, что поставить на самолёт для фпв, чтобы мог домой вернуться при потере сигнала и вручную лететь не мешал - apm или даже cc3d можно с этой прошивкой?

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

lokanaft:

Не знаю почему, но на апм очень быстро ищет gps, а на cc3d, cc3d revolution, бетафлае на спф3 - это какие то танцы с коптёром по полчаса.

Это больше зависит от GPS-модуля. У меня дешевый Ublox Neo-6M находит спутники через 30 секунд после включения.

lokanaft:

А может прямо в воздухе опять потерять gps и полететь на запад - всегда на запад улетает.

iNav после потери GPS-а подождет пару секунд и экстренно сядет (без контроля позиции, на голом барометре). На самолете без барометра поведение будет непредсказуемым, лучше экстренную посадку по потере GPS-а отключить (set nav_position_timeout = 0) - пусть прямо летит пока снова не поймает спутники.

lokanaft:

То есть не нужна плата 10dof с барометром для самолёта?

С компасом и барометром удержание высоты и навигация будут точнее. Особенно если самолет быстрый.

lokanaft
jShadow:

Это больше зависит от GPS-модуля

Один и тот же gps модуль, на апм за 30 сек, на реве 30 минут. Он в гкс показывает, что нашёл уже даже 10 спутников, но использует только 3. Пришлось увеличивать pdop или hdop до 15, чтобы начал использовать больше спутников.
А ещё раз на пиксавке внутренний компас подвёл и при возврате домой коптёр описал круг метров 300. В нём есть какой то защитный алгоритм конечно и он просто садился, но я не знал, в чём дело и отключил все эти алгоритмы. В итоге он понимал, что компас сошёл с ума, но по прежнему ориентировался на него.

SovGVD
jShadow:

Или отпаять, если фен есть

Или если компас этот не жалко, то паяльником с каплей припоя прижать его, подождать пока нагреется и сковырнуть чем нибудь. Иногда дорожки коротит припоем (смотря как припой растекся от самого компаса или как снималось), но это тем же паяльником легко убирать.

jShadow
lokanaft:

Один и тот же gps модуль, на апм за 30 сек, на реве 30 минут. Он в гкс показывает, что нашёл уже даже 10 спутников, но использует только 3.

Я сейчас пытаюсь победить похожую проблему с модулями которые на Банггуде называются Ublox 7. Уже три или четыре человека жаловались на отсутствие фикса с iNav, но нормальную работу с u-Center. Жду посылку чтобы попробовать такой модуль руками.

lokanaft:

А ещё раз на пиксавке внутренний компас подвёл

В iNav защит от такого не предусмотрено - памяти нет. Если что-то сошло с ума - это большая беда 😦

gena_g
lokanaft:

Один и тот же gps модуль, на апм за 30 сек, на реве 30 минут. .

Naze32 (STM32) дает помехи на жпс. Собирал коптер на multiwii (mega328) спутники ловились прекрасно и быстро. Переставил мозги NAZE32 и ловились по пол часа и не так много (цифры сейчас не упомню). Частично решил отнеся подальше от мозгов и снизу поставил экран.

camek

Добрый день, я правильно понимаю что прошивку можно поставит на такой мозг CC3D Atom? (я думал у него не хватит памяти для навигации) и если да то какой модуль GPS посоветуете, чтобы настройка была проще.

jShadow
camek:

прошивку можно поставит на такой мозг CC3D Atom

Можно, но нужно учитывать, что будут сложности с подключением барометра, компаса и GPS одновременно. У CC3D второй порт (Flex) либо Serial либо I2C, т.е. либо у нас есть два Serial-порта, либо Serial + I2C.

Самолету, в общем-то достаточного одного GPS и iNav это умеет.

camek
jShadow:

Можно, но нужно учитывать, что будут сложности с подключением барометра, компаса и GPS одновременно.

Спасибо за такую прошивку. Хочу попробовать на трикоптере, интересует возврат домой, и возможно зависание в одной точке, пока буду разбираться, ещё один вопрос это возможно реализовать с таким gps или какой лучше заказать, без барометра и компаса на коптере будет работать, просто с меньшей точностью?

jShadow
camek:

Хочу попробовать на трикоптере, интересует возврат домой, и возможно зависание в одной точке, пока буду разбираться, ещё один вопрос это возможно реализовать с таким gps или какой лучше заказать, без барометра и компаса на коптере будет работать, просто с меньшей точностью?

На коптерах для полноценной навигации обязательны компас и барометр. Компас - для удержания позиции и возврата домой, барометр - для удержания высоты. Работа в режиме “только GPS” возможна на самолетах (которые всегда летят вперед, курс по GPS у них совпадает с направлением движения). Подключение всего этого к CC3D может стать проблемой из-за нехватки портов 😦

Про этот GPS-модуль у меня есть несколько штук негативных отзывов. Жду посылку с таким модулем, чтобы проверить самому.

jShadow

Получил и проверил вот этот GPS модуль.

Само собой это не оригинальный Ublox, а его клон, но на Ublox-овские команды он отвечает и сообщает аппаратную версию 7.0 и прошивку версии 1.0. Спутники ловит хорошо, не смотря на мелкую антенну. На 5 спутниках точность так себе, а вот на 6 точность в пределах 2-3 метров на балконе, откуда видно треть неба от силы.

Спутники ГЛОНАСС видит, но не использует, что логично, радиоприемник у 7-й серии единственный, так что либо GPS либо GLONASS.

В полете протестировать еще предстоит.

Вердикт: неплохой модуль с хорошим сочетанием точности, размеров и цены. Про качество трудно сказать что-то определенное. Поскольку это не оригинальный Ublox, а его клон, то это лотерея, может повезти, но может и не повезти.