Matlab 上的正向运动学
Forward Kinematics on Matlab
希望你一切都好。我目前正在研究正向运动学,并试图在 MATLAB 上为一个简单的机械臂实现这些想法:
如果关节逆时针旋转 45 度,我想计算 q3 的变换矩阵。
论文的最后一部分显示了末端执行器框架的变换矩阵。
这是我在 MATLAB 上尝试过的:
1 clc
2 clear
3 omega3 = [0 0 1]';
4 v3 = [0 -2 0]';
5 omega3Bracket = [0, -omega3(3), omega3(2); omega3(3), 0, -omega3(1); -omega3(2), omega3(1), 0];
6 S3Bracket = [omega3Bracket, v3; 0 0 0 0];
7 expm(S3Bracket.*pi/4)
在第三行和第四行,我创建了 angular 和线速度矢量。
在第五行,我将 angular 速度矢量转换为 3x3 斜对称矩阵。
在第六行,我创建了斜对称螺旋矩阵。
在第七行,我使用矩阵指数来计算变换矩阵。但是,我得到的矩阵的最后一列与我应该能够得到的不同。你知道这样做的原因吗?我做错了什么?
如果论文中的最终答案是正确的,那么末端执行器臂的长度应该是1个单位,而你没有提到这一点。
同样在代码中,您应该将最终答案乘以 M 矩阵。
所以代码应该是:
clc
clear
omega3 = [0 0 1]';
v3 = [0 -2 0]';
omega3Bracket = [0, -omega3(3), omega3(2); omega3(3), 0, -omega3(1); -omega3(2), omega3(1), 0];
S3Bracket = [omega3Bracket, v3; 0 0 0 0];
M = [1 0 0 3; 0 1 0 0;0 0 1 0; 0 0 0 1];
expm(S3Bracket*pi/4)*M
注意M(1,4) = 3,也就是开始时原点到末端执行器的距离,棱柱关节2个单位,末端执行器手臂1个单位
希望你一切都好。我目前正在研究正向运动学,并试图在 MATLAB 上为一个简单的机械臂实现这些想法:
如果关节逆时针旋转 45 度,我想计算 q3 的变换矩阵。
论文的最后一部分显示了末端执行器框架的变换矩阵。
这是我在 MATLAB 上尝试过的:
1 clc
2 clear
3 omega3 = [0 0 1]';
4 v3 = [0 -2 0]';
5 omega3Bracket = [0, -omega3(3), omega3(2); omega3(3), 0, -omega3(1); -omega3(2), omega3(1), 0];
6 S3Bracket = [omega3Bracket, v3; 0 0 0 0];
7 expm(S3Bracket.*pi/4)
在第三行和第四行,我创建了 angular 和线速度矢量。
在第五行,我将 angular 速度矢量转换为 3x3 斜对称矩阵。
在第六行,我创建了斜对称螺旋矩阵。
在第七行,我使用矩阵指数来计算变换矩阵。但是,我得到的矩阵的最后一列与我应该能够得到的不同。你知道这样做的原因吗?我做错了什么?
如果论文中的最终答案是正确的,那么末端执行器臂的长度应该是1个单位,而你没有提到这一点。 同样在代码中,您应该将最终答案乘以 M 矩阵。 所以代码应该是:
clc
clear
omega3 = [0 0 1]';
v3 = [0 -2 0]';
omega3Bracket = [0, -omega3(3), omega3(2); omega3(3), 0, -omega3(1); -omega3(2), omega3(1), 0];
S3Bracket = [omega3Bracket, v3; 0 0 0 0];
M = [1 0 0 3; 0 1 0 0;0 0 1 0; 0 0 0 1];
expm(S3Bracket*pi/4)*M
注意M(1,4) = 3,也就是开始时原点到末端执行器的距离,棱柱关节2个单位,末端执行器手臂1个单位