А давайте обсудим Arducopter - APM

alexeykozin

сижу себе копаю код коррекции системы ориентации,
вижу ништяшную вещь.
как известно изначально AHRS писалась под самоль,
в коде заложено такое западло:

  1. if we are over 3*GPS_SPEED_MIN (which means 9m/s)
    and our yaw error is over 60 degrees, which means very
    poor yaw. This can happen on bungee launch when the
    operator pulls back the plane rapidly enough then on
    release the GPS heading changes very rapidly

github.com/diydrones/ardupilot/…/AP_AHRS_DCM.cpp строка 413
запало в том что самоль не может лететь задом с наземной скоростью более 9мс при ошибке в показаниях компаса и носа самолета более 60 градусов, даже в сильный ветер. поэтому в коде если такое случилось то значение курса переустанавливается не по компасу а по жпс.

такая ситуация - задали мы поведение в ртл не смотреть курсом сторону возврата а летать всегда передом к примеру на север.
нажали ртл - у него нос смотрит на сервер - курс 0 - знает что лететь на юг на курс 180, нагунулся назад и попер, набрал скорость 10 мс в секунду -
срабатывает проверка расхождение курса компаса и жпс больше 60 градусов, скорость больше 9мс - срабатывает самолетная логика что пора отключть компас потому что врет и считать что курс 180, юг,
курс начинает тянуть гироскоп отвечающий за хеадинг вместо правильного по компасу севера - на юг, аппарат вместо правильного направления назад начинает уходить в сторону.

кстати не столь давно в теме задавался вопрос почему в ртл сначала начал возвращаться правильно а потом рванул в сторону - вот он ответ.
потому что если поведение в ртл стоит не дефолтное что нужно сначала развернуться лицом домой а потом лететь и вдруг привысил наземную скорость 9 м/с - получаешь пируэт.

для себя сделал вывод, нужно не превышать наземную скорость 5мс даже в ветер если летишь не мордой вперед,
для авторежимов надо ставить поведение чтоб летел мордой вперед

ENGINEERUS

а ведь это вполне может быть. У мня тоже стоит, не разворочивать по курсу.

RTemka

Я всегда ставлю лететь мордом вперед.
Летает даже когда компас врет и в лойтере унитазит.
Правда если летать по квадрату видно, что он то боком то передом летит 😃

strizhmax

Да ё-маё.
Вижу книгу, а в ней фигу.

365 if (use_compass()) {
…вырезал…
389 } else if (_flags.fly_forward && have_gps()) {тут пошло то, о чем говорится тут
428 }

Так что вся речь о полете, когда компаса нет.

starfair
alexeykozin:

для себя сделал вывод, нужно не превышать наземную скорость 5мс даже в ветер если летишь не мордой вперед,
для авторежимов надо ставить поведение чтоб летел мордой вперед

Так может расценить что это не фича и баг и сообщить разработчикам? Само собой, для текущей ситуации полезный совет! Но раз ветки кода разделены, по логике вещей, нужно и расчеты корректировать согласно тому, что многороторники это далеко не самолеты!

F_R

А у меня забивает на положение морды. Не разворачивает он её. Не помню уже за каким умыслом я не стал включать режим “мордой вперёд” 😃
Мне больше интересно, от куда могут ползти вибрации в плоскости Z? От пропов, виброперемещенмя и виброускорения, обычно, лежат в плоскости его вращения. Т.е. X и Y. Винты проверял - балансировка в норме.
Только, если провести балансировку системы “мотор+проп”, но ИМХО, не сильно улучшит картину…

Что посоветуете?

Зы. Лучи жёсткие, люминь. АРМ стоит на силиконовых стойках - амортизаторах.

alexeykozin
strizhmax:

Да ё-маё.
Вижу книгу, а в ней фигу.

точно, спс.
уже глаза слезятся от монитора.

по идее использование компаса для ахрс это не одно и тоже что он включен
в строке 351 функция
bool AP_AHRS_DCM::use_compass(void)

