Вопросы по iNav

rc468
Ozyris:

Глюки в канале кто-то кроме вас еще наблюдал?

Да, и по этому поводу даже есть материалы в гугле.

Ozyris:

Повесьте ненавистный вами XM+ на UART на несколько часов и ответьте себе сами может такое быть или нет.

С чего вы решили, что он мне ненавистный? Зачем общаться в таком тоне, я вам что-то плохое сделал?

Ozyris
rc468:

Да, и по этому поводу даже есть материалы в гугле.

Будьте любезны ссылку.

rc468:

С чего вы решили, что он мне ненавистный?

На основании того, что

rc468:

Все приемники с таким поведением были XM+

rc468:

я вам что-то плохое сделал?

Вопросы личного характера отправляйте в личку, тут тема про айнав.

rc468
Ozyris:

Будьте любезны ссылку.

Вот здесь есть упоминание видео от Pawel Spychalski насчет corrupted packet

www.rcgroups.com/forums/showthread.php?3097948-iNa…
IIRC Pawel Spychalski talks about this in his Youtube chats about Inav 2.0 - that you get a corrupted packet sent from the tx to the rx in which the PWM value of the “arm” channel is below the disarm threshold and it disarms the plane. One of the things Inav 2.0 is supposed to do is require a couple hundred milliseconds of disarm signal before the FC reacts to the signal.

Видео ищите сами, у меня ютуб закрыт.

Ozyris:

На основании того, что
Все приемники с таким поведением были XM+

И что? При чем тут ненависть?

Ozyris:

Вопросы личного характера отправляйте в личку, тут тема про айнав.

Странно, что вы в теме про айнав пишете о моей ненависти к приемникам XM+, не правда ли?

А вот тут пишут, что глюки в SBUS просто-таки обязаны быть при его реализации
github.com/iNavFlight/inav/issues/2827

SBUS issues are:

  • No CRC, thus there is no way for inav code to make sure that what it has received/decoded is actually valid channel data
  • The packet start marker is a single byte that also can occur in the payload
  • There is no sure way to surely detect packet end for inav code, some SBUS receivers send different fixed bytes, some send whatever other stuff (telemetry or something). SBUS is just reverse-engineered, there is no clear knowledge about what the end byte does
Valery555

К своему большому удивлению обнаружил, что disarm_kill_switch был включен.
Но я его выключал и никогда больше не трогал.
А после проверки фэйлсэйва в поле даже к компу не подключал.
Как эта настройка могла самопроизвольно измениться?
Это , кстати, второй замеченный мной случай самопроизвольного изменения настроек.
Скорее всего крэш произошел по этой причине.

Другая подозрительная штука у меня берет начало от глюка прошивки пульта FLYSKYi6.
С родной прошивкой настройка фэйлсэйва проходила нормально.
Как только залил прошивку на 10 каналов, при настройке фэйлсэйва на канал газа, другие некоторые каналы тоже изменяют свои значения.
В частности 9 канал, на котором у меня настроен арминг в диапазоне 1500-2000, при фэйлсэйве дает значение 1350.
Но контроллер засекает ненормальные значения в канале газа и сразу же включает режим фэлсэйва, не обращая внимания на показания других каналов, в том числе и 9-го. Дизарма не случается. По крайней мере дома и в испытательных полетах возле себя, когда я выключаю передатчик.
Но здесь, конечно, таится потенциальная угроза.
Как будет это все работать, когда связь управления будет исчезать не одномоментно, а постепенно?

А на счет логов. Я не умею их преобразовывать в читабельный вид. Там много кракозябр, а в конце: EяEnd of log (disarm reason:4)
Это, как я понимаю, DISARM_SWITCH

tuskan

можно отключить дизарм совсем.

Valery555
tuskan:

можно отключить дизарм совсем.

То есть он при подключении батареи сразу армиться будет? Тогда если подсоединить батарею при выключенном передатчике, он сразу бешено вращать моторами станет?
Или стик газа случайно двинешь. Пальцы пообрубает.

dvd-media

сделайте арм на стике и не нужно будет голову ломать кто дизармит, аппаратура или полётник ))

Valery555:

Это , кстати, второй замеченный мной случай самопроизвольного изменения настроек.

не подключались к какойнить софтине типа езгуи на смартфоне?

Логи не нужно смотреть блокнотом, нужно смотрелкой логов 😉

Valery555
dvd-media:

сделайте арм на стике и не нужно будет голову ломать кто дизармит, аппаратура или полётник ))

Так это тоже какая-то комбинация сигналов. Почему она не может случиться?
К тому же калибровку можно непроизвольносбить, шевеля в дизарме стиками.

dvd-media:

не подключались к какойнить софтине типа езгуи на смартфоне?

Нет, ничего не делал.

