平面三自由度机器人动力学建模与仿真

这篇具有很好参考价值的文章主要介绍了平面三自由度机器人动力学建模与仿真。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

网上二自由度机器臂动力学分析有很多,三自由度比较少,碰巧本科课设需要完成相关项目,分享一些经验供参考。

机器臂建模

实际的三连杆机器臂的结构相对较复杂,很难进行精确地描述,因此,在本文中利用简化的数学模型进行讨论。简化条件如下:

  1. 假设机器臂是刚性结构,不考虑形变;
  2. 忽略各构件之间的摩擦力;
  3. 假设机器臂的连杆是密度均匀的刚体。

平面三连杆机器臂模型结构如图1所示, m i m_i mi 为第 i i i 杆的质量, L i L_i Li i i i 杆的长度, L c i L_{ci} Lci i i i 杆的质心到前一关节的长度, J i J_i Ji 为第 i i i 杆的转动惯量。

平面三自由度机器人动力学建模与仿真

对于平面三连杆机器臂而言, q 1 q_1 q1 q 2 q_2 q2 q 3 q_3 q3 唯一地确定了其位置, q 1 q_1 q1 q 2 q_2 q2 q 3 q_3 q3 的一阶导数和二阶导数确定了其运动状态,它们是动力学描述所需的基础变量。

1、拉格朗日方程

平面三连杆机器臂的拉格朗日算子为动能和势能之差,即:

L ( q , q ˙ ) = T ( q , q ˙ ) − U ( q ) L(q,\dot{q})=T(q,\dot{q})-U(q) L(q,q˙)=T(q,q˙)U(q)
其中, T ( q , q ˙ ) T(q,\dot{q}) T(q,q˙) U ( q ) U(q) U(q) 分别是机器臂的动能和势能。

基于上面的拉格朗日算子,可得到平面三连杆机器臂的拉格朗日动力学方程为:
d d t ∂ ∂ q ˙ i L ( q , q ˙ ) − ∂ ∂ q i L ( q , q ˙ ) = τ i \frac{d}{{dt}}\frac{\partial }{{\partial {{\dot q}_i}}}L(q,\dot q) - \frac{\partial }{{\partial {q_i}}}L(q,\dot q) = {\tau _i} dtdq˙iL(q,q˙)qiL(q,q˙)=τi
其中, τ i \tau _i τi 是作用在第 i i i 杆的驱动力矩。进一步化简拉格朗日方程可以进一步表达为:
d d t ∂ ∂ q ˙ i T ( q , q ˙ ) − ∂ ∂ q i T ( q , q ˙ ) + ∂ ∂ q i U ( q ) = τ i \frac{d}{{dt}}\frac{\partial }{{\partial {{\dot q}_i}}}T(q,\dot q) - \frac{\partial }{{\partial {q_i}}}T(q,\dot q) + \frac{\partial }{{\partial {q_i}}}U(q) = {\tau _i} dtdq˙iT(q,q˙)qiT(q,q˙)+qiU(q)=τi

2、动力学模型

