Компоненты силы тяжести акселерометра

Я знаю, что этот вопрос много раз уже определенно решен где-нибудь, просветите меня, если Вы знаете об их существовании, спасибо.

Быстрое краткое изложение: Я хочу вычислить из 3 акселерометров оси компонент силы тяжести на каждой из этих 3 осей. Я использовал 2 оси бесплатные схемы тела для разработки компонента силы тяжести акселерометра в мировом X-Z, Y-Z и осях X-Y. Но решение кажется немного прочь, приемлемо для крайних случаев, когда только 1 ось акселерометра подвергнута силе тяжести, но для продольного и поперечного крена обоих 45 градусов, объединенная общая величина больше, чем сила тяжести (полученный Xa^2+Ya^2+Za^2=g^2; Xa, Ya и Za являются чтениями акселерометра в своих X, Y и оси Z).

Больше детали: устройство является Nexus One, и имейте датчик магнитного поля для азимута, продольного и поперечного крена в дополнение к акселерометру с 3 осями.

В оси в мире (с Z в том же направлении как сила тяжести, и или X или Y указывает на Северный полюс, не думают, что это имеет значение очень?), я предположил, что мое устройство имеет подачу (P) на оси Y-Z и списке (R) на оси X-Z. С этим я использовал простой аккуратный для получения: Sin(R) =Ax/Gxz Cos(R) =Az/Gxz Tan(R) =Ax/Az

Существует другой набор для подачи, P.

Теперь я определил силу тяжести, чтобы иметь 3 компонента в оси в мире, Gxz, который измерим только в оси X-Z, Gyz для Y-Z и Gxy для оси X-Y. Gxz^2+Gyz^2+Gxy^2=2*G^2, который - 2G то, потому что сила тяжести эффективно включена дважды в этом определении.

О, и ось X-Y производит что-то более экзотическое... Я объясню при необходимости позже.

От этих уравнений я получил формулу для Азимута и удалил коричневые операции, потому что я не знаю, как обработать tan90 вычисления (это - бесконечность?).

Таким образом, мой вопрос, кто-либо знает, сделал ли я это право/несправедливость или способный указать на меня на правильное направление?

Спасибо! DVD

7
задан Dvd 7 June 2010 в 01:30
поделиться

3 ответа

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

Хорошее место для начала исследования - http://www.diydrones.com/ . Там ребята уже решили эту проблему в контексте автопилотов самолетов. Есть тонна высококачественного открытого исходного кода, на который есть ссылки с этого сайта, а также обсуждения математических расчетов.

1
ответ дан 7 December 2019 в 07:40
поделиться

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

Как физик я воспитан на углах Эйлера вместо тангажа-рыскания-крена, но смотрю на http://en.wikipedia.org/ wiki / Yaw, _pitch, _and_roll Я бы вычислил это следующим образом: Предположим, что ваше устройство изначально ориентировано в глобальной системе координат, так что сила тяжести равна gvec: = {0,0, -g} (в локальной системе координат). Теперь нам нужно вычислить локальные координаты gvec, когда мы проходим рыскание-тангаж-крен (рыскание ничего не делает, как вы упомянули). Для меня это проще всего с матрицами вращения: мы должны изменить знак углов, поскольку gvec остается на месте. Я сделаю это с помощью Mathematica, потому что это мой молоток, а это гвоздь

yaw = RotationMatrix[-yawangle,{0,0,1}];
pitch = RotationMatrix[-pitchangle, {0,1,0}];
roll = RotationMatrix[-rollangle,{1,0,0}];
gvec={0,0,-g}
yaw.gvec
pitch.yaw.gvec
roll.pitch.yaw.gvec

На выходе получаются локальные координаты для gvec до рыскания и после рыскания, тангажа и крена (поэтому последняя строка ниже должна Ваш ответ):

{0,0,-g}
{0,0,-g}
{g Sin[pitchangle],0,-g Cos[pitchangle]}
{g Sin[pitchangle],-g Cos[pitchangle] Sin[rollangle],-g Cos[pitchangle] Cos[rollangle]}
5
ответ дан 7 December 2019 в 07:40
поделиться

Спасибо, Janus! Ваше объяснение как бы просветило меня относительно матрицы вращения. И последняя строка действительно решила мою проблему!

Теперь мне просто нужно переделать диаграммы свободных тел, чтобы выяснить, что я сделал неправильно... Я уже обнаружил, что у меня не должно было быть X-Y компонента гравитации, так как гравитация ортонормальна к оси X-Y...

Спасибо еще раз!

Edit: follow up on this, the last line: {g Sin[pitchangle],-g Cos[pitchangle] Sin[rollangle],-g Cos[pitchangle] Cos[rollangle]}

Я обнаружил, что вместо -g Cos[pitchangle] Sin[rollangle] Sin[roll] из моей диаграммы свободного тела больше похоже на реальное ускорение.

Что я не могу понять сейчас, так это последний компонент -g Cos[pitchangle] Cos[rollangle] сейчас она идеальна для малых углов тангажа и крена, и она прекрасно работает для угла тангажа или крена, в то время как другой угол остается равным 0, но отклонение становится значительным, когда и тангаж, и крен больше не составляют малого угла (скажем, 40 градусов). На самом деле я также понял, что для достижения 45 крена и 45 тангажа на Nexus One, телефон будет иметь 0 показаний по оси Z, а по X и Y ускорение 6,8 примерно. В то время как результирующая формула умножения матрицы вращения при 45 крене и 45 тангаже будет равна 0,5 гравитации.

Что-то не так с выходом датчика ориентации? Или так должны работать углы продольного и поперечного наклона?

Кто-нибудь знает, как это учесть?

Спасибо!

0
ответ дан 7 December 2019 в 07:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: