贺州网站seo,织梦做网站主页容易吗,最新军事,网站内部资源推广怎么做1、概述
动力学以牛顿第二定律为核心#xff0c;这个定律指出了力、加速度、质量三者间的关系。 质点动力学有两类基本问题#xff1a; 一是已知作用于质点上的力#xff0c;求质点的运动#xff0c;这个就是正动力学。 二是已知质点的运动#xff0c;求作用于质点上的力…1、概述
动力学以牛顿第二定律为核心这个定律指出了力、加速度、质量三者间的关系。 质点动力学有两类基本问题 一是已知作用于质点上的力求质点的运动这个就是正动力学。 二是已知质点的运动求作用于质点上的力这个属于逆动力学。 求解第一类问题时只要对质点的运动方程取二阶导数得到质点的加速度代入牛顿第二定律即可求得力 求解第二类问题时需要求解质点运动微分方程或求积分。所谓质点运动微分方程就是把运动第二定律写为包含质点的坐标对时间的导数的方程。
这节主要是通过Matlab来熟悉动力学在机器人领域的实际应用。
2、动力学参数
以p560机械臂为例我们来查看下它的动力学参数 首先还是运行机器人工具包如果没有安装这个包的可以查阅MATLAB的rvctools工具箱熟悉运动学【机械臂机器人示例】 接下来我们将机器人加载进来有很多自带的机器人这里我们选择使用p560机器人看下这个机器人有哪些动力学相关的属性参数通过 dyn 函数我们可以得到以下各个关节的惯性属性
startup_rvc
mdl_puma560
p560.dynLink 1::Revolute(std): thetaq, d0, a0, alpha1.5708, offset0m 0 r 0 0 0 I | 0 0 0 || 0 0.35 0 || 0 0 0 |Jm 0.0002 Bm 0.00148 Tc 0.395 () -0.435 (-)G -62.61 qlim -2.792527 to 2.792527Link 2::Revolute(std): thetaq, d0, a0.4318, alpha0, offset0m 17.4 r -0.3638 0.006 0.2275 I | 0.13 0 0 || 0 0.524 0 || 0 0 0.539 |Jm 0.0002 Bm 0.000817 Tc 0.126 () -0.071 (-)G 107.8 qlim -0.785398 to 3.926991Link 3::Revolute(std): thetaq, d0.15005, a0.0203, alpha-1.5708, offset0m 4.8 r -0.0203 -0.0141 0.07 I | 0.066 0 0 || 0 0.086 0 || 0 0 0.0125 |Jm 0.0002 Bm 0.00138 Tc 0.132 () -0.105 (-)G -53.71 qlim -3.926991 to 0.785398Link 4::Revolute(std): thetaq, d0.4318, a0, alpha1.5708, offset0m 0.82 r 0 0.019 0 I | 0.0018 0 0 || 0 0.0013 0 || 0 0 0.0018 |Jm 3.3e-05 Bm 7.12e-05 Tc 0.0112 () -0.0169 (-)G 76.04 qlim -1.919862 to 2.967060Link 5::Revolute(std): thetaq, d0, a0, alpha-1.5708, offset0m 0.34 r 0 0 0 I | 0.0003 0 0 || 0 0.0004 0 || 0 0 0.0003 |Jm 3.3e-05 Bm 8.26e-05 Tc 0.00926 () -0.0145 (-)G 71.92 qlim -1.745329 to 1.745329Link 6::Revolute(std): thetaq, d0, a0, alpha0, offset0m 0.09 r 0 0 0.032 I | 0.00015 0 0 || 0 0.00015 0 || 0 0 4e-05 |Jm 3.3e-05 Bm 3.67e-05 Tc 0.00396 () -0.0105 (-)G 76.69 qlim -4.642576 to 4.642576
这里将6个关节的参数属性都给显示出来了我们也可以查看单个关节的参数比如第二个关节p560.dyn(2)或者p560.links(2).dyn这些属性分别说明如下 m关节的质量r关节齿轮向量或叫质心I3x3的对称惯性矩阵(对称矩阵是其转置是它本身)。惯性矩阵是刚体在不同坐标轴上的转动惯量通过对称矩阵的特征值和特征向量可以得到刚体的主轴和转动惯量。Jm电机惯性Bm粘性摩擦力Tc库仑摩擦力当然如果说忽略库仑摩擦力的情况p560.nofriction().dyn这样Tc都为0没有库仑摩擦力了G齿轮传动比主动轮转速/从动轮转速 或者 从动轮齿数/主动轮齿数比值小于1是增速大于1是减速。打个比方变速自行车爬坡的时候就是小齿轮带大齿轮属于减速这样踩起来就比较省力轻松但是需要多踩很多圈需要注意的是省力但是不会省功。qlim关节转动的最大范围 获取这些属性的方法如下
p560.links(2).m
17.4000
p560.links(1).G
-62.6111
%其他类似...
3、正动力学Forward dynamics
正动力学也叫前向动力学根据受力情况求出角速度、角加速度的过程。 模拟Puma 560在零角度静止状态下的运动关节力矩为零通过 fdyn(TMAX,FTFUN) 函数会对机器人在0~TMAX的时间内的动力学进行积分这样可以获取到时间T,关节位置q,关节速度qd
p560p560.nofriction( );
tic
[T,q,qd]p560.fdyn(10,[],qz);
toc
%时间已过 1.366665 秒。
也可以自行设置力矩来获取位置与速度
torqfun [1 2 3 4 5 6];
[T,q,qd]p560.fdyn(10,[],torqfun);
由此产生的运动我们将其角速度随着时间绘制出来
set(gcf,Position,[10,10, 800, 1000]);
subplot(6,1,1); plot(T,qd(:,1)); xlabel(Time (s)); ylabel(Joint 1 (rad))
subplot(6,1,2); plot(T,qd(:,2)); xlabel(Time (s)); ylabel(Joint 2 (rad))
subplot(6,1,3); plot(T,qd(:,3)); xlabel(Time (s)); ylabel(Joint 3 (rad))
subplot(6,1,4); plot(T,qd(:,4)); xlabel(Time (s)); ylabel(Joint 4 (rad))
subplot(6,1,5); plot(T,qd(:,5)); xlabel(Time (s)); ylabel(Joint 5 (rad))
subplot(6,1,6); plot(T,qd(:,6)); xlabel(Time (s)); ylabel(Joint 6 (rad))
或者这样画图更直观我这里就选1~4个关节的速度
figure(Position, [10, 10, 800, 1000]);
plot(T,qd(:,1:4));
legend(q1,q2,q3,q4);
text(0.9,0.28,\leftarrow q1);
legend(q1,q2,q3,q4);
grid on 不管习惯哪种画图我们可以看到速度最终随着时间都变成了0也就是机器人的机械臂在自身重力作用下都垂直向下静止了。
关节的角加速度
通过输入位姿、角速度、力矩来求角加速度 我们来看下各个关节的角加速度在qz位姿以及角速度和力矩为0的结果如下
p560.accel(qz, zeros(1,6), zeros(1,6))
%结果分别为-0.2462,-8.682,3.146,0.002,0.0603,0.0001
我们来演示下在重力作用下的机械臂的情况(这种保存动画更简单而且可以将轨迹画出)
p560.plot(q,trail,b-,movie,r.gif)
动图由于超出5M大小只能截图最后静止状态如下 4、逆动力学Inverse dynamics
逆动力学是根据物体所要达到的一定运动状态求解作用在物体上的外力的方向和大小的学科。已知角度、角速度、角加速度等值求解各关节所需提供的力。 关节力矩 力矩是力的大小乘以力臂的长度(牛顿*米)所以我们拿扳手拧螺母的时候扳手的力臂越长越轻松因为力矩越大。
q1 qn;%关节位姿
qd [5 1 0 0 0 0]; %关节角速度
qdd [0 0 0 0 0 0]; %关节角加速度
TAU p560.rne(q1,qd,qdd);%求解逆向动力学
TAU 22.1585 56.8861 -3.3693 -0.0018 0.0283 0.0002 rne的参数选项“gravity”G指的是地心引力也就是重力加速度默认[0,0,9.81]。所以上面默认是TAU p560.rne(q,qd,qdd,[0,0,9.81]);“fext”W 指定作用于末端执行器的扳手 W[Fx Fy Fz Mx My Mz]“slow”不使用MEX文件 其余一些属性的求解如下
%关节负载
p560.gravload(q1)
ans -0.0000 31.6399 6.0351 0.0000 0.0283 0
%空间惯性矩阵
p560.inertia(qz)
ans 3.9611 -0.1627 -0.1389 0.0016 -0.0004 0.0000-0.1627 4.4566 0.3727 0.0000 0.0019 0.0000-0.1389 0.3727 0.9387 0.0000 0.0019 0.00000.0016 0.0000 0.0000 0.1924 0.0000 0.0000-0.0004 0.0019 0.0019 0.0000 0.1713 0.00000.0000 0.0000 0.0000 0.0000 0.0000 0.1941
%科氏力
qd [0.1 0.1 0.1 0.1 0.1 0.1];
p560.coriolis(qn,qd)
%增加载荷质量
R.payload(M, P) %在位置P增加一个质点为M的有效载荷
R.payload(0) %删除添加的有效载荷
%我们测试下
p560.payload(1,[0 0.1 0.2])%惯性矩阵p560.inertia(qz)
ans 4.1476 -0.1880 -0.1643 -0.0034 -0.0100 -0.0050-0.1880 5.0224 0.7609 0.0632 0.1269 0.0632-0.1643 0.7609 1.3188 0.0632 0.1269 0.0632-0.0034 0.0632 0.0632 0.2024 0.0200 0.0100-0.0100 0.1269 0.1269 0.0200 0.2113 0.0200-0.0050 0.0632 0.0632 0.0100 0.0200 0.2041
对比前面的惯性矩阵我们可以看到矩阵的值在有外力的作用下发生了变化。
5、小结
关于摩擦力有几个简单解释下静摩擦力Static frictionFs静止时的摩擦力库仑摩擦力Coulomb frictionFc静摩擦力动摩擦力黏性摩擦力Viscous frictionFv由于物体表面之间的黏性力而产生的摩擦力。比如关节与润滑油的摩擦其摩擦力通常跟速度是非线性关系只有物体的运动速度比较小的时候就近似地看作其是关于速度线性的。
这里可以看到动力学跟运动学是有很大区别的动力学是跟力有关系使用的是牛顿三定律根据受力分析可以得到物体的运动情况或者反过来根据运动的情况来分析各种力的情况。而运动学是不考虑这些因素的主要是运动的几何性质空间变化。