将拉格朗日方程写成动力学方程的表达方式:
M ( q ) q ¨ + C ( q , q ˙ ) + G ( q ) = τ M(q)\ddot q + C(q,\dot q) + G(q) = \tau M(q)q¨+C(q,q˙)+G(q)=τ
其中, τ = [ τ 1 τ 2 τ 3 ] T \tau = { {\begin{bmatrix}{} {{\tau _1}}&{{\tau _2}}&{{\tau _3}} \end{bmatrix}} ^T} τ=[τ1τ2τ3]T 是控制力矩向量, q ¨ = [ q ¨ 1 q ¨ 2 q ¨ 3 ] T \ddot q = {\begin{bmatrix}{} {{\ddot q_1}}&{{\ddot q_2}}&{{\ddot q_3}} \end{bmatrix}^T} q¨=[q¨1q¨2q¨3]T 是系统的角加速度向量, M ( q ) ∈ R 3 × 3 M(q) \in R ^{3 \times 3} M(q)R3×3 是惯性矩阵,具有正定性和对称性, C ( q , q ˙ ) ∈ R 3 × 1 C(q,\dot q) \in R ^{3 \times 1} C(q,q˙)R3×1 是哥式力和离心力的结合向量, G ( q ) ∈ R 3 × 1 G(q) \in R ^{3 \times 1} G(q)R3×1 是重力矩阵。它们的具体形式如下:
M ( q ) = [ M 11 M 12 M 13 M 21 M 22 M 23 M 31 M 32 M 33 ] M(q) = {\begin{bmatrix}{} {{M_{11}}}&{{M_{12}}}&{{M_{13}}}\\ {{M_{21}}}&{{M_{22}}}&{{M_{23}}}\\ {{M_{31}}}&{{M_{32}}}&{{M_{33}}} \end{bmatrix}} M(q)=M11M21M31M12M22M32M13M23M33

C ( q , q ˙ ) = [ C 1 C 2 C 3 ] C(q,\dot q) = {\begin{bmatrix}{} {{C_1}}\\ {{C_2}}\\ {{C_3}} \end{bmatrix}} C(q,q˙)=C1C2C3

G ( q ) = [ G 1 G 2 G 3 ] G(q) = {\begin{bmatrix}{} {{G_1}}\\ {{G_2}}\\ {{G_3}} \end{bmatrix}} G(q)=G1G2G3

