首页/文章/ 详情

如何利用Matlab/Simulink进行独轮小车的动力学模型搭建

1年前浏览2190
大家好,我是团长。

继续学习自动驾驶的控制算法。

目录:
1、场景假设
2、小车模型搭建
3、以油门控制汽车前行
4、汽车速度的稳定性控制方法
5、独轮小车的路径控制


1、场景假设

人在坐标(100,5)处,拿出手机召唤小车从坐标(0,0)处行驶到自己面前,如下图所示。我们来对这个小车进行运动学建模并对其进行稳定性控制。



2、小车模型搭建

首先对小车进行简化,比如,将其简化为一个独轮小车。对于这个车,有一些状态量参数,定义如下:


打开Simulink,用模块化的方式,将如上的各个参数之间的关系进行定义,如下红框中的内容所示:


接下来可以将红框中的内容进行封装,并定义小车的初始参数(x=0,y=0,yaw=0,v=10,即初始位置、初始转角、初始速度)。因此这个小车模型就建模成功了,如下所示。


在上图中,封装的小车模型就是unicycle模块了。它有两个输入,分别是转角和油门,有四个输出,分别是x坐标、y坐标、转角、和速度。我们给了小车一个正弦输入(幅值为2,频率为3),并将x和y坐标进行监控输出,可以得到如下的轨迹。


3、以油门控制汽车前行

更进一步,我们将小车的初始速度设为0,然后通过加入油门踏板值,驱动汽车前行,如下所示。


然后,我们来检测输出的速度。如下所示:


奇怪,为什么小车的速度会越来越快?现实生活中,踩下油门踏板到一个位置并稳定住(相当于上图中的油门值10),汽车难道不该加速到某个值就稳定住吗?

实际情况中,汽车加速后还会受到外界的风阻、路阻的影响,最终速度达到一个稳定值。那么这个速度稳定控制在Simulink中怎么做到呢?

4、汽车速度的稳定性控制方法

我们来对这个小车模型进行稳定性控制,也就是加入了以下的红色框线部分。控制的原理是依据反馈速度和油门踏板量(10)之间的差值的稳定控制,控制参数即PID(Proportional=10、Integral=10、及Derivative=1),使得这个差值最终趋于0,也即达到平衡状态。


仿真求解,再输出速度,如下所示。速度终于可以稳定下来了。PID参数的调试也是个技术活,可以多试试其他的参数。


但是小车此时还是在路上打摆子,如下所示:


怎么才能控制小车前往指定的地方呢?

5、独轮小车的路径控制

在如下的控制模型中,我们将小车的初始角度设为0.01(蓝色部分),后续这个角度会和车辆的实时角度进行求和,自性变换控制方向。红色部分是坐标系转换,目标位的[100, 5]联合汽车当前的坐标后,进行坐标系变换(从世界坐标系转换到车辆坐标系),然后求和可得当前位置和目标位置之间的距离差,并将这个差值与5做比较(绿色部分),当大于5时,油门及继续作用,当小于等于5时,刹车开始生效。现实中的意义就是,当小车距离目标位置的距离为5时,就会停下来。


好了,将以上的系统进行仿真,就能获得看到小车的路径的变化了,如下所示:


从以上输出可以看出,小车先是转向往Y向走,逼近目标Y值后,往X向继续行进,到距离目标坐标为5的地方停下了下来。


本文完。

来源:车路慢慢
汽车Simulink自动驾驶控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-06-21
最近编辑:1年前
李慢慢
硕士 自动驾驶仿真工程师一枚
获赞 11粉丝 70文章 122课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