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

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

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 можно)…
Вы не помните где читали, интересно почитать кто писал и где?

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