0

希望你很好。我目前正在研究正向运动学,并试图在 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)

在第三行和第四行,我创建了角和线速度矢量。

在第五行,我将角速度矢量转换为 3x3 斜对称矩阵。

在第六行,我创建了斜对称螺丝矩阵。

在第七行,我使用矩阵指数来计算变换矩阵。但是,我得到的矩阵的最后一列与我应该能够得到的不同。你知道反对的原因吗?我究竟做错了什么?

4

1 回答 1

1

如果论文中的最终答案是正确的,那么末端执行器臂的长度应该是 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 个单位。

于 2020-06-25T15:43:05.887 回答