Почему Ahrsfilter оценивает направление с дополнительным поворотом на 90 градусов? - PullRequest
0 голосов
/ 26 марта 2020

Я использую Ahrsfilter из MATLAB Sensor Fusion Toolbox для соединения акселерометра, магнитометра и гироскопа для оценки курса Android телефона. Я использую систему отсчета NED (по умолчанию) и задаю формат ориентации в качестве матрицы вращения, а затем преобразую его в углы Эйлера. Вот фрагмент кода.

Fs = 100;
decim = 1;

fuse = ahrsfilter('SampleRate',Fs,'DecimationFactor',decim,'OrientationFormat','Rotation matrix');

rm = fuse(accelerometerReadings,gyroscopeReadings,magnetometerReading); % Note : Yaw is calculated with respect to the magnetic north

eul = [];
for i=1:length(rm)
    eul = [eul;rotm2eul(rm(:,:,i),'ZYX');];
end

euld = rad2deg(eul);

и вот вывод: введите описание изображения здесь

Фактический заголовок телефона (ось Y телефона, который это угол наклона) был на истинном севере. Чтобы оценить курс, я использую угол поворота, чтобы вывести направление телефона (потому что угол поворота эквивалентен углу компаса).

Проблема: кажется, что угол рыскания хорошо работает для оценки курса, однако есть еще 90 градусов к фактическому курсу. Как я понимаю, угол поворота должен быть около 0 в качестве угла компаса, однако он показывает 90 градусов. Примечание: я также использовал кватернион вместо матрицы вращения, и у меня была та же проблема.

...