dvd-media:

Логи не нужно смотреть блокнотом, нужно смотрелкой логов 😉

Просветите, какими программами и где их взять.

dvd-media

За два года ни разу никакие калибровки стиками не сбил. Арм одним стиком происходит. Посмотрите документацию или просто загуглите (если здесь не получается по теме) комбинацию стиков 😉

Смотрелка логов там же где и конфигуратор и сами прошивки - на гетхабе в разделе айнав.
ссылки тоже есть в теме.

tuskan
Valery555:

То есть он при подключении батареи сразу армиться будет? Тогда если подсоединить батарею при выключенном передатчике, он сразу бешено вращать моторами станет?
Или стик газа случайно двинешь. Пальцы пообрубает.

Нет.
Арм сработает штатно, со всеми проверками, а отключение арма - только сдергиванием батареи.

rc468
dvd-media:

Арм одним стиком происходит

Да только арм стиком тоже выпилили (или собираются выпилить).

В целом проблема именно в незащищенности SBUS-протокола. Как я понял, они даже толком не знают его спецификации и делают реверс-инжиниринг.
А тайминг чтения пакетов подбирают на коленке.
Проблема в том, что байт, который считается заголовком пакета, может присутствовать в данных самого пакета.
А это уже плохо. Если тайминг чтения байтов собьется, то байт внутри пакета может быть воспринят как заголовок пакета, и тогда начнется чтение пакетов с этого байта, что приведет к полному хаосу.
Поэтому ни стиками, ни чем-то другим полностью исключить глюки невозможно. Любой испорченный пакет может создать такую ситуацию в каналах, что прошивка подумает, будто ее дизармят.

Вопрос, почему портятся пакеты. Передача идет не протоколом S-BUS, т.е. приемник должен сначала принять радиосигнал, а потом преобразовать его в S-BUS и отдать контроллеру. Если преобразование выполняется на приемнике, то очевидно, что от качества сигнала это не зависит. Но возможно, зависит от качества электроники приемника и действующих на него внешних помех от других устройств.

Таким образом, встает вопрос о необходимости экранирования приемника и сигнальных проводов.

Ozyris
rc468:

Как я понял, они даже толком не знают его спецификации и делают реверс-инжиниринг.

Неправильно поняли. Рассуждение об SBUS имеет смысл применительно к аппаратуре Futaba.
Полетные контроллеры и приемники общаются на протоколе ну очень похожем на SBUS. Зато ни для Betaflight, ни для FrSky не является секретом как он работает.
Видимо это хотели сказать в статье, ссылку на которую вы давали.

Дело в другом, вы дали кучу ссылок на ошибки в приемниках FrSky, а у товарища вообще FlySky, а там совсем другая история с каналами и файлсейфами.

Я поэтому и пишу: выкладывайте логи аварий, а то тут уже в такие дебри залезли, а там тупо две цифры в пульте поменять.

rc468
Ozyris:

Неправильно поняли. Рассуждение об SBUS имеет смысл применительно к аппаратуре Futaba. Полетные контроллеры и приемники общаются на протоколе ну очень похожем на SBUS. Зато ни для Betaflight, ни для FrSky не является секретом как он работает.

Нет, речь о разработчиках CleanFlight, т.к. код заимствован оттуда.
Вот в этой ветке, например, разработчики именно что занимаются реверс-инжинирингом S-BUS.
github.com/cleanflight/cleanflight/issues/590
В исходном коде main/rx/sbus.c тоже есть строчки типа
case 0x24: // Unknown SBUS2 data
case 0x34: // Unknown SBUS2 data
Что свидетельствует о недоступности полной спецификации протокола для разработчиков.
И например из-за некоторых багов была зарезана поддержка приемников RadioLink и еще какого-то, потому что они “не соответствуют спецификации”, эталоном которой взята Futaba.

Ozyris:

у товарища вообще FlySky, а там совсем другая история с каналами и файлсейфами.

Согласен. Одни приемники шлют No Pulses, другие устанавливают каналы в какие-то значения и т.п.
В каждом конкретном случае проблема может быть найдена в конфигурации приемника или полетника (kill_switch и т.д.) и на этом можно считать ее решенной.

Однако, меня тревожит более общая, глобальная картина.
Люди неоднократно сообщают, что у них дизармятся в воздухе коптеры, когда

  1. они не трогали никаких выключателей
  2. условий для фейлсейфа не было
    Какой бы ни стоял приемник и какие бы ни были настройки фейлсейфа, в данных условиях этим настройкам просто не на что срабатывать, т.к. полет происходит штатно. Откуда же берется дизарм в канале?
    Предположения:
  3. Криво реализованный S-BUS протокол в прошивке. Какие-то необычные пакеты или джиттер сбивают его с толку и привет.
  4. Непосредственное внесение помех на приемник или кабель между приемником и контроллером. Исходя из того, что контрольных сумм в протоколе нет, полностью исключить искажение пакетов нельзя.
  5. Все это фигня, существуют такие конкретные настройки для приемника, которые полностью исключают дизарм в воздухе. То есть каждый случай дизарма - это просто спорадический фейлсейф + неправильно сконфигурированный приемник.

