如何利用Matlab/Simulink进行独轮小车的动力学模型搭建
人在坐标(100,5)处,拿出手机召唤小车从坐标(0,0)处行驶到自己面前,如下图所示。我们来对这个小车进行运动学建模并对其进行稳定性控制。
首先对小车进行简化,比如,将其简化为一个独轮小车。对于这个车,有一些状态量参数,定义如下:打开Simulink,用模块化的方式,将如上的各个参数之间的关系进行定义,如下红框中的内容所示:
接下来可以将红框中的内容进行封装,并定义小车的初始参数(x=0,y=0,yaw=0,v=10,即初始位置、初始转角、初始速度)。因此这个小车模型就建模成功了,如下所示。
在上图中,封装的小车模型就是unicycle模块了。它有两个输入,分别是转角和油门,有四个输出,分别是x坐标、y坐标、转角、和速度。我们给了小车一个正弦输入(幅值为2,频率为3),并将x和y坐标进行监控输出,可以得到如下的轨迹。更进一步,我们将小车的初始速度设为0,然后通过加入油门踏板值,驱动汽车前行,如下所示。奇怪,为什么小车的速度会越来越快?现实生活中,踩下油门踏板到一个位置并稳定住(相当于上图中的油门值10),汽车难道不该加速到某个值就稳定住吗?
实际情况中,汽车加速后还会受到外界的风阻、路阻的影响,最终速度达到一个稳定值。那么这个速度稳定控制在Simulink中怎么做到呢?我们来对这个小车模型进行稳定性控制,也就是加入了以下的红色框线部分。控制的原理是依据反馈速度和油门踏板量(10)之间的差值的稳定控制,控制参数即PID(Proportional=10、Integral=10、及Derivative=1),使得这个差值最终趋于0,也即达到平衡状态。仿真求解,再输出速度,如下所示。速度终于可以稳定下来了。PID参数的调试也是个技术活,可以多试试其他的参数。
在如下的控制模型中,我们将小车的初始角度设为0.01(蓝色部分),后续这个角度会和车辆的实时角度进行求和,自性变换控制方向。红色部分是坐标系转换,目标位的[100, 5]联合汽车当前的坐标后,进行坐标系变换(从世界坐标系转换到车辆坐标系),然后求和可得当前位置和目标位置之间的距离差,并将这个差值与5做比较(绿色部分),当大于5时,油门及继续作用,当小于等于5时,刹车开始生效。现实中的意义就是,当小车距离目标位置的距离为5时,就会停下来。
好了,将以上的系统进行仿真,就能获得看到小车的路径的变化了,如下所示:
从以上输出可以看出,小车先是转向往Y向走,逼近目标Y值后,往X向继续行进,到距离目标坐标为5的地方停下了下来。 著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-06-21
最近编辑:1年前