%%ZYX欧拉角+P转齐次变换矩阵T %输入角度 R_z=input('Rotate around the z-axis in alpha ='); R_y=input('Rotate around the y-axis in beta ='); R_x=input('Rotate around the x-axis in gamma ='); %输入位置矢量 PBA_x = input ('X-axis distance = '); PBA_y = input ('Y-axis distance = '); PBA_z = input ('Z-axis distance = '); %只要有一个输入为空,输出警告 ifisempty(R_z)+isempty(R_y)+isempty(R_x)+isempty(PBA_x)+isempty(PBA_y)+isempty(PBA_z)>0 fprintf('Error!'); else R=rotz(R_z)*roty(R_y)*rotx(R_x);%ZYX T = [R, [PBA_x; PBA_y; PBA_z]; 0001]; %T=SE3(R,[PBA_x PBA_y PBA_z]);%输出齐次变换矩阵 %计算逆矩阵 T_inv = inv(T); %符号计算逆矩阵 R_inv = R'; % 旋转矩阵的逆矩阵 x = -R_inv * [PBA_x; PBA_y; PBA_z]; % 位置矢量的逆矩阵 T_inv_sym = [R_inv, x; 0001]; %验证两者是否相等 disp('T_inv = '); disp(T_inv); disp('T_inv_sym = '); disp(T_inv_sym); disp('T_inv - T_inv_sym = '); disp(T_inv - T_inv_sym); end
结果
d
题目
令\(^{A}T_{B}\)为a中i的解, \(^{B}T_{C}\)为a中ii的解.
i. 计算\(^{A}T_{C}\),
并用变换图说明关系. 对\(^{C}T_{A}\)作同样的处理.
ii. 已知i中的\(^{A}T_{C}\)和\(^{B}T_{C}\), 假定\(^{A}T_{B}\)未知,
计算它并与已知的答案进行比较.
iii. 已知i中的\(^{A}T_{C}\)和\(^{A}T_{B}\), 假定\(^{B}T_{C}\)未知,
计算它并与已知的答案进行比较.