Вот и хотелось бы понять, как с этим дальше жить и что можно сделать, чтобы подстраховаться от этих проблем, даже если они чисто теоретические.

Ozyris
rc468:

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

С первым выложенным логом все гремлины разбегаются.

rc468:

Криво реализованный S-BUS протокол в прошивке

Что там реализовывать, обычный UART.

rc468:

Непосредственное внесение помех на приемник или кабель между приемником и контроллером.

Ионизирующее излучение еще бывает, если чисто теоретически, но тут вы вряд ли подстрахуетесь.

whoim
dvd-media:

сделайте арм на стике

вроде как убран в 2+ айнаве, типа небезопасно. Хотя имхо можно было бы оставить, включая через кли на свой страх и риск - экономится канал, что для нас, флайскайников, важно )

tuskan:

отключение арма - только сдергиванием батареи

у меня по дефолту настроено так: пока газ в 0 не уберешь, не задизармится. Поэтому уже моторы перебирал, и траву выковыривал из таких глубоких мест…
Находил настройку эту, подумал… и оставил как есть. Привык с дизармом сразу газ в ноль.

Надо собирать qczek, он не глючит так, а если связь теряет - выставляет значения, прописанные вами при настройке приемника.

rc468
Ozyris:

Что там реализовывать, обычный UART.

UART это транспортный уровень. Пакет S-BUS это 25 байт с различной информацией, которые надо разбирать. Читать следующий пакет или нет, решает не UART, а прошивка на основе полученных данных.

whoim:

а если связь теряет - выставляет значения, прописанные вами при настройке приемника.

ну это практически все приемники умеют.
проблема в том, что это не спасает.

whoim

Пока про глюки с непонятными значениями канала в qczek не слышал. А зная, что меньше 1500 значение не упадет, арм настраивается исходя из этого.

tuskan

я ж выкладывал видео с самолетом словившем дизарм за 3 км от дома на qczek

whoim
tuskan:

я ж выкладывал видео с самолетом словившем дизарм за 3 км от дома на qczek

by switch?
Настройка канала по дефолту в приемнике или выше? С настройкой режима в айнав согласовано?

Siarzhuk
Valery555:

К своему большому удивлению обнаружил, что disarm_kill_switch был включен. Но я его выключал и никогда больше не трогал. А после проверки фэйлсэйва в поле даже к компу не подключал. Как эта настройка могла самопроизвольно измениться?

У меня была путаница с этим связанная, при переходе к новому конфигуратору. В версии 1.8 был выключатель.

Начиная с 1.9 переключатель убрали. Осталось возможным выключать disarm_kill_switch только через CLI. Я этого не сделал, думая, что выключил переключатель. Вскоре словил дизарм, упал и сразу же разобрался. 😃
Я летаю с Таранисом. При использовании встроенного модуля на 2.4ГГц, довольно часто замечал по логам проскакивание случайных кратковременных переключений полётных режимов и команд на дизарм. Практически это всегда происходило при полёте вблизи жилых многоэтажек, там уровень радиопомех очень большой. Обычно режим переключается меньше чем на секунду, коптер успевает только дёрнуться. Дизарм же видно только по логу, продолжительность команды та же, но он полётником игнорируется, т.к. я не делаю сейчас газ меньше 11%. Внешне такой дизарм никак не заметно. После перехода с Таранисом на внешний модуль R9M с частотой 915МГц, число подобных сработок сократилось на порядок. У меня сохранены все видео и логи полётов, но жаль тратить время на поиски. В качестве примера покажу как недавно произошло самопроизвольное переключение полётного режима из Англ в Акро. Неприятность произошла опять около многоэтажек. Длительность ложной команды была продолжительной - 1.5сек, коптер успел сделать флип.


Не советую делать арм-дизарм с помощью стика. Я пробовал. Однажды в полёте зарулился и сам задизармился. Аппарат упал. Преимуществ в такой коммутации нет. Со стиком необходимо выполнить 2 условия - газ и яв. С тумблером тоже - газ и тумблер.

OTR1UM
whoim:

Надо собирать qczek, он не глючит так, а если связь теряет - выставляет значения, прописанные вами при настройке приемника.

Это ведь только для PPM актуально, а PPM как протокол довольно медленный и не особо надёжный.
Да и сама QLRS относительно медленная на фоне других LRS на лоре (R9, CRSF)