PIXHAWK PX4 Autopilot еще одна летающая железка

macrokernel

Алексей Дегтярев, мы с Вами точно один и тот же лог смотрим? Я сделал скриншот того участка графика, который Вы изобразили на картинке:

У меня он почему-то выглядит по-другому.

Набросал скриптик, который считает максимальное расхождение в логе.

Roll:
$ cat 2017-06-04\ 13-17-38.log |grep ‘^ATT’ |cut -d, -f3,4 | sed -r -e ‘s/^ //’ -e ‘s/, / - /’ -e ‘s/(.*)/define abs(x) {if (x<0) {return -x}; return x;}; abs\(\1)/’ | bc |sort -n |tail -1
18.49

Pitch:
$ cat 2017-06-04\ 13-17-38.log |grep ‘^ATT’ |cut -d, -f5,6 | sed -r -e ‘s/^ //’ -e ‘s/, / - /’ -e ‘s/(.*)/define abs(x) {if (x<0) {return -x}; return x;}; abs\(\1)/’ | bc |sort -n |tail -1
9.66

Среднее значение расхождения:

Roll:
$ cat 2017-06-04\ 13-17-38.log |grep ‘^ATT’ |cut -d, -f3,4 | sed -r -e ‘s/^ //’ -e ‘s/, / - /’ -e ‘s/(.*)/define abs(x) {if (x<0) {return -x}; return x;}; abs\(\1)/’ | bc |awk ‘{ total += $1 } END { print total/NR }’
1.42087

Pitch:
$ cat 2017-06-04\ 13-17-38.log |grep ‘^ATT’ |cut -d, -f5,6 | sed -r -e ‘s/^ //’ -e ‘s/, / - /’ -e ‘s/(.*)/define abs(x) {if (x<0) {return -x}; return x;}; abs\(\1)/’ | bc |awk ‘{ total += $1 } END { print total/NR }’
0.861155

Так что ну никак у меня нет расхождения 30 - 40.

alexeykozin
macrokernel:

Какое расхождение считается хорошим?

такого требования нет, каждый ищет для себя.
если строго контролировать положение - уходит больше энергии, такая тактика не подходит для долголетов предназначенных для висения на рекорд в штиль. У подобных аппаратов при взлете и полетах в условиях турбулентности может быть и 10 и даже больше градусов “промах”
если точность и устойчивость к турбулентности на первом месте а время полета второстепенно то строят аппарат который допускает не более одного-двух градусов ошибки

macrokernel:

Набросал скриптик, который считает максимальное расхождение в логе.

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

macrokernel

Мне время полёта предпочтительнее.

Вот тут пишут, что в логе рассматриваемые параметры указываются в сотых долях градуса (centi-degrees). Таким образом, получается, что максимальное расхождение по роллу в моем логе - 18.49 - это 0.1849 градуса? Так это вообще отлично! Или я что-то неправильно понимаю?

ufk
Arkady68:

зачем гадать, есть параметр EK2_ALT_M_NSE: Baro measurement noise (m)

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

А по поводу комасов у меня случился прорыв в лучшую сторону когда я отключил обучение компаса по маневрам. Этот параметр есть на оба компаса, попробуйте его поставить в “никогда” и надеюсь у вас всё устаканится 😃

Причем тут гадать, проблему с удержанием в 3.3 озвучивали разработчики, они навярняка знают о всех переменных(конкретно итальяшка даже видео этой проблеме посвятил, можете на оф. канале поискать)… к слову, строго говоря я на 3.3 вообще не летал, перескочил с 3.2 сразу на 3.4(по многим причинам)

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

Оно по дефолту выключено ну и я в курсе, однако спасибо за подсказку, может кому то поможет… я те свои проблемы(как и другие) давно решил… я много летаю и поэтому если что то вылезает быстро нахожу и далееуже по ситуации.

arb:

А это логично? Зачем подбирать коррекцию для проблемы когда можно просто взять правильный первоисточник (ЖПС) и использовать его данные, что в принципе сейчас система и делает.

А если глич, а если плохой прием гпс, а если висим…
Вот для этого все это и городят имхо, так и достигается отказоустойчивость… больше датчиков - больше вероятность при отказах/проблемах не потерять аппарат

alexeykozin
macrokernel:

Вот тут пишут, что в логе рассматриваемые параметры указываются в сотых долях градуса (centi-degrees)

там пишут про другие параметры, каждый параметр в своих единицах.

macrokernel

Как же другие? Те же самые, ведь: ATT.Roll, ATT.Pitch - разве нет?

arb

А если глич, а если плохой прием гпс, а если висим…
Вот для этого все это и городят имхо, так и достигается отказоустойчивость… больше датчиков - больше вероятность при отказах/проблемах не потерять аппарат

Где-то это уже обсуждали, но можно еще раз.
В измерениях для точности отказоустойчивости нужна статистика. Уже давно отработано, что в этом случае используется 1, 3, 5 измерений и более. Четные не применяются (особенно 2). 2 к статистике отношения не имеет. 1 измерение на удачу, 3 (5) - отбрасывается ошибочное (за диапазоном остальных) и считается среднее. При 2 непонятно кого отбрасывать.
Поэтому если так хочется, то ставьте хотя-бы 3 компаса, 3 жпс и 3 акселя. А 2 это ни то , ни се.

