通过重力将加速度数据对齐到一个轴

问题描述 投票:0回答:1

我有一些骑自行车收集的加速度数据。它仍然具有引力,因为我想将手机的z轴与现实世界的z轴对齐。手机几乎与地面平行安装。 (另外两个轴不必与另一个轴匹配,因为只有加速数据似乎存在一些问题。) 为了获得我计算的Rotationmatrix:

a_x = mean(data(:,1));
a_y = mean(data(:,2));
a_z = mean(data(:,3)); and defined
a = [a_x;a_y;a_z];
z = [0;0;1];
R=fcn_RotationFromTwoVectors(a,z);

并把它放在功能中

function R=fcn_RotationFromTwoVectors(A,B)
v = cross(A,B);
ssc = [0 -v(3) v(2);v(3) 0 -v(1); -v(2) v(1) 0];
R = eye(3) + ssc + ssc^2*(1-dot(A,B))/(norm(v))^2;
end

它计算Rotationmatrix。但是当我计算时

data_calib = rot90(R*data');

似乎数据是对齐的,但也乘以一些奇怪的因素。我错过了什么或做错了什么?

android matlab accelerometer imu
1个回答
1
投票

我自己发现,我不得不使用单位向量 - 当然不是。只需要使用unit_a

unit_a = a/norm(a);

现在一切都按计划进行。

© www.soinside.com 2019 - 2024. All rights reserved.