我从骑行中收集了一些加速度数据。它仍然具有重力,因为我想将手机的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');
似乎数据是对齐的,但也乘以一些奇怪的因素。我想念什么或做错什么了?
答案 0 :(得分:1)
我一个人发现我必须使用单位矢量-a当然不是。 只需使用unit_a
unit_a = a/norm(a);
现在一切都按计划进行。