alexeykozin
macrokernel:

Как же другие? Те же самые, ведь: ATT.Roll, ATT.Pitch - разве нет?

посмотрите шкалу
от -180 до 180 тоесть 360 градусов. (а не ±18000 )
фрагмент лога содержит переворот тоесть переход через 180 градусов

macrokernel

Я не вижу в этом логе ничего близкого к 180. Минимальное значение ATT.Roll в этом логе - -48.44, максимальное - 53.19. По pitch - от -43.09 до 38.05. Вы точно второй лог смотрите (более поздний)? Первый - автотюн, второй - полёт.

alexeykozin

я имею ввиду не какой то конкретный лог а приведенные в последних постах картинки
в вашем случае тоже градусы а не сотые их доли верно?

macrokernel

По смыслу больше похоже на градусы, но документация на Arducopter утверждает, что сотые. Возможно, MissionPlanner при конвертации из bin в log делит на 100.

Свои логи я выкладывал выше.

Hyperion

помоему там косяк в описалове. По всем косвенным признакам выглядит как градусы а не сотни градуса. Проверить легко - заармить и положить коптер на 90 градусов и поглядеть что будет в логе.
Причем в логе нету здоровых чисел
ATT, 32740378, 4.19, 4.19, -0.57, -0.57, 90.59, 90.59, 0.00, 0.00
явно градусы

Hyperion

ох блин каюсь. Каша из логов, конечно же не ваш открыл 😦

помоему все почти шикарно.
если половить блох то при резких виражах видна перекомпенсация на 11гр примерно.
понизить P либо повысить D полетать и сравнить.

Hyperion

если я верно мыслю то да, скрин привел момента где крутые отклонения по 30гр

macrokernel

Перекомпенсация - это когда, например, Roll больше, чем DesRoll, а недокомпенсация, - это когда Roll меньше, чем DesRoll?

ufk
arb:

Где-то это уже обсуждали, но можно еще раз.
В измерениях для точности отказоустойчивости нужна статистика. Уже давно отработано, что в этом случае используется 1, 3, 5 измерений и более. Четные не применяются (особенно 2). 2 к статистике отношения не имеет. 1 измерение на удачу, 3 (5) - отбрасывается ошибочное (за диапазоном остальных) и считается среднее. При 2 непонятно кого отбрасывать.
Поэтому если так хочется, то ставьте хотя-бы 3 компаса, 3 жпс и 3 акселя. А 2 это ни то , ни се.

Интересно, не слышал на счет 3… джедаи в современные железки по 2 imu/магнитометра и гпса фигачат(явно они что то знают таки), у нас в 3.5 так понимаю тоже хотят сделать так же как джедаи с гпс, тоесть полноценную поддержку 2 гпсов а не как сейчас(по 2 иму и компаса у нас и так сейчас, компаса даже 3 можно)…
Вы не помните где читали, интересно почитать кто писал и где?

Тут ведь как, у нас же не только магнитометры(если так то тогда ваш алгоритм логичен)… еще инерциалка и гпс если мы говорим о курсе, тоесть отбрасывать можно то что расходится с остальным(скажем встроенный магнитометр дает показания которые расходятся с показаниями остальных систем, в том числе и второго магнитометра, значит его и отбрасываем… а если у нас один то в таком случае остаемся совсем без магнитлметра и уже можем получить проблему при определенных условиях)…
как то так

arb
ufk:

Интересно, не слышал на счет 3…

Да в настройках есть по 3. Правда надо еще умудрится подключить физически.

ufk:

явно они что то знают таки

Они отлично знают как продавать. Есть красивое слово “отказоустойчивость”, все про него слышали и вроде все знают, что это такое. Поэтому легко под это можно продавать дорогие устройства.
Кстати про отказоустойчивость. Вот когда речь идет, например, про ВЕС, то это справедливо. Работает только один. Задаешь критерий отказа, к примеру, просадку напряжения до 4,5 В (хотя не все так просто) и как только это достигается считаем, что 1 отказал и в работу вступает 2.
А здесь работает сразу 2 (а не по очереди) и порой показывают разные значения, при этом признаков отказа нет ни у одного. И что с этим делать?
Это как стоишь не перепутье и думаешь куда идти, а тут 2 чудика кричат один направо, другой налево. И главное причин не доверять им обоим нет. В результате неопределенность, начинаешь дергаться.
Так и ПК. Сколько было сообщений, что пикс ведет себя как безумный, а потом выясняется, что виноват один из акселей. Кстати когда 2 компаса чудят не так страшно, чем когда чудят 2 акселя.
И в чем тут спрашивается отказоустойчивость. По идеологии один отказал система должна была отказаться от него и работать на другом, но она упорно ищет решение от 2-х сразу, а т.к. нет такого математического решения при 2-х, то и летит в никуда.

mfilitovich
arb:

Они отлично знают как продавать.

Ну и летают их аппараты отлично! Поэтому, не всё тут маркетинг.