Интелектуальный , умный и независимый подвес камеры? Реально!

Gene

Если хотите понять как по трем осям понять куда наклон, почитайте здесь!

Спасибо, это я уже понял давно, но там вроде и об ускорениях-гравитации говорится. Постараюсь перечитать внимательно.

alexmos:

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

Алексей, мы наверное о разном… или у нас разные акселерометры 😃 Я свои не калибровал (может только один раз за все время), только задал уровень точности, и они вроде бы никуда не уплывают, в отличие от гироскопов – хотя и шумят. Имел в виду, что они в принципе не понимают разницы между гравитацией и линейным/угловым ускорением.

milkseller

ну , во первых, какова величина ускорения при вираже в 20 с !? разгон торможение , а сколько это в g =)?

Gene

ну , во первых, какова величина ускорения при вираже в 20 с

Достаточная, чтобы горизонт завалился 😦 И вопрос сколько это в g, на самом деле, не очень насущный. Измерять это можно хоть в попугаях. Насущный вопрос в том, как отличить попугаев ускорения (линейного или радиального) от попугаев притяжения Земли, и можно ли это в принципе, используя только данные 6DOF.

botvoed

AX=AdcRead(0)-512;
AY=AdcRead(1)-512;
AZ=AdcRead(2)-512;

AX=((float)X/1.66)*57.324;
AY=((float)Y/1.66)*57.324;
AZ=((float)Z/1.66)*57.324;

roll =atan(AX/sqrt(AY*AY+AZ*AZ))/0.0174527);
pitch=atan(AY/sqrt(AX*AX+AZ*AZ))/0.0174527);

Вот пример кода, работает на LIS акселях без калибровки.
При условии что, Vref = Vcc , то есть 0 акселя 512 на 10 битном ацп.
У этих акселерометров при наклоне оси на 90град значение 150 отсюда имеем коэфициент 150/90=1.66

Функция арктангенса требует значения в радианах - никак не в “попугаях”.
То что я привел в пример, есть простой инклинометр.

alexmos
Gene:

Достаточная, чтобы горизонт завалился И вопрос сколько это в g, на самом деле, не очень насущный. Измерять это можно хоть в попугаях. Насущный вопрос в том, как отличить попугаев ускорения (линейного или радиального) от попугаев притяжения Земли, и можно ли это в принципе, используя только данные 6DOF.

Мои знания подсказывают, что невозможно. Но вот Зенмьюз как-то держит, и на видео не видно чтобы при активных полетах у него гулял горизонт.
Можно конечно уменьшить вклад акселя до минимальных значений, и больше довериться гироскопу. Но все равно, если летать минуту по дуге - аксель даст о себе знать. А полностью отказаться от акселя нельзя.

Sodefi

а если добавить гпс и 3х осевой компас?

milkseller

а толку от них в этом применении !?

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

