《机器人自动化:建模、仿真与控制》一一2.3仿真
2.3仿真
本节介绍用积分法对下述状态方程描述的非线性系统进行计算机仿真:
该方法是一种近似法,但容易理解,并且对于描述大多数机器人系统的行为是足够的。
2.3.1欧拉法
令dt表示对于系统时间常数而言很小的数值,对应欧拉法的采样周期(例如dt=001),演化方程可以由下式近似表示:
x(t+dt)-x(t)dt≈f(x(t),u(t))
换言之:
x(t+dt)≈x(t)+f(x(t),u(t))·dt
该方程可以理解为1阶泰勒公式,由此可以推导仿真算法(称为欧拉法):
定时器周期性地每隔dt秒产生一个中断,因此如果计算机足够快,可以以实际的物理系统速度进行仿真,这称为实时仿真。有些情况下,我们希望以最短的时间获得仿真结果(例如,为了预测一个系统的未来行为)。在这种情况下,不需要为了与物理时间同步而减慢计算机的速度。
局部误差可以表示为:
et=‖x(t+dt)-x∧(t+dt)‖, 其中, x(t)=x∧(t)
式中,x(t+dt)是微分方程x·=f(x,u)的精确解,x∧(t+dt)是积分法中用到的状态向量的近似值。对于欧拉法而言,et是1阶的,即et=o(dt)。
2.3.2龙格库塔法
有更为有效的积分法,其局部误差是二阶或更高阶,如二阶龙格库塔法,只需要把x∧(t+dt):=x∧(t)+fx∧(t),u(t)·dt替换为:
x∧(t+dt)=x∧(t)+dt·14·f(x∧(t),u(t))
+34·f(x∧(t)+23dt·f(x∧(t), u(t)),x∧
Et+23dtut+23dt)
注意,在该表达式中,x∧Et+23dt可以理解为用欧拉法在时间t+23dt进行积分得到的值。方括号内是f(x(t),u(t))的估计值和fx∧t+23dt, ut+23dt的估计值的平均值。其局部误差et是二阶的,因此该积分法具有更好的精度。本节不会讨论比二阶更高阶数的龙格库塔法。
233泰勒法
欧拉法(实际上是1阶泰勒法)可以扩展到更高的阶数。在不失普遍性的前提下,让我们来看看如何扩展到二阶。我们有:
x(t+dt)=x(t)+x·(t)·dt+x··(t)·dt2+o(dt2)
但:
x·(t)=f(x(t),u(t))
x··(t)=fx(x(t),u(t))·x·(t)+fu(x(t),u(t))·u·(t)
因此,积分方法变为:
x∧(t+dt)=x∧(t)+dt·f(x∧(t),u(t))+
dt2·fx(x∧(t),u(t))·f(x∧(t),u(t))+fu(x∧(t),u(t))·u·(t)
最后更新:2017-08-17 12:02:39
上一篇:
《机器人自动化:建模、仿真与控制》一一2.4习题
下一篇:
《程序员度量:改善软件团队的分析学》一案例分享:度量和怀疑论者
CentOS安装使用vnc进行远程桌面登录
关于Fintech的九个预言
云上Docker的Spring Cloud微服务应用实践分享
Tomcat启动web项目报Bad version number in .class file (unable to load class ...)错
android View中如何判断长按事件
Ogre:Animation(Ogre中的动画)
在32位Windows XP的VMWare里安装64位Ubuntu Linux/JDK1.6
曾鸣:为什么要让「听得见炮火的士兵」做决定?| 干货
Universal Image Loader for Android 使用实例
Windows XP远程桌面多用户登陆实现