其中, M ( q ) M(q) M(q) 中的系数如下:
{ M 11 = a 1 + a 2 + a 4 + 2 a 3 cos ⁡ q 2 + 2 a 5 cos ⁡ ( q 2 + q 3 ) + 2 a 6 cos ⁡ q 3 , M 12 = a 2 + a 4 + a 3 cos ⁡ q 2 + cos ⁡ ( q 2 + q 5 ) + 2 a 6 cos ⁡ q 3 , M 13 = a 4 + a 5 cos ⁡ ( q 2 + q 3 ) + a 6 cos ⁡ q 3 , M 21 = M 12 , M 22 = a 2 + a 4 + 2 a 6 cos ⁡ q 3 , M 23 = a 4 + a 6 cos ⁡ q 3 , M 31 = M 13 , M 32 = M 23 , M 33 = a 4 . \left\{ \begin{array}{l} {M_{11}} = {a_1} + {a_2} + {a_4} + 2{a_3}\cos {q_2} + 2{a_5}\cos ({q_2} + {q_3}) + 2{a_6}\cos {q_3},\\ {M_{12}} = {a_2} + {a_4} + {a_3}\cos {q_2} + \cos ({q_2} + {q_5}) + 2{a_6}\cos {q_3},\\ {M_{13}} = {a_4} + {a_5}\cos ({q_2} + {q_3}) + {a_6}\cos {q_3},\\ {M_{21}} = {M_{12}},\\ {M_{22}} = {a_2} + {a_4} + 2{a_6}\cos {q_3},\\ {M_{23}} = {a_4} + {a_6}\cos {q_3},\\ {M_{31}} = {M_{13}},\\ {M_{32}} = {M_{23}},\\ {M_{33}} = {a_4}. \end{array} \right. M11=a1+a2+a4+2a3cosq2+2a5cos(q2+q3)+2a6cosq3,M12=a2+a4+a3cosq2+cos(q2+q5)+2a6cosq3,M13=a4+a5cos(q2+q3)+a6cosq3,M21=M12,M22=a2+a4+2a6cosq3,M23=a4+a6cosq3,M31=M13,M32=M23,M33=a4.
其中: a i ( i = 1 , 2 , . . . , 6 ) {a_i}(i = 1,2,...,6) ai(i=1,2,...,6) 是系统的结构参数,有
{ a 1 = m 1 L c 1 2 + J 1 + ( m 2 + m 3 ) L 1 2 , a 2 = J 2 + m 2 L c 2 2 + m 3 L 2 2 , a 3 = ( m 2 L c 2 + m 3 L 2 ) L 1 , a 4 = J 3 + m 3 L c 3 2 , a 5 = m 3 L c 3 L 1 , a 6 = m 3 L c 3 L 2 . \left\{ \begin{array}{l} {a_1} = {m_1}L_{c1}^2 + {J_1} + ({m_2} + {m_3})L_1^2,\\ {a_2} = {J_2} + {m_2}L_{c2}^2 + {m_3}L_2^2,\\ {a_3} = ({m_2}{L_{c2}} + {m_3}{L_2}){L_1},\\ {a_4} = {J_3} + {m_3}L_{c3}^2,\\ {a_5} = {m_3}{L_{c3}}{L_1},\\ {a_6} = {m_3}{L_{c3}}{L_2}. \end{array} \right. a1=m1Lc12+J1+(m2+m3)L12,a2=J2+m2Lc22+m3L22,a3=(m2Lc2+m3L2)L1,a4=J3+m3Lc32,a5=m3Lc3L1,a6=m3Lc3L2.
其中, C ( q , q ˙ ) C(q,\dot q) C(q,q˙) 中的系数如下:
{ C 1 = − a 3 ( 2 q ˙ 1 + q ˙ 2 ) q ˙ 2 sin ⁡ q 2 − a 5 ( 2 q ˙ 1 + q ˙ 2 + q ˙ 3 ) ( q ˙ 2 + q ˙ 3 ) sin ⁡ ( q 2 + q 3 ) −                    a 6 ( 2 q ˙ 1 + 2 q ˙ 2 + q ˙ 3 ) q ˙ 3 sin ⁡ q 3 , C 2 = a 3 q ˙ 1 2 sin ⁡ q 2 + a 5 q ˙ 1 2 sin ⁡ ( q 2 + q 3 ) − a 6 ( 2 q ˙ 1 + 2 q ˙ 2 + q ˙ 3 ) q ˙ 3 sin ⁡ q 3 , C 3 = a 5 q ˙ 1 2 sin ⁡ ( q 2 + q 3 ) + a 6 ( q ˙ 1 + q ˙ 2 ) 2 sin ⁡ q 3 . \left\{ \begin{array}{l} {C_1} = - {a_3}(2{{\dot q}_1} + {{\dot q}_2}){{\dot q}_2}\sin {q_2} - {a_5}(2{{\dot q}_1} + {{\dot q}_2} + {{\dot q}_3})({{\dot q}_2} + {{\dot q}_3})\sin ({q_2} + {q_3}) - \\ \;\;\;\;\;\;\;\;\;{a_6}(2{{\dot q}_1} + 2{{\dot q}_2} + {{\dot q}_3}){{\dot q}_3}\sin {q_3},\\ {C_2} = {a_3}\dot q_1^2\sin {q_2} + {a_5}\dot q_1^2\sin ({q_2} + {q_3}) - {a_6}(2{{\dot q}_1} + 2{{\dot q}_2} + {{\dot q}_3}){{\dot q}_3}\sin {q_3},\\ {C_3} = {a_5}\dot q_1^2\sin ({q_2} + {q_3}) + {a_6}{({{\dot q}_1} + {{\dot q}_2})^2}\sin {q_3}. \end{array} \right. C1=a3(2q˙1+q˙2)q˙2sinq2a5(2q˙1+q˙2+q˙3)(q˙2+q˙3)sin(q2+q3)a6(2q˙1+2q˙2+q˙3)q˙3sinq3,C2=a3q˙12sinq2+a5q˙12sin(q2+q3)a6(2q˙1+2q˙2+q˙3)q˙3sinq3,C3=a5q˙12sin(q2+q3)+a6(q˙1+q˙2)2sinq3.
其中, G ( q ) G(q) G(q) 中的系数如下:
{ G 1 = m 3 g [ L 1 cos ⁡ q 1 + L 2 cos ⁡ ( q 1 + q 2 ) + L c 3 cos ⁡ ( q 1 + q 2 + q 3 ) ] +                    m 2 g [ L 1 cos ⁡ q 1 + L c 2 cos ⁡ ( q 1 + q 2 ) ] + m 1 g [ L c 1 cos ⁡ q 1 ] , G 2 = m 3 g [ L 2 cos ⁡ ( q 1 + q 2 ) + L c 3 cos ⁡ ( q 1 + q 2 + q 3 ) ] +                    m 2 g [ L c 2 cos ⁡ ( q 1 + q 2 ) ] , G 3 = m 3 g [ L c 3 cos ⁡ ( q 1 + q 2 + q 3 ) ] . \left\{ \begin{array}{l} {G_1} = {m_3}g[{L_1}\cos {q_1} + {L_2}\cos ({q_1} + {q_2}) + {L_{c3}}\cos ({q_1} + {q_2} + {q_3})] + \\ \;\;\;\;\;\;\;\;\;{m_2}g[{L_1}\cos {q_1} + {L_{c2}}\cos ({q_1} + {q_2})] + {m_1}g[{L_{c1}}\cos {q_1}],\\ {G_2} = {m_3}g[{L_2}\cos ({q_1} + {q_2}) + {L_{c3}}\cos ({q_1} + {q_2} + {q_3})] + \\ \;\;\;\;\;\;\;\;\;{m_2}g[{L_{c2}}\cos ({q_1} + {q_2})],\\ {G_3} = {m_3}g[{L_{c3}}\cos ({q_1} + {q_2} + {q_3})]. \end{array} \right. G1=m3g[L1cosq1+L2cos(q1+q2)+Lc3cos(q1+q2+q3)]+m2g[L1cosq1+Lc2cos(q1+q2)]+m1g[Lc1cosq1],G2=m3g[L2cos(q1+q2)+Lc3cos(q1+q2+q3)]+m2g[Lc2cos(q1+q2)],G3=m3g[Lc3cos(q1+q2+q3)].
至此,平面三连杆机器臂的动力学模型建立完成,动力学方程的形式体现出机器臂系统是一个具有强耦合和非线性的复杂系统,系统在运动过程中,各个关节相互影响。基于拉格朗日方程得到的机器臂动力学模型的建立起了机器臂关节驱动力矩与机器臂运动参数和机械参数之间的关系,为机器臂系统PD控制算法提供了基础。

控制器设计

对于自由运动机器人来说,其控制器设计可以按是否考虑机器人的动力学特性分两类:一类是完全不考虑机器人的动力学特性,只是按照机器人实际轨迹与期望轨迹间的偏差进行负反馈控制;另一类控制器设计方法被称为动态控制,这类方法是根据机器人动力学模型的性质设计出更精细的非线性控制律,所以又常称为以模型为基础的控制。

本文采用的是动态控制中的PD控制律,机器人的动力学方程为:
M ( q ) q ¨ + C ( q , q ˙ ) + G ( q ) = τ M(q)\ddot q + C(q,\dot q) + G(q) = \tau M(q)q¨+C(q,q˙)+G(q)=τ
当给定连杆参数时,可以计算出 M ( q ) M(q) M(q) C ( q , q ˙ ) C(q,\dot q) C(q,q˙) G ( q ) G(q) G(q) 的估计值 M ^ ( q ) \hat M(q) M^(q) C ^ ( q , q ˙ ) \hat C(q,\dot q) C^(q,q˙) G ^ ( q ) \hat G(q) G^(q) 。以 u = q ¨ u = \ddot q u=q¨ 作为新的输入量来考虑下列非线性反馈控制律:
τ = M ^ ( q ) u + C ^ ( q , q ˙ ) + G ^ ( q ) \tau = \hat M(q)u + \hat C(q,\dot q) + \hat G(q) τ=M^(q)u+C^(q,q˙)+G^(q)
如果估计值全为正值,目标轨迹的关节期望加速度为 q ¨ d {\ddot q_d} q¨d ,并取 u = q ¨ u = \ddot q u=q¨ ,于是可以完全实现目标轨迹的跟踪任务,这种考虑方法称为转矩计算法。但是,通常机器人的物理参数的估计值不可能完全正确,所以本文采用下图所示的PD反馈控制律:

平面三自由度机器人动力学建模与仿真

这时,如果考虑用下式表示轨迹误差
e = q d − q e = {q_d} - q e=qdq
可以得出
e ¨ + K V e ˙ + K P e = 0 \ddot e + {K_V}\dot e + {K_P}e = 0 e¨+KVe˙+KPe=0
对于该式,通过适当地设定 K p K_p Kp K v K_v Kv 就有可能使轨迹误差收敛到0。

机器臂轨迹规划

关节空间轨迹规划的基本方法是通过机器臂逆运动学,将机器臂末端操作手中心点所要经过的空间位置转换成各个关节对应的关节角度。本文采用的方法是,利用逆运动学计算出各个空间位置所对应的关节角度,对每两个位置的关节角度之间进行多项式插值,然后各个关节按照所规划的角度变化曲线进行动。

基于三次多项式插值法的轨迹规划算法不能保证各个点之间速度曲线的平滑过渡,这样的速度和加速度曲线在机器臂应用过程中产生一些不利影响,为获得在各个点之间过渡平滑的速度曲线,继续增加初始和终止的加速度边界条件,此时需要采用五次多项式对运行轨迹进行规划:
q ( t ) = q 0 + b 1 ( t − t 0 ) + b 2 ( t − t 0 ) 2 + b 3 ( t − t 0 ) 3 + b 4 ( t − t 0 ) 4 + b 5 ( t − t 0 ) 5 \begin{array}{l} q(t) = {q_0} + {b_1}(t - {t_0}) + {b_2}{(t - {t_0})^2} + {b_3}{(t - {t_0})^3} + {b_4}{(t - {t_0})^4} + {b_5}{(t - {t_0})^5} \end{array} q(t)=q0+b1(tt0)+b2(tt0)2+b3(tt0)3+b4(tt0)4+b5(tt0)5
根据条件有:
{ q ( t 0 ) = q 0        q ( t 1 ) = q 1 q ˙ ( t 0 ) = v 0        q ˙ ( t 1 ) = v 1 q ¨ ( t 0 ) = a 0        q ¨ ( t 1 ) = a 1 \left\{ \begin{array}{l} q({t_0}) = {q_0}\;\;\;q({t_1}) = {q_1}\\ \dot q({t_0}) = {v_0}\;\;\;\dot q({t_1}) = {v_1}\\ \ddot q({t_0}) = {a_0}\;\;\;\ddot q({t_1}) = {a_1} \end{array} \right. q(t0)=q0q(t1)=q1q˙(t0)=v0q˙(t1)=v1q¨(t0)=a0q¨(t1)=a1
h = q 1 − q 0        τ = t 1 − t 0 h = {q_1} - {q_0}\;\;\;\tau = {t_1} - {t_0} h=q1q0τ=t1t0 ,求的多项式系数为:
{ b 0 = q 0 , b 1 = v 0 , b 2 = 1 2 a 0 , b 3 = 20 h − ( 8 v 1 + 12 v 0 ) τ − ( 3 a 0 − a 1 ) τ 2 2 τ 3 , b 4 = − 30 h + ( 14 v 1 + 16 v 0 ) τ + ( 3 a 0 − 2 a 1 ) τ 2 2 τ 4 , b 5 = 12 h − ( 6 v 1 + 6 v 0 ) τ + ( − a 0 + a 1 ) τ 2 2 τ 5 . \left\{ \begin{array}{l} {b_0} = {q_0},\\ {b_1} = {v_0},\\ {b_2} = \frac{1}{2}{a_0},\\ {b_3} = \frac{{20h - (8{v_1} + 12{v_0})\tau - (3{a_0} - {a_1}){\tau ^2}}}{{2{\tau ^3}}},\\ {b_4} = \frac{{ - 30h + (14{v_1} + 16{v_0})\tau + (3{a_0} - 2{a_1}){\tau ^2}}}{{2{\tau ^4}}},\\ {b_5} = \frac{{12h - (6{v_1} + 6{v_0})\tau + ( - {a_0} + {a_1}){\tau ^2}}}{{2{\tau ^5}}}. \end{array} \right. b0=q0,b1=v0,b2=21a0,b3=2τ320h(8v1+12v0)τ(3a0a1)τ2,b4=2τ430h+(14v1+16v0)τ+(3a02a1)τ2,b5=2τ512h(6v1+6v0)τ+(a0+a1)τ2.

机器臂仿真

在 MATLAB 中建立三连杆系统模型。由于考虑机器人系统的重力模型引入了非线性项目,故采用 Simscape 建立仿真模型如下图所示。

平面三自由度机器人动力学建模与仿真

建立起来的模型示意图如下(这个是robot toolbox工具箱生成,并非Simscape生成):

平面三自由度机器人动力学建模与仿真

以第一个连杆为例,建立第一个连杆的力矩估计,

平面三自由度机器人动力学建模与仿真

对应方框图中红色框中的模型如下:

平面三自由度机器人动力学建模与仿真

H1代码,这部分就是之前求得的动力学方程

function y = fcn(Gddq1,Gddq2,Gddq3,q2, q3, a1, a2, a3, a4, a5, a6)
h11 = a1+a2+a4+2*a3*cos(q2)+2*a5*cos(q2+q3)+2*a6*cos(q3);
h21 = a2+a4+a3*cos(q2)+a5*cos(q2+q3)+2*a6*cos(q3);
h31 = a4+a5*cos(q2+q3)+a6*cos(q3);
y = Gddq1*h11+Gddq2*h21+Gddq3*h31;

CG1代码

function y = fcn(q1, dq1, q2, dq2, q3, dq3, a1, a2, a3, a4, a5, a6, L1, Lc1, L2, Lc2, Lc3, m1, m2, m3)
C1 = -a3*(2*dq1+dq2)*dq2*sin(q2) - a5*(2*dq1+dq2+dq3)*(dq2+dq3)*sin(q2+q3) ...
     -a6*(2*dq1+2*dq2+dq3)*dq3*sin(q3);
G1 = m3*9.8*(L1*cos(q1)+L2*cos(q1+q2)+Lc3*cos(q1+q2+q3)) + m2*9.8*(L1*cos(q1)+Lc2*cos(q1+q2)) ...
     +m1*9.8*Lc1*cos(q1);
y = C1+G1;

将上面的封装,如下

平面三自由度机器人动力学建模与仿真

第一个关节的全部仿真模型如下,其中左边为PD控制器,上面为使用 Simscape 搭建模拟机器臂

平面三自由度机器人动力学建模与仿真

仿真结果

将三个关节都搭建起来(方法同第一个关节),大致如下:

平面三自由度机器人动力学建模与仿真

示波器输出每个关节角度跟踪情况

平面三自由度机器人动力学建模与仿真

加了一些场景布置,三层隔板,机器臂对一和三层进行访问(假装),仿真结果动态图

平面三自由度机器人动力学建模与仿真

上图仿真的下载链接如下(需要安装robot toolbox,压缩包内已包括安装包和安装教程):

https://download.csdn.net/download/qq_35231630/74358490

稍作改进就可以实现如下效果(这个就不放链接了)

平面三自由度机器人动力学建模与仿真

未经本文允许不得转载。文章来源地址https://www.toymoban.com/news/detail-439602.html

到了这里,关于平面三自由度机器人动力学建模与仿真的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包