я думаю , решение задачи в грамотном фильтре .т.е. интегрируя гиры мы же получаем углы, сравниваем их с акселями .уход даже у говногиры в пределах минуты двух всё равно будет никакой . меньше 10 градусов за 2 минуты .а если их изначально хорошо откалибровать , посмотреть смещение нуля на разных температурах, то можно этот уход минимизировать… это всё конечно в условиях отсутствия вибраций , но которых и по определению на подвесе быть не должно (=

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

Sir_Alex
Gene:

Достаточная, чтобы горизонт завалился И вопрос сколько это в g, на самом деле, не очень насущный. Измерять это можно хоть в попугаях. Насущный вопрос в том, как отличить попугаев ускорения (линейного или радиального) от попугаев притяжения Земли, и можно ли это в принципе, используя только данные 6DOF.

В принципе, эта же задача решается в полетных контроллерах. Аксель там играет второстепенную роль. Когда происходит ускорение, больше доверия к гирам, со временем, аксель помогает увидеть горизонт (если конечно ускорение пропадет). Есть еще алгоритмы для компенсации постоянного ускорения (скажем если летаем по кругу), тут я правда не подскажу, как именно это делается. Попробуйте глянуть документ, может в нем есть описание: Direction Cosine Matrix IMU: Theory, авторы William Premerlani and Paul Bizard

alexmos
milkseller:

по дуге , по прикидкам, доля центросремительного ускорения будет совсем мелкая

Не поделитесь рассчетами, как у вас получается мелкие значения? По моим прикидкам, при движении со скоростью 20км/ч по дуге 10м, получается 21 градус отклонения! Если скажете, что так никто не летает - хорошо, по дуге 100м (такие дуги даже не видно глазом), получаем 2.2 градуса отклонения - в кадре все равно это видно.
Рассчеты: a = v*v/R, angle = atan(a/g)*180/PI

Gene
Sir_Alex:

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

Там решается задача полета. Я уже писал раньше в этой теме, разница между полетным контроллером и контроллером подвеса в том, что первому надо выравниваться перпендикулярно суммарному вектору сил (среди которых и притяжение Земли, и ускорение), а подвесу желательно выравниваться в горизонт, а ускорения игнорировать. А так, безусловно, аксель второстепенен после гироскопов – но он все равно необходим, потому что гирам надо по чему-то себя проверять.

Sir_Alex
Gene:

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

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

milkseller

про матрицы ориентации это всё понятно .

Алексей , считал так же , только машинально перевёл метры радиуса в см, как будто бы это километры … получил в 1000 меньше (= пересчитал - сошлось.Извиняюсь.

щас раскопаю старые записи , может найду ответ…

kren-DEL
Sir_Alex:

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

Точнее не скажешь! Вспомните, в ОСД есть линия горизонта, вот вопрос, по какому алгоритму они определяют? ведь данные для просчёта этой линии идут от основной платы? их можно и использовать для поворота

Piranha
kren-DEL:

Вспомните, в ОСД есть линия горизонта,

Вспромнили? А теперь внимательно посмотрите насколько эта линия отстает от реального горизонта и как долго выравнивается

kren-DEL
Piranha:

А теперь внимательно посмотрите насколько эта линия отстает от реального горизонта и как долго выравнивается

Интересно посмотреть-бы на отклонения горизонта в подвесе и на коптере, сильно ли он расходится с истиной… может можно использовать данные с основного датчика для поправок горизонта?

Gene
Sir_Alex:

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

Неверно! Полетному контроллеру не надо знать, где горизонт, он и не знает. Он знает, куда направлен сумарный вектор сил (притяжение + ускорение), и по нему выравнивается, чтобы тяга винтов его компенсировала. В случае равномерного движения или покоя этот вектор перпендикулярен земле, а в прочих случаях – нет.

У подвеса же другая задача – выравняться в горизонт; ему ускорения должны быть фиолетовы; для этого он должен уметь отделять мух от котлет, то бишь ускорение от притяжения Земли.

Aleks72
Gene:

Он знает, куда направлен сумарный вектор сил (притяжение + ускорение), и по нему выравнивается, чтобы тяга винтов его компенсировала.

а если взять и аккуратно толкнуть висящий в воздухе коптер вперёд - куда он отклонится от горизонта? А никуда - он от разгона до остановки будет плыть горизонтально. Или у меня неправильный коптер?

Gene
Aleks72:

а если взять и аккуратно толкнуть висящий в воздухе коптер вперёд - куда он отклонится от горизонта? А никуда - он от разгона до остановки будет плыть горизонтально. Или у меня неправильный коптер?

Коптер правильный, только Вы неправильно описываете его поведение 😃 В момент толчка он получает ускорение, но это ускорение длится недолго (меньше секунды), и поэтому не успевает сильно повлиять на наклон. Просто коррекция акселями гироскопов за такое время не успевает накопиться достаточно, чтобы Вы заметили этот наклон. А дальше коптер летит по инерции без ускорения.

Вот если ускорение будет действовать десяток секунд или больше, Вы его почувствуете и заметите. Такое долго действующее ускорение возникает, например, когда коптер летит по дуге. Вы в такие моменты не замечаете, куда он хочет выровняться, потому что он и не полетит по дуге без наклона, вам НАДО его наклонить, чтобы он полетел по дуге 😃

Aleks72

Евгений, я полностью согласен с тем, что вы описываете, я не согласен с другим (хотя, может на самом деле и ошибаюсь)

Gene:

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

Т.е., по вашей логике, он должен противостоять ускорению - и положительному, и отрицательному. В таком случае, он должен стремиться не только статичное положение сохранять, но и постоянную скорость - если уж разогнался, то не остановится, пока не упадёт. Так?

Brandvik
Gene:

Неверно! Полетному контроллеру не надо знать, где горизонт, он и не знает. Он знает, куда направлен сумарный вектор сил (притяжение + ускорение), и по нему выравнивается, чтобы тяга винтов его компенсировала.

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