智能车PID 算法实现原理讲解.docx
《智能车PID 算法实现原理讲解.docx》由会员分享,可在线阅读,更多相关《智能车PID 算法实现原理讲解.docx(11页珍藏版)》请在三一办公上搜索。
1、为了实现PID控制所需要的等间隔采样,我们使用了一个定时中断,每2ms进行一次数据 采样和PID计算。与此并行,系统中还设计了一个转速脉冲检测中断,从而实现了转速检测。 为了调试的需要,程序中还在main)函数中加入了相关的调试代码,这部分代码有最低的优 先级,可以在保证不影响控制策略的情况下实现发送调试数据等功能。检测环节对整个控制系 统的质量起到至关重要的作用4.3.2 PID控制调整速度本系统采用的是增量式数字PID控制,通过每一控制周期(10ms)读入脉冲数间接测得小 车当前转速vi_FeedBack,将vi_FeedBack与模糊推理得到的小车期望速度vi_Ref比较,由 以下公式求
2、得速度偏差error1与速度偏差率d_error。errorl = vi_Ref - vi_FeedBack;(公式3)d_error = errorl - vi_PreError;(公式4)公式4中,vi_PreError为上次的速度偏差。考虑到控制周期较长,假设按2.5m/s的平均速 度计算,则一个控制周期小车大概可以跑过2.5cm,如果按这种周期用上述PID调节速度,则 会导致加速减速均过长的后果,严重的影响小车的快速性和稳定性。为了解决这个问题,可以 在PID调速控制中加入BANG-BANG控制思想:根据errorl的大小,如果正大,则正转给全额 占空比;如果负大,则自由停车或给一个反
3、转占空比;否则就采用PID计算的占空比。4.2.3 PID算法程序实现PED算法在参数设置合理的情况下可以达到很好的控制效果口通过理论分析, 加入积分环节可以消除稳态误差,加入微分可以提高响应速度通过实际对小车的试验中积分环节效果十分明显,即便在积分系数I很小的时候依然会造 成能机响应的缓慢,使得小车难以及时对赛道的变化作出响应;同时在比例控 制下,小车在直道行驶过程中已经基本没有稳态误差存在,因此加入积分环节 意.义不大在实际系统诉小车的PID参数是根据路况来进行动态调整的,尽最垃大限 度的扬长避短。小车系统中,PID控制器以比例(P)控制为主,对于积分和微分(D) 采取有条件的选用,具体操
4、作方法如下:当小车进入弯道的时候,加入微分环 节以使能机迅速反应,克服弯道扰动;当进入直道时,加入积分控制,使小 车保持平稳运行,但积分系数取值微小,避免由于反应过慢血弓I起的小车 运行不稳。图4中的振荡分析模块对于控制过程至关重要,既是采用PI或者PD控制的 依捣同时也是系统对于采用其他辅助控制算法的依据。该模块通过计算近一 段时间(50次传感器采样)内偏差量的均方差来得出小车运行路线同实际路线 的离散程度即判断小车是否运行稳定,具体细节将在5.1节中进行介纵根据振荡分析模块的输出结果,程序会判断是采用PI控制还是PD控制或者 单邮P控制,使得小车搂制更具针对性,效果更好。图4中的振荡分析模
5、块对于控制过程至关重要,既是采用PI或者PD控制的 依据,同时也是系统对于采用其他辅助控制算法的依此该模块通过计算近- 段时间(50次传感器采样)内偏差荒的均方差来得出小车运行路线同实际路线 的离散程度即判断小车是否运行稳定,具体细节将在5,1节中进行介绍。根据振荡分析模块的输出结果,程序会判断是采用PI控制还是PD控制或者 单纯的P控制,使得小车控制更具针对性,效果更好。位置信息位置信息图4 PID f法示意图5. 1振荡检测本项口中小车对于行驶策略的选择都是依据小车对振荡情况的判断.该振荡 检测模块就是实现判别小车振荡剧烈程度(即稳定性系数)的功能.对于振荡检取h通过分析小车最近-段时间的
6、振荡状况来进行判断核算法 使用个链表来存储位置偏差信息,记录最近50次的偏差值.在第51次传感 器信息到来时,把最开始第-次的数据整个存储空间中弹出,以保证链表中始 终保存最近50次的位置信息。将这50次偏差的均方差和标准差,作为稳定性 系数每次采样结束,程序讲行次链表的操作,进行次均方差利标准差的计算,并对稳定系数进行判断是否进入振荡状态.图5振荷检测的信息存储示意图的存储空间。当然,具体压缩效率山指令变化频繁程度而有所不同。当小车首圈运行结束,通过判断赛道的起始,来确定是否调用记忆的踏况.则在以后数圈内J小车运行到赛道的特定部位时可以不依赖传感器,而根据 经验来进行更有效的控制口本项目中,
7、小车通过计算进入直道的时间.可以在 弯道到来之前进行减速;在连续小幅弯道到来时时J可以直接从道路中心穿越 而不必完成连续拐弯的动作.PID控制算法为了使赛车平滑得保持在黑线中央,即使赛车的偏移量平滑地保持在0,实用了 PID控制 算法。P为比例参数,D为微分参数。基准值为0,PID输入为水平偏移量X0,PID输出为转角, 转角方向:向左转为正,向右转为负。P参数在智能车控制器中表示水平偏差量的权,D参数在智能车控制器中表示水平偏差速 度的权水平偏差量直接反映了赛车偏离黑线的程度,例如赛车偏向黑线的左边越厉害,则赛车的 右转角度将越大。水平偏差量,是PID控制器的P部分。水平偏差速度则直接反映了
8、赛车的运动倾向,因为有了赛车的水平偏差速度,对赛车的掌 握,将更加精确。例如赛车偏向黑线左边,然而它的运动方向是向右的,那么,他的转角将比 向左运动时的转角要小,因为,我知道赛车已经开始朝正确的方向调整了。水平偏差速度,是 PID控制器的D部分。通过两个相隔一定采样时间的水平偏差量的差,来得到赛车的水平偏差速度。然而,这个 时间间隔多少比较合适呢?入水平倡移量-3 ,八水平俯移其度,理tA水平偏翱速度。目邻3个时衬问隔)人水平偏移速度f相邻5个时间间隔)-3图3.3上述函数图像的横坐标为采样时间t,每小格为4ms。第1幅图像的纵坐标为赛车水平偏 差量;第2幅图像的纵坐标为间隔为1的时候水平偏差
9、速度;第3幅图像的纵坐标为间隔为3 时候水平偏差速度;第3幅图像的纵坐标为间隔为5的时候的水平偏差速度。由上图可知:相邻采样点越远,数据的值域越大,更有利于描述车辆的偏差程度,但是, 会降低赛车判断的响应度;相邻采样点越近,数据的值域越小,0状态越多,不利于描述赛车 的偏差程度,但是有利于响应赛车的偏差程度,所以,这个相邻的数量要适中。上图中,间隔 3比较合适。Proportion为的P参数,Derivative为的D参数,LastError 口为的水平偏差量队列,水 平偏差速度即队尾-队头,队列长度为LAST_ERROR_NUM,即表示间间隔。通过实验,长度20 比较合适。有了偏差 Erro
10、r,有了 dError二LastError0- LastErrorLAST_ERROR_NUM,输出值为 PID_Output = Proportion * Error + Derivative * dError。3.6 PID控制算法的改进通过实验和软件仿真,发现,PID控制器并不是在任何情况下,都是最优的选择,比如, 在直线上,PID控制器的调整时间,远大于枚举调整法,而在严重偏离的时候,由于赛车的水 平偏移量已经固定不变,所以,也没有必要使用PID控制了。所以,将赛车的状态分成了 3 种,下面逐一介绍并说明智能车在这一状态下的控制算法。1:赛车处于直线状态:如果赛车居中,则转角二0。如果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能车PID 算法实现原理讲解 智能 PID 算法 实现 原理 讲解
链接地址:https://www.31ppt.com/p-5333608.html