Библиотека для определения положения с акселерометром и гироскопом - PullRequest
0 голосов
/ 10 декабря 2018

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

Я имею в виду, начиная с 0,0 (широта / долгота) и обновляя значения.Если нет библиотеки, я все еще ищу ссылки, чтобы получить подсказки о том, как делать математику.Я видел сообщения типа этот один или этот один, но я не нашел то, что искал.

Спасибо

1 Ответ

0 голосов
/ 12 декабря 2018

Если это может кому-нибудь помочь, я нашел именно ту тему, которую искал.Вот оно:

https://lb.raspberrypi.org/forums/viewtopic.php?t=127930

[ИЗД.]

Вот идея:

enter image description here

Алгоритм 2 :

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

Accroll = atan2( accy / (accy^2 + accz^2) )
Accpitch = atan2( accx / (accx^2 + accz^2) )

источник: http://franciscoraulortega.com/pubs/Algo3DFusionsMems.pdf

Accroll = atan2(accy, accz) 
Accpitch = atan2( -accx, sqrt(accy^2 + accz^2) ) 

source: https://www.nxp.com/files-tatic/sensors/doc/app_note/AN3461.pdf page 10

Алгоритм 3

Я думаю, что это должен быть дополнительный фильтр, как это может быть:

Расчет шага и крена с данными гироскопа:

Gyrpitch = gyrox * dt;
Gyrroll = gyroy * dt;

Расчет шага и крена после фильтра:

pitch = Gyrpitch * 0.98 + Accpitch * 0.02;
roll = Gyrroll * 0.98 + Accroll * 0.02;

Алгоритм 1

XH = mx cos(pitch) + my sin(pitch) sin(roll) + mz sin(pitch) cos(roll)
YH = my cos(roll) + mz sin(roll) 
yaw = atan2(−YH / XH)

где: m: источник данных магнитометра: http://franciscoraulortega.com/pubs/Algo3DFusionsMems.pdf

...