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

schs
arb:

К отказоустойчивости данный случай отношения не имеет. Для того чтобы система поняла, что кто-то из компасов отказал нужны четкие критерии.

При реальном полёте, по получению достаточных данных от GPS, можно вычислить более проблемный или подобрать коррекцию под него.

macrokernel
Hyperion:

нормально

Не ту картинку приложил, это были дефолтный PIDы 😁

@Hyperion, можно было и намекнуть 😉

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

Вот мои PIDы после автотюна:

arb
schs:

При реальном полёте, по получению достаточных данных от GPS, можно вычислить более проблемный или подобрать коррекцию под него.

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

Arkady68:

А по поводу комасов у меня случился прорыв в лучшую сторону когда я отключил обучение компаса по маневрам.

macrokernel:

но, кажется, стал резковат.

Если стал резковат, то можно вернуть обратно стабилайз. Или прогнать автотюн с другим к-том автотюна (более мягким).

Hyperion
macrokernel:

Вот мои PIDы после автотюна:

если еще не поняли сарказма, то поясняю.
Для того чтобы оцепить пиды надо не скрин пидов выложить, а логи 😃

Hyperion

на мой взгляд маловато P

По графикам кажется что текущее положение коптера чуууучуть не дотягивает до желаемого. Но если управление нравится то можно и забить)
для сравнений лог моего после автотюна

В моем случае показалось что P Наоборот великовато, потому что есть перекомпенсации. Хочу как разберусь с вибрациями запустить еще раз автотюн с меньшей агрессивностью.

Другой вариант - оценить просто данные ERRRP, ERRYAW
ваш коптер

мой

но летать разумеется нужно примерно одинаково)

alexeykozin
Hyperion:

чуууучуть не дотягивает до желаемого

нуу если коптер был в полете в моменты где десрол и рол расходились в 30 градусов а разок и 40 то какое то уж очень осторожное суждение.

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

Hyperion

блин тупанул, спасибо за замечание. надо было одной группой сделать.

macrokernel

Спасибо, оба Алексея.

Смысл понятен: надо смотреть логи Roll-DesRoll, Pitch-DesPitch, Yaw-DesYaw и, если расхождение большое, тюнить дальше. Алексей Дегтярев, чем Вы рисуете графики? В Mission Planner какая-то непонятная шкала, не ясно, что за величина по оси Y, поэтому сложно оценить насколько велико расхождение.

P.S. Это APM Planner. Устанавливаю.
P.P.S. Похоже, что величины по оси Y одинаковые в APM Planner и Mission Planner.

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

Спасибо, оба Алексея.

Смысл понятен: надо смотреть логи Roll-DesRoll, Pitch-DesPitch, Yaw-DesYaw и, если расхождение большое, тюнить дальше. Алексей Дегтярев, чем Вы рисуете графики? В Mission Planner какая-то непонятная шкала, не ясно, что за величина по оси Y, поэтому сложно оценить насколько велико расхождение.

P.S. Это APM Planner. Устанавливаю.
P.P.S. Похоже, что величины по оси Y одинаковые в APM Planner и Mission Planner.

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

Я у себя вижу максимум 20 градусов (если по оси Y градусы) расхождение по роллу на 42-ой секунде. Далее - 10 - 12, не больше. По питчу 8 - 10. По яву - вообще всё один-в-один.

Алексей Козин, где у меня ролл расходится на 30 - 40 градусов? Можете, пожалуйста, указать, на какой секунде или номер записи журнала? Я в анализе логов пока не силён.

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
явно градусы