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

Gene
milkseller:

3 гиры 3 акселя достаточно.строго говоря гира по z вообще может не учавствовать.
Т.е. Аксель по z .оговорился…

Можете объяснить, как? Я сколько ни бьюсь, не выходит. Акселерометрам все равно, вызван ли вектор силы притяжением или ускорением. Насколько я помню школьный курс физики, согласно ОТО ускорение принципиально неотличимо от гравитации. На гироскопы можно полагаться относительно недолго, пока они не уплыли (ведь они потихоньку подстраиваются под аксели, а аксели-то у нас и врут!) Когда маневр ограничивается парой секунд, ошибка не успевает накопиться. Но попробуйте, скажем, на полной скорости заложить длинный вираж, длящийся секунд 20 – вот тут-то вранье акселей и вылезет во всей красе! Согласен, ситуация нетипичная, но она бывает.

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

botvoed
alexmos:

Согласен с Евгением, енкодер только чтобы кнтролировал пропуски шагов, не нужен. Не должен шаговик пропускать шаги - иначе видео может быть испорчено в любой момент.

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

Я еще раз повторюсь, что не советовал изобретать контролер шаговика, а предлагал управлять мотором как трехфазным на основе обратной связи!

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

alexmos
Gene:

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

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

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:

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

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

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