【动力学仿真】基于simscape的单杆动力学仿真
本篇博文使用simscape对单杆动力学进行仿真。通过使用simscape的使用可以验证动力学模型的正确性。
单杆动力学
因为单杆动力学十分简单这里使用拉格朗日法进行动力学方程的推导。这里直接给出源码。
其中m是质量,假设质量分布均匀,杆长为L,围绕质点的转动惯量为cI,重力加速度为g。
clc clear close all %% 符号方程 syms m g L cI syms cta d_cta dd_cta Ep=L/2*sin(cta)*m*g; Ek=0.5*m*(d_cta*L/2)^2+0.5*cI*d_cta^2; M=hj(diff(diff(Ek,d_cta),d_cta)*dd_cta-diff(Ek,cta)+diff(Ep,cta))
可以得出,单杆的动力学方程为:
M = (dd_cta*m*L^2)/4 + (g*m*cos(cta)*L)/2 + cI*dd_cta
动力学仿真
我们首先设置仿真条件。
%% 数据 m=1.234; g=9.8; L=2.3; cI=0.321; period=0.0001; t=0:period:5; f=1/(2*pi); cta=sin(2*pi*f*t); d_cta=2*pi*f*cos(2*pi*f*t); dd_cta=-2*pi*f*2*pi*f*sin(2*pi*f*t); q=[t;cta].; torque=double(vpa(subs(M)));
建立simscape模型,如下图。
这里tau2是simsape计算出的关节力矩。 torque是我们根据动力学方程计算出来的力矩。 画出两个数据,如下如:
可以看出两个数据基本完全吻合,但是存在误差,这是由于,我们使用逆动力学计算的时候数据往往是十分精准的,但是simscape是通过正动力学进行关节力矩求解,这个过程十分耗时,因此当算法不同时会精度的差异,因此不完全吻合。