我有一个带有2个旋转关节的2DOF机器人,如下图所示。我正在尝试(使用MATLAB)计算移动它所需的扭矩,但我的答案与我的预期不符。
br /> $$
\ begin {array} {c | cccc}
关节&a&\ alpha&d&\ theta \\
\ hline
1&0& \ pi / 2&0&\ theta_1 \\
2&1&0&0&\ theta_2 \\
\ end {array}

我正在尝试使用本文第5/6页中所述的Euler-Lagrange技术来计算产生给定加速度所需的扭矩。
特别是,
$$ T_i(inertial)= \ sum_ {j = 0} ^ nD_ {ij} \ ddot q_i $$
其中
$$ D_ {ij} = \ sum_ {p = max(i,j)} ^ n Trace(U_ { pj} J_pU_ {pi} ^ T)$$

$$
J_i = \ begin {bmatrix}
{(-I_ {xx} + I_ {yy} + I_ {zz})\ over 2}和I_ {xy}&I_ {xz}&m_i \ bar x_i \\
I_ {xy}&{(I_ {xx} -I_ {yy} + I_ {zz })\ over 2}&I_ {yz}&m_i \ bar y_i \\
I_ {xz}&I_ {yz}&{(I_ {xx} + I_ {yy} -I_ {zz})\超过2}和m_i \ bar z_i \\
m_i \ bar x_i和m_i \ bar y_i&m_i \ bar z_i&m_i \ e nd {bmatrix}
$$

由于遇到麻烦,我试图创建一个最简单的示例,但我仍然出错了。为此,我试图计算以恒定的1 $ {rad \ over s ^ 2} $加速$ \ theta_1 $所需的惯性转矩。由于$ \ theta_2 $恒定为0,我认为这应该消除所有陀螺/科里奥利力。我使链接1失重,因此其伪惯性矩阵为0。我已经为链接2计算了我的伪惯性矩阵:
$$
I_ {xx} = {mr ^ 2 \ over 2} = 0.0025 \\ I_ {yy} = I_ {zz} = {ml ^ 2 \ over 3} = 2/3
$$
$$
J_2 = \开始{bmatrix }
1.3308&0&0&-1 \\
0&0.0025&0&0 \\
0&0&0.0025&0 \\
-1&0& 0&2 \\
\ end {bmatrix}
$$

关节1的预期扭矩:
$$
T_1 = I \ ddot \ omega \\
T_1 = {ml ^ 2 \ over 3} \ times \ ddot \ omega \\
T_1 = {2 \ times1 \ over3} \ times1 \\
T_1 = {2 \ over3} Nm
$$

我的关节1代码计算出的扭矩:

q = [0 0];
qdd = [1 0];
T = calcT(q);
calc_inertial_torque(1, T, J, qdd) 


$$
T_1 = {4 \ over3} Nm
$$

所以这是我的问题,我的代码$ T_1 $与我的简单机制$不符T_1 $。

被调用的关键功能如下所示。但我很高兴能将其扩展到更多自由度。

#1 楼

您没有显示轴,因此数学运算有些困难,但是基于$ J_2 $的底行,看起来y沿着链接2的长度。如果是这种情况,那么我希望旋转和x和z具有相同的惯性矩,因为每个旋转都会使圆柱体绕着端部而不是绕其纵轴旋转。

这意味着Ixx和Izz应该在其符号不同的地方取消,例如在J11和J33中,仅保留Iyy / 2,但是我看到的是零。因为这是真实链接的模型,所以Iyy必须是某种东西。我假设$ mr ^ 2/2 $或0.0025。这应该在J11和J33中。我还没有检查过J22的数学运算,但是鉴于Iyy并没有在那里取消运算,而您最终给出了非常“回合”的2/3作为答案,我怀疑它也是错误的。

在J2矩阵上检查数学和/或为链接2的图纸提供一组数据(dati?)(请注意:数据的复数是数据,但我认为这会造成混淆在我指的是图形参考点时要求“带有一组数据的图形”,因此我将其保留为基准)。

评论


$ \ begingroup $
谢谢,我将再看看我的惯性矩阵。同时,我已将轴添加到图中。
$ \ endgroup $
–robot_overlord
2015年12月11日23:33

$ \ begingroup $
我认为您对惯性矩阵是正确的,我已经对其进行了更新,它使答案更接近但仍是2倍。
$ \ endgroup $
–robot_overlord
2015年12月11日23:43

$ \ begingroup $
@robot_overlord-J11的公式是<材料束>除以2。您已经将(正确签名的)惯性矩加在一起,但未能除以2。
$ \ endgroup $
–卡盘
2015年12月12日,下午1:38

$ \ begingroup $
有趣的是,您正在从末端执行器查看链接2,并定义了负惯性矩。我所做的所有工作都从固定框架开始构建了一个运动树,因此链接2的框架的原点将与关节2的原点重合。
$ \ endgroup $
–卡盘
2015年12月12日在1:42