в ней со строки 336
// if the current yaw differs from the GPS yaw by more than 45
// degrees and the estimated wind speed is less than 80% of the
// ground speed, then switch to GPS navigation. This will help
// prevent flyaways with very bad compass offsets

int32_t error = abs(wrap_180_cd(yaw_sensor - _gps.ground_course_cd()));
if (error > 4500 && _wind.length() < _gps.ground_speed()*0.8f) {
if (hal.scheduler->millis() - _last_consistent_heading > 2000) {
// start using the GPS for heading if the compass has been
// inconsistent with the GPS for 2 seconds
return false;
}
тоесть компас может быть исключен из коррекции курса если аппарат летит задом наперед или даже боком …
зы: могу ошибаться, прошу не пинать

alexeykozin

продолжаю нудеть
весьма звучный флаг как set_fly_forward “впередлеталка” по идее должен исключать коррекцию компаса жпс курсом
раньше флаг явно задавался при инициализации ahrs в основном коде ардукоптера и самолета
в крайней прошивке такого нет, есть упоминание в LogReader.cpp но не совсем понятно в какиз случаях эта установка вызыввается толи только при наличии телеметрии толь при чтении лога а может вообще всегда

strizhmax

в мастере у дидронов все есть
ArduPlane/setup.pde:300: ahrs.set_fly_forward(true);
ArduPlane/system.pde:466: ahrs.set_fly_forward(true);
ArduPlane/test.pde:435: ahrs.set_fly_forward(true);
ArduPlane/test.pde:496: ahrs.set_fly_forward(true);

zveruga

Всем привет.
А никто не пробовал подключить телеметрию с АРМ через приемник с телеметрией? У него есть Rx Tx и на передатчике они есть, насколько я понял, если телеметрийный UART1 подать на приемник, то с передатчика на земле можно будет снимать все показания через Mission Planner?

strizhmax
zveruga:

А никто не пробовал подключить телеметрию с АРМ через приемник с телеметрией?


Пойдет?

zveruga

Спасибо, интересно. Но я имел ввиду вообще без участия пульта - снять телеметрию с Rx Tx приемника и через USB UART переходник подать на комп в МР. Как считаете возможно ли это, может кто-то делал?

blind_oracle
zveruga:

снять телеметрию с Rx Tx приемника и через USB UART

Приемник он ведь на коптере, нет? А мишен планер он на земле? Как вы их собрались коннектить по уарт? Или я что-то не понимаю в этой жизни? 😉

strizhmax
zveruga:

Как считаете возможно ли это, может кто-то делал?

Думаю возможно. Направление я задал. У FrSky порт на 9600 работает, учтите это.

tolya
F_R:

Поигрались с фильтром акселя: INS_MPU6K_FILTER. Поставил 30Гц. Коптер стал гораздо эмм… лучше летать. Более отзывчивые и плавнее, комфортнее стало им управлять

хотелось бы побольше узнать про этот параметр,какое значение оптимальное и на что влияет?до сих пор думал что это параметр отвечает только за разное отображение кривых вибраций в терминале

DWK
blind_oracle:

Приемник он ведь на коптере, нет?

Телеметрийный приёмник FrSky работает на приём и на передачу.

zveruga
blind_oracle:

Приемник он ведь на коптере, нет? А мишен планер он на земле? Как вы их собрались коннектить по уарт? Или я что-то не понимаю в этой жизни? 😉

Приемник на коптере подключается к АРМ, а передатчик на земле через УАРТ к компу.
Попробую - отпишусь.

Alexey_1811
zveruga:

Приемник на коптере подключается к АРМ, а передатчик на земле через УАРТ к компу. Попробую - отпишусь.

Можете не пробовать. Ничего не выйдет.

zveruga
Alexey_1811:

Можете не пробовать. Ничего не выйдет.

Потому что FrSky работает на 9600, а телеметрию выдает на 57600?

Олег24
zveruga:

Потому что FrSky работает на 9600, а телеметрию выдает на 57600?

Mavlink с трудом работает на 9600. Пробовал - толку ноль.