从3 d变换提取旋转辊距偏航角

196(30天)
我正在寻找一种方式来提取旋转角度(横滚、俯仰和偏航)从返回的一个变换矩阵:
t = imregtform(移动,固定的,仿射的优化器,指标);
到目前为止,我已经尝试函数
tform2eul (t.T)
之一但无论是ZYX股票”或“ZYZ”或“XYZ”(即像tform2eul (t.T“ZY 'X”)等)似乎返回预期的结果。
有内置函数像“getRollPitchYaw”或类似的东西?如果不是你有什么建议?
不是说的4 x4矩阵齐次坐标(不是3 x3矩阵!)
1评论
大卫Goodmanson
大卫Goodmanson 2021年10月1日
你有先验知识的轴旋转和旋转矩阵的乘法运算的顺序吗?(我想是左上角3 x3的子矩阵)。

登录置评。

答案(3)


马特·J
马特·J 2021年10月1日
编辑:马特·J 2021年10月1日
quadricFit 类在这个文件交换包
静态方法,将这样做。的例子。
Tyaw = quadricFit.R3d(45岁[0,0,1])% 45度偏航变换
Tyaw = 3×3
1.0000 0.7071 - 0.7071 0.7071 - -0.7071 0 0 0 0
Tpitch = quadricFit.R3d(20日[1 1 0])% 20度变换
Tpitch = 3×3
0.9698 -0.0302 0.2418 -0.0302 0.9698 0.2418 -0.2418 -0.2418 0.9397
ypr = quadricFit.rot2ypr (Tpitch * Tyaw)%恢复偏航/沥青/卷角
ypr = 1×3
45 20 0
4评论

登录置评。


大卫Goodmanson
大卫Goodmanson 2021年10月9日
编辑:大卫Goodmanson 2021年10月9日
你好,“在”
就其价值而言,这是一个版本,发现三个旋转角度th1、th2, th3从三维旋转矩阵定义如下。
角度th1和th3运行整个角范围从-180年到180年但th2仅限于-90年< th2 < 90 tait-bryan角度,为欧拉角0 < th2 < 180。没有这种限制有两套解决方案角度对于一个给定的R,而不是一套。
代码不直接解决奇异情况th2结束的范围。我相信这些都是万向节锁情况(阿波罗13号)。然而,如果您构建一个矩阵R与已知的角度和看看答案同意,对任何分歧> 10 ^ 9角然后th2必须在一个或另一端的范围在10 ^ 4度。
函数θ= anglesR (R, str)
%解决三维旋转矩阵R的Ra (th1) * Rb (th2) * Rc (th3)
%的角度th1、th2 th3;每个的a、b c是x, y, z。
%输入str旋转坐标轴的三个字母的字符串,如“yzx”。
%连续沿着相同的轴旋转,如“xxy”是不允许的。
% 1日和3日沿着不同的轴旋转tait-bryan yzx”等,
%沿着同一轴如“xzx”是欧拉。12的可能性。
%输出向量(th1 th2 th3)和角度,
% -180 < (th1 th3) < 180;-90 < th2 < 90 (tait-bryan), 0 < th2 < 180(欧拉)。
%,请参阅下面的角限制和矩阵Rx,, Rz
θ= 0 (1、3);
%相似变换矩阵
通过= [0 0 1;0 1 0 1 0 0];% x < - - > z (th)——> y (th)
Ry90 = [0 0 1; 0 1 0;1 0 0];% y旋转90度
C = [0 0 1; 1 0 0;0 1 0,);% cycic, x, y, z - - > > x
signy = 1;
%水谷RaRyRb
如果str (2) = =“x”
R = C * R / C;
elseifstr (2) = =“z”
C = C \ R *;
结束
% tait-bryan, RxRyRz变换
如果所有(str = =“xzy”)| (str = =“yxz”)| (str = =“zyx股票”)
由* R / R =;
signy = 1;
结束
%欧拉,RxRyRx变换
如果所有(str = =“xzx”)| (str = =“yxy”)| (str = =之一的zyz”)
= Ry90 * R / Ry90;
结束
如果str (1) ~ = str (3)% tait-bryan
θ(2)= signy * asind (R (1、3));
θ(1)= atan2d (R - R (2,3), (3));
θ(3)= atan2d (R - R (1、2), (1,1));
其他的%欧拉
θ(2)= acosd (R (1,1));
θ(1)= atan2d (R (2, 1), - R (3,1));
θ(3)= atan2d (R (1、2)、R (1、3));
结束
结束
%的旋转物体的坐标。逆时针方向
%看着旋转轴线旋转的页面。
%
% (1 0 0 [c 0 [c - s 0
% Rx c = 0 = 0 1 0 Rz = s c - s变化0
% 0 c - s 0 c] 0 0 1]
%
% tait-bryan RxRyRz
% (c2c3 -c2s3 s2
%。。-s1c2
%。。c1c2]
%
%欧拉RxRyRx
% (c2 s2s3 s2c3
% s1s2。。
% -c1s2。。]

标签

下载188bet金宝搏

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!