知识点:
定义:
1.世界坐标系 p13
2.笛卡尔坐标系 p13
3.旋转矩阵(用于表示姿态)记为 也可称为标准正交阵p14
4.方向余弦 p14
5.位姿 = 位置 + 姿态(四个矢量成一组表示位姿) p15
6.坐标平移 p16
7.坐标旋转 p17
8.齐次变换矩阵 p18 用于表示一般变换的旋转和平移
9.算子 p20
10.平移算子DQ p20 旋转算子RK(θ)p21
11.欧拉角 p30
12.转交排列设定法 p31
1.用三维位置矢量给世界坐标系中任何点定位矢量用一个左上标来表明坐标系
2.一组三个矢量可以用来确认一个姿态
旋转矩阵
3.旋转矩阵的逆矩阵等于它的转置
4.线性代数中正交阵的逆等于它的转置
5.正交阵是指满足AA^T=E或者A^T A=E的n阶方阵A,其中E为n阶单位阵。
6.旋转矩阵的行列式为1
7.旋转矩阵也可以称为标准正交阵
8.非标准正交阵的行列式是-1
9. 设A为n维方阵,若有A'=-A,则称矩阵A为反对称矩阵。
用一个三维列向量来描述位置
用一组三个三维列向量来描述一个姿态
用旋转矩阵和位置向量,一共四个列向量来描述一个位姿
坐标平移
当两个坐标系的姿态相同时,我们可以用矢量相加的方式来描述一个坐标系的矢量相对另一个坐标系的表示方法。
这里引入矢量PBORG来表示一个坐标系原点关于另一个坐标系原点的位置。
这样AP = BP + PBORG
坐标旋转
1.根据定义:旋转矩阵的各列模均为1,并且这些单位矢量均相互正交,有:
2.旋转矩阵的列描述的是B的单位矢量在A中的描述,所以旋转矩阵的行就是A的单位矢量在B中的描述。
3.齐次变换矩阵表示了一般变换的旋转和平移
算子
旋转算子:矢量经某一旋转R得到的旋转矩阵与描述某个坐标系相对参考坐标系旋转R所得的旋转矩阵是相同的。
变换算子:包含旋转R和平移Q的变换与描述某个坐标系相对于参考坐标系旋转R并平移Q的变换是相同的。
逆变换
用3个参数来表示旋转矩阵的方法:
X-Y-Z 固定角
使用条件:一开始坐标系和一个已知参考坐标系重合
注意事项:旋转次序是从右往左排列的
X-Y-Z固定角的逆问题 角度求解公式 p 29
Z-Y-X 欧拉角
三次绕固定轴旋转的最终姿态和以相反顺序绕运动轴坐标系转动的最终姿态相同
Z-Y-Z 欧拉角
逆问题角度求解公式p31
习题详解
从第二章开始:
我主要是补充书上没给答案的那部分,有的时候对书上答案难理解的地方做一些解释
2.1 【X-Y-Z固定轴】
2.2 【X-Y-Z固定轴】
按照题目旋转的顺序,从右向左写矩阵
ans =
0.0810 -0.8509 -0.5190
0.1313 0.5253 -0.8407
0.9880 0 0.1543
2.3 【Z-Y-X欧拉角】
2.4 就是将数据代入,不多赘述
2.5 RB坐标系的X轴方向的单位向量??
2.7
matlab代码
K = zeros(3,1);
disp('请输入K:');
for i = 1:3
K(i) = input('');
end
o = input('请输入θ:');
R = [K(1)*K(1)*(1-cos(o))+cos(o) K(1)*K(2)*(1-cos(o)-K(3)*sin(o)) K(1)*K(3)*(1-cos(o))+K(2)*sin(o);
K(1)*K(2)*(1-cos(o))+K(3)*sin(o) K(1)*K(2)*(1-cos(o))+cos(o) K(2)*K(3)*(1-cos(o))-K(1)*sin(o);
K(1)*K(3)*(1-cos(o))-K(2)*sin(o) K(2)*K(3)*(1-cos(o))+K(1)*sin(o) K(3)*K(3)*(1-cos(o))+cos(o)];
2.8 【公式在p29】
代入公式得:
回转角为: 0.0717
俯仰角为:0.3618
偏转角为:0.3880
2.10
代入公式得:
Z-Y-Z欧拉角:
β = 0.5242
α = -0.7854
γ = 0.7854
2.11
由线性代数的知识可知,两个N阶对称矩阵相乘可以互换。所以两个旋转矩阵是对称阵即可
2.13
由题意:TBC = TUC*TAU*TBA
MATLAB代码:
TUA = [0.866 -0.5 0 11;0.5 0.866 0 -3;0 0 1 9;0 0 0 1];
TBA = [1 0 0 0;0 0.866 -0.5 10;0 0.5 0.866 -20;0 0 0 1];
TCU = [0.866 -0.5 0 -3;0.433 0.75 -0.5 -3;0.25 0.433 0.866 3;0 0 0 1];
RUA = [0.866 -0.5 0;0.5 0.866 0;0 0 1];
PUA = [11;-1;8];
TAU = [RUA' -RUA'*PUA;0 0 0 1];
RCU = [0.866 -0.5 0;0.433 0.75 -0.5;0.25 0.433 0.866];
PCU = [-3 -3 3]';
TUC = [RCU' RCU'*PCU;0 0 0 1];
TBC = TUC*TAU*TBA
结果: