资讯详情

智能车竞赛技术报告 | 全向行进组 - 东北林业大学- 进取号E

参赛学校:东北林业大学队伍名称:进取号E???参赛队员:郭誉博张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小龙张小张小龙张小龙张小龙张小龙张小龙张小龙小龙小龙张小龙张小龙小龙张小龙张小龙张小龙张小龙张小龙小龙张小龙小龙小龙小龙张小龙张小龙张小张小龙张小龙张小龙小龙小卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小奇卢小?

第一章


??全国大学生智能汽车竞赛是以智能汽车为研究对象的创意技术竞赛,是全国大学生的探索性工程实践活动,是教育部倡导的大学生技术竞赛之一。竞赛以培训、参与、鼓励探索、追求卓越为指导思想,旨在促进高校素质教育,培养大学生综合知识应用能力、基础工程实践能力和创新意识,激发大学生从事科学研究和探索的兴趣和潜力,倡导理论联系实际、务实的学习风格和团队合作人文精神,为优秀人才的脱颖而出创造条件。

??竞赛以竞赛为基本竞赛形式,辅以创意竞赛、技术方案竞赛等形式。竞速比赛以统一标准的标准硬件和软件为技术平台,制作模型车,可以独立识别道路,按照规定的路线行驶,并符合其他预先公布的规则,以完成时间最短的为胜利。创意竞赛是在统一有限的基础平台上,充分发挥团队的想象力,以创意任务为目标,完成作品的开发;竞赛评价由专家组和观众进行综合评价。技术方案竞赛以学术为基础,通过现场方案交流、专家质疑评价、现场参与者和专家投票等互动形式,选择参与者的优秀技术方案。其目标是提高参与者的创新能力,鼓励他们相互学习和交流。

??比赛过程包括理论设计、实际生产、车辆调试、现场比赛等环节,要求学生组成团队,合作,初步体验从设计到实现的工程研发项目的全过程。竞赛融合了科学性、趣味性和观赏性。它是一场快速发展、广阔前景的汽车电子为背景,涵盖自动控制、模式识别、传感技术、电子、电气、计算机、机械、汽车等多学科专业的创意竞赛。本次比赛规则透明,评价标准客观,坚持公开、公平、公正的原则,确保比赛健康、普及、可持续发展。

??全国大学生智能汽车竞赛组织运营模式实施政府倡导、专家主办、学生主体、社会参与 16 充分调动各方参与的积极性。

第二章 统设计总述


??年限定了H车模作为全向型进组竞赛车模.基于全向移动的特点,麦克纳姆轮配合舵机和摄像头,可以轻松实现三岔路横向前进的任务.沁恒基于此芯片推出的沁恒CH32V103的引脚数和性能限制.我们使用硬件二值化相机OV7725有效减轻单核数据处理负担.为了更准确地识别元素,我们还使用四种高精度电感获得更多的轨道信息.车身采用对称结构,基于全向移动的特点,便于控制.

第三章 械系统设计


3.1 防撞

??在调试过程中,经常会遇到车模冲出赛道的情况,为了防止撞击损坏电路板和传感器,使用质地较硬的漆包线与高硬度碳杆制作电磁前瞻.用多层热缩管和热熔胶将电感固定在前瞻性上.既保证了轻质,又保证了强度.最过测试,最终使用外径4.0*4.0mm,内径1.0mm的碳杆.

▲ 图3-1 电磁前瞻

3.2 电池固定

??由于模具运动速度高,惯性大,电池固定必须牢固,防止电池在运动过程中运动,影响参数校正.而且由于比赛时间紧,电池更换方便.车模采用专用打印件将电池固定在车模X轴中心.

▲ 图3-2-1 电池固定槽(左)(右)

▲ 图3-2-2 实际装配效果

3.3摄像头固定

??由于模型采用摄像头跟踪,需要在三叉元素内转动,摄像头与舵机的配合需要一定的强度,可以在保证车模运行过程中不抖动的情况下转动.采用了附加支架和轴承将摄像头固定.为了防止相机与碳杆和舵盘相对滑动,使用8.08.023mm碳杆.轴承为内径12mm,外径20mm塑料轴承.用黑色电工胶带加厚碳杆,使方杆与轴承内径接触.

▲ 图3-3-1 轴承与碳杆

??在使用过程中,发现附加支架很容易拉动模具底盘,因此用热熔胶代替原有的机械结构.

▲ 图3-3-2 原附加支架

▲ 图3-3-3 用热熔胶固定

??为了获得更好图像,我们增加了连接装置.

▲ 图3-3-4 增加装置后

3.4 舵机固定

??舵机质量尽可能小,有利于调整车模重心.舵机的可控角度应为180度以上,以使摄像头角度在运行过程中转动180度.舵机的虚拟位置尽可能小,可以减少抖动对摄像头识别的影响.摄像头的转角速度也要尽快.最后,我们选择了FT2331M这款舵机.可控角度为240度,体积小,重量20度g,转角速度0.09s/60°(6v).

▲ 图3-4-1 FT2331M舵机

??对于多舵机的安装,重点是做好定位孔,使舵机齿位于模型中心.基于预定在载板上的孔,强度稍高的铝管可以达到良好的固定效果,纸垫片可以有效保护载板布局,也可以绝缘载板和铝管.

▲ 图3-4-2 舵机支架

▲ 图 3-4-3 装配效果

??使用打印件连接舵盘和碳杆

▲ 图3-4-4 连接件

▲ 图3-4-5连接件的装配效果

3.5 测距传感器固定

  车模采用tf-mini PLUS激光雷达传感器,用于配合处理坡道元素,分辨率为cm,串口通讯.但可惜受制于处理器,最终未能使用.利用车模上定位孔将其固定在摄像头正下方,调整角度不被电磁前瞻遮挡.

▲ 图3-5 测距传感器 tf-mini

3.6 编码器固定

  编码器的安装要考虑到齿轮的啮合问题,不能过松或过紧。并且编码器要尽 量安装在靠近车中心的位置,防止在碰撞时编码器的位置发生变化。编码器采用 螺丝和塑料固定件固定在车轮上方。为了防止编码器齿轮松动,直接采用 262 胶水将齿轮固定在编码器轴上。编码器配合齿轮容易滑丝,挡板质地坚硬,不易损坏,因此用于固定编码器的挡板,其定位孔设计为槽型,可以用调整挡板的形式调整编码器齿轮的啮合.

▲ 图3-6-1编码器安装

▲ 图3-6-2 编码器安装

▲ 图3-6-3 编码器安装架

3.7陀螺仪固定

  为了保证车体前后对称,且不占用舵机安装空间,将陀螺仪用锡焊固定在主板上,舵机的正下方.X轴Y轴方向与程序有紧密联系.这里选取X轴正向正对车模前方.

▲ 图3-7-1 陀螺仪

▲ 图3-7 实际安装效果

3.8 麦克纳姆轮处理

  本届为了使H车在pvc材质赛道上跑得更稳,没有使用往届的买麦克纳姆轮,而是采用了16届新版的”钻石轮”,提升车体防抖性能;小辊子上胶皮易与其发生相对滑动,胶皮的两侧也容易与轮毂边沿卡住导致横向前进无法稳定,选用厚度为9448A双面胶将胶皮粘在小辊子上.

▲ 图3-8麦克纳姆轮

3.9 PCB板固定

  本车模PCB板为矩形,长100mm,宽80mm.板子上打有舵机安装定位孔,陀螺仪安装定位孔.为了保证陀螺仪确实在车体正中心,同时不影响走线,使用了与车模定位孔相匹配的打印件.主板与打印件之间使用热熔胶连接.打印机件与车模底板间使用21.0mm的高强度铝管连接.

▲ 图3-9-1 打印件

▲ 图3-9-2装配效果(正面)

▲ 图3-9-3装配效果(反面)

  对于电机驱动板,由于不安装传感器,使用45mm尼龙柱*2即可固定,底部为防止对车底盘变形造型影响,使用热熔胶.

▲ 图3-9-4 驱动板

3.10 重心调整

  H车模依靠四个电机差速实现姿态矫正,重心不当容易造成控制逻辑混乱;重心靠上容易使车模跳轮.最终将重达220g的电池以及30g重的主板放置在车模中心位置,且电池紧贴车模底盘,主板与电池间距为3.0mm,选取舵机时特别选取了重量仅为20g的FT2331M舵机,保证了除麦轮外的重量集中在车体中心靠下.

▲ 图3-9-5 整体装配效果

3.11 机械结构选择与踩坑

  在正常的机械结构下,如果漂移甩尾,或是速度不高且提不上速度,不要迷信轮胎处理或是结构微调这些,这时候影响到你的大概率是程序和算法。轮胎处理和结构微调只会在高速时有些许的改善,陷入天天有问题就想调机械也是我们最开始做的问题。

  

  • 其实我们认为最重要的是,把辊子上的胶套用3M薄双面胶粘死在了轮子中间。未作处理的话横向跑车的时候胶套会偏向轮毂一侧,影响辊子正常转动。虽然但是,闭环了确实会在一定程度上不会出现太大的问题。

  • 我们也尝试了用软化剂涂抹胶套,具体的方法就是用刷子把每个辊子上的胶套都刷上软化剂,再用保鲜膜包起来密封八小时左右,一半就是偶尔在晚上调完车后处理第二天早上再拆封这样。如果不嫌拆装麻烦可以拆掉所有辊子上的胶套并浸泡在软化剂里,或是有充足资金买软化剂就直接把麦轮拿去泡。软化剂我们使用的是逐飞店铺的黄色小瓶,呆萌侠的也尝试过。不过因为胶套太薄面积太小,处理完之后没有明显的手感变化,上车测试也是一样。

  呆萌侠的厚胶套我们买过,感觉就是把长橡胶管截成一个个小段,并且是上下等宽等粗,感觉很不靠谱的样子。并且后面卓大公众号评论下面回复这种胶套厚度可能超标,为了安全起见我们就放弃用了,那个其实连装车都嫌累没装过

  • 打磨轮胎的话,可以用砂轮机打磨,也可以找个粗螺丝放到胶套里固定,再卡到台式钻台上,手拿着砂纸在旁边磨。硅橡胶是为了防止打磨将轮胎磨破,可使用南大硅橡胶进行补胎,硅橡胶更软但摩擦力不如原胎。但是这么多辊子磨完会是个巨大的工程,看着就很累最终也没做处理。另外原装胶套本身就很薄,稍不留神就容易磨破。我们尝试处理了一个手感上也没有明显变化。其实跑到了最后胶套已经被自然磨损了一层,边缘甚至还会破损。破损只要不是特别严重我们也就没修,严重的就直接换掉了。

  • 我们发现辊子和轮毂连接处在跑了很长一段时间后会出现黑色的东西,有些粘性但也不少油状的,猜测可能是胶套的碎屑卡在了慢慢积累到一起。这个黑色的东西会让辊子自转稍微受阻。这是我们在拆轮时才发现的,不拆轮单从外面看没有发现,拆之前并未察觉到异样,拆后也只有仔细观察才能发现提升之处。

  

  • 卸下来车模前挡板,因为挡板会卡路肩,并且要撞也是先撞掉放在前面的电磁感.
  • 轮胎以及赛道的干净很重要。建议擦轮胎使用微湿的抹布,擦赛道使用较干的抹布进行,擦拭完毕等二者都干掉再发车。也有推荐购买WD-40除锈剂来清洁轮胎。如果隔夜代码跑不了,请先不要怀疑自己,擦一遍赛道和轮子会有意外收获的。

 

第四章 件系统设计


4.1 传感器

  选择的传感器如下:

  • 编码器: 360°位置传感器倒立摆角度绝对式迷你mini编码器.每个电机配备一个角度传感器来测速,共四个.使用SPI通讯接口,CPOL=0/CPHA=0通讯方式.通过测量角度变化读取电机速度.
  • 摄像头: OV7725小钻风硬件二值化数字摄像头.可调帧率0-150,通过软件调节阈值,使图像更好地与环境相适应.相较于彩色摄像头,减轻单片机运算负担.镜头130°,对于调试无任何影响.
  • 激光测距传感器: 北醒激光雷达传感器PIX避障室内版TF-mini-Plus.串口通信, 测距范围10-120cm,精度毫米级.通过850nm激光测量坡道距接收镜头距离,输出赛道起伏状况.配合摄像头准确输出赛道信息.
  • 陀螺仪: ICM-20602传感器模块.SPI通讯,测量精度高,噪声小.负责圆环内及三岔内角度收集.

4.2 电源部分

  电源部分设计本着稳定,低成本,简单的原则,共设计五个电源部分:

  • 作用 电源 使用芯片
  • 舵机驱动 6V TPS5430
  • 摄像头驱动 3V3_CAM LD29150-33
  • 运放驱动 3V3_OP LD29150-33
  • 测距驱动 5V LD29150-50
  • 其他外设 3V3_1 LD29150-33

  为避免摄像头和电磁电源互相影响,特地使用两个电源进行供电,在设计中后考虑到陀螺仪使用较为频繁,应将陀螺仪也单独进行供电.可能这也是赛中,陀螺仪掉线车模于三岔口偶尔无法收到数据的原因.因此建议所有传感器单独供电.   对于舵机电源,除负责给舵机供电外,还需要利用它的输出作为其他电源芯片的输入. TPS5430经典电路如下:

▲ 图 4-2-1 6V电源电路

  其中所有3V3电源皆使用LD29150-50对6V电源进行转压,实测该芯片稳压误差小于1%.5V电源用于测距模块使用.在转出时应使用0欧磁珠进行电源分割.

▲ 图4-2-2 5V电源\3V3电源

4.3 人机交互

  为方便观察摄像头获取信息是否正确,设定了SPI通讯的屏幕接口:

▲ 图4-3-1 屏幕接口

  蜂鸣器可以方便地判断元素是否识别到:

▲ 图4-3-2 蜂鸣器

  为方便设定速度档位,设定了按键,单核处理器没有多余的IO口,因此五轴按键只用了三个引脚:

▲ 图4-3-3 按键

4.4 通信接口

  共用到了三种通讯接口,分别是串口,SPI,I\O.如下表所示.

  • 接口种类 使用外设
  • SPI 陀螺仪,编码器(角度传感器),屏幕
  • UART 摄像头,测距,无线串口
  • I\O 电机驱动方向信号,按键,蜂鸣器,舵机

  为了避免接触不良,布局设计中应遵照越短越好的原则.其中陀螺仪用锡焊直接焊在载板信号接口处.编码器,电机驱动信号用12pin牛角头线连接,摄像头采用18pin FPC排线进行连接,测距采用xh1.25带扣排座连接, 避免接反.无线串口和屏幕采用排针排母直连.

4.5电机驱动

  电机驱动板由两个全桥电路构成,每个全桥电路由4个N-MOS组成.为节约PWM资源,采用Drv8701e芯片,一路IO,一路PWM驱动信号层:

▲ 图4-5-1 H桥驱动电路

  电机和单片机之间用SN74HC125PWR芯片进行隔离:

▲ 图 4-5-2 电机-单片机隔离电路

  驱动芯片和隔离芯片用LD29150-50和LD29150-33电路进行供电,为了节约成本及购买便捷性,采用LD29150同一封装的不同规格进行电源传递:

▲ 图4-5-3 芯片电源

  单片机提供过控制输出PWM占空比实现电机调速,通过改变与驱动板的IO接口高低电平,控制DRV8701e的使能端和输入端信号,进而控制电机正反转和停止.车模使用电机为RS-380电机,堵转以及正反转过渡过程中电机电流较大,最大堵转电流约为20A.因此,设计驱动板时对过电流较大导线进行覆铜处理,MOS管使用TPH1R403NL,足够承受10V以下电压和大电流.

 

第五章 像头处理


5.1简介

  我们使用的单片机存在较多限制,为了使得能提高处理速度,减少单片机负荷,压缩代码量,我们最终决定使用硬件二值化的摄像头和130°无畸变镜头来采集图像,得到原始图像。

5.2摄像头信息的提取和利用

  使用硬件二值化摄像头解压缩后得到一幅只有黑和白的图像,实质上是60*80的一个二维数组。

  在获取到原始图像的基础上,根据赛道特点,根据赛道边线是黑白分界线的特征来提取边线。

  在扫线上,传统的获取方法是在底部往上扫线,根据上一行中点来确定本次中点起始位置的算法存在遍历点次数过多,速度过慢的缺点。因此我们使用八邻域边缘提取算法,分别对左边线和右边线进行边缘提取,八邻域扫线特性和赛道特性契合,处理速度较快,同时利用八邻域扫线过程中,相邻两个像素点位置,可以大致得出赛道趋势,可以在后续判断中使用。获取的赛道具有几个特点:每一行直接具有连续性,每帧图像和上一帧图像边线形态上具有一定的关联性。可以根据实际摄像头角度和光照情况,根据本次图像上边线特点和像素点信息,对光照对原始图像是否严重进行验证,如果不满足条件就不处理本帧图像,采取下一帧图像进行处理。

  我们通过扫线得到了左右边线在一帧图像上的位置,通过对同一行所在列数进行相减,可以得到每一行的赛道宽度。在扫线完成后,根据赛道边线形态和八邻域得出的赛道趋势可以确定赛道上一个很重要的信息,该帧图像近处拐点是否存在和拐点所在坐标。至此,每帧赛道基础信息获取完毕

▲ 图5-1-1 正常赛道获取到的图像

   :

  本届智能车赛道需要处理的元素有:斑马线,十字路口,三叉,环岛,坡道。   摄像头获取的图像和车身相对于元素的位置有较大关系。

  其中斑马线较为好判断,在左右两边线间存在大量黑白跳变点。

  坡道使用摄像头结合激光测距模块进行测量。

  三叉识别通过拐点和赛道趋势进行判断,它的特征比较明显,同时找到下方两个拐点,赛道趋势满足特定趋势,赛道宽度逐渐变   宽即可识别。

  环岛使用摄像头和电磁的综合判断,根据场地上电磁线铺设情况,环岛处电磁值是是整个赛场上最大的,使用横向于车体的电感识别。之后用摄像头进行左右环岛识别和特殊补线处理。通过赛道信息更改赛道边线,从而更改摄像头规划出的路径。

  全向组比赛要求需要在三叉中心旋转,需要识别到以后直行到三叉中心点,而直行过程中如果正常循迹路径规划会出现三叉走向一侧的问题。

  因为十字和三叉近处特征相似,因此可以使用同一种补线思路来对边线进行重新设定使得路径保持直行。减少了代码量,增强了复用性

  重新设定的思路很多,我们最终选取使用根据近处两侧拐点下边线情况来进行重新设定。重新设定分为左侧单边设定和右侧单边设定两种并列情况,可以适应直入十字,斜入十字,直入三叉,斜入三叉四种情况。

  我们选用赛道左右两侧边界来拟合虚拟中线,对单边丢线情况进行特殊处理,算特定行数的虚拟中线和屏幕中线的误差作为转向环输入。

▲ 图5-1-2 特殊情况丢线

 

第六章 PID控制实现


6.1 经典PID控制:

  • ,简称PID控制,又称PID调节。PID控制的基本方法是根据系统输入与预定输出的偏差的大小运用比例、积分、微分计算出一个控制量,将这个控制量输入系统,获得输出量,通过反馈回路再次检测该输出量的偏差,循环上述过程,以使输出达到预定值。 PID控制器问世至今已有近 70年历史,其有着结构简单、稳定性好、工作可靠、调整方便等优点。   当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术最为方便。即当我们不完全了解一个系统和被控对象,或不能通过有效的测量手段来获得系统参数时,也适合用PID控制技术。

  • :   即对err(t)分别进行比例,积分,微分运算之后进行加权求和得到输出U(t)。   • 由于单片机控制是采样控制,只能根据采样时刻的偏差控制输出量而不能计算连续输出量,所以要采用离散化的 PID算法。离散数字 PID分为位置式和增量式两种。

  而增量式PID算法对应可由位置式推出:

  具体的代码实现为:

float Realize_PID(PIDTypeDef_t *pid, float get, float set) { 
        
pid->Now_Val = get;
pid->Ex_Val = set;
pid->Err_Now = pid->Ex_Val - pid->Now_Val;

   pid->Output_p = pid->Kp * pid->Err_Now;
   pid->Output_i += pid->Ki * pid->Err_Now;
   pid->Output_d = pid->Kd * (pid->Err_Now - pid->Err_Last);
   pid->Output = pid->Output_p + pid->Output_i + pid->Output_d;

   pid->Err_Last = pid->Err_Now;
   
   return pid->Output;
}

float Incremental_PID(PIDTypeDef_t *pid, float get, float set) { 
        
pid->Now_Val = get;
pid->Ex_Val = set;
pid->Err_Now = pid->Ex_Val - pid->Now_Val;

   pid->Output_p = pid->Kp * (pid->Err_Now - pid->Err_Last);
   pid->Output_i = pid->Ki * pid->Err_Now;
   pid->Output_d = pid->Kd * (pid->Err_Now - 2.000f * pid->Err_Last + pid->Err_LastLast);
   pid->Output += pid->Output_p + pid->Output_i + pid->Output_d;

   pid->Err_Last = pid->Err_Now;
   pid->Err_LastLast = pid->Err_Last;
   
   return pid->Output;
}

  • 公式中没有体现周期T,其实考虑到周期是一个常数,就直接合在了系数中。采样周期和控制周期都会影响系数。

  • 在PID算法中,比例环节 P 的作用是成比例地反映控制系统的偏差信号e(t),一旦产生偏差,比例控制环节立即产生控制作用以减小偏差;积分环节 I 的作用是消除静差,提高系统的无差度。微分环节 D 的作用是反映偏差信号的变化趋势,能够在偏差信号变化之前先引入一个有效的早期修正信号来提前修正偏差,加快系统的动作速度,减少调节时间。

  • 所谓增量式PID 是指数字控制器的输出只是控制量的增量△u(k)。增量式PID优点在于,由于输出的是增量所以误动作时影响小,必要时可用逻辑判断的方法关掉。另外由于控制增量△u(k)的确定仅与最近k次的采样值有关,所以较容易通过加权处理而获得比较好的控制效果。

  • 在PID参数的选择上,公认的常规方案是,过程控制系统(如电机控制)因较慢的响应常采用PI控制,突出积分项的作用,而随动控制系统(如舵机控制)为了达到较快的响应常采用PD控制。   大多智能车队会推荐速度环使用增量式PID,方向环使用位置式PID,这是由于增量PID由于也不容易造成电机的正反转切换。但我们认为,在合适的参数下,增量式PID与位置式PID应该是可以等价。

6.2 改进式PID:

  • 不完全微分PID:   微分项的控制可以加快动态响应的同时,也可能带来极大的高频扰动,因而使用微分项常常采用串接低通滤波的方式,以克服高频干扰,抗微分扰动。

  将一低通滤波环节串接在PID控制器的输出后,或单独串接在微分项的输出之后。   pid->Output = pid->Output * Lpf1Factor_Out + pid->Output_Last * (1.000f - Lpf1Factor_Out);   pid->Output_d = pid->Kd * (pid->Err_Now - pid->Err_Last) * Lpf1Factor_d + pid->Output_dd * (1.000f - Lpf1Factor_d);

  • 微分先行PID:   :将低通滤波串联在反馈环节(如编码器环节)   pid->Now_Val = get * Lpf1Factor_val + pid->Last_Val * (1.000f - Lpf1Factor_val);   D:将低通滤波串联在偏差环节   pid->Err_Now = (pid->Ex_Val - pid->Now_Val) * Lpf1Factor_err + pid->Err_Last * (1.000f - Lpf1Factor_err);

  • 变积分PID:      死区即实际工程中可容忍的最大误差。实际应用中,小误差产生的原因很大可能是由于测量误差或其它不可避免因素造成而不是实际误差。在较小的偏差下弱调节或不调节,可以让控制避免抖动更加平滑。      在普通PID控制中引入积分环节主要是为了消除净差和提高控制精度。但在控制系统启动或停车或大幅度增减目标值时,由于积分饱和作用,短时间内会造成系统有特别大的偏差,会造成PID运算的积分积累,致使输出量特别大,很容易导致超调,甚至会引起系统较大的震荡。   当误差绝对值大于阈值时取消积分项避免过量超调,在大误差范围内减小积分项作用。当被控量接近目标值时(即误差正常时),引入积分控制,以消除净差,提高控制精度。

if (pid->Err_ABS > 50) { 
        
   ki_index = 0.000f;
} else if(pid->Err_ABS > 30 & pid->Err_ABS < 50) { 
        
ki_index = 0.600f;
} else if(pid->Err_ABS > 25 & pid->Err_ABS < 30) { 
        
   ki_index = 0.900f;
} else { 
        
   ki_index = 1.000f;
}

pid->Output = pid->Output_p + pid->Output_i * ki_index + pid->Output_d;

  积分分离也会导致启动时或是状态变化时PID上升时间边长,若要运用则应多次实验并谨慎来选择范围和系数。若阈值太大,达不到积分分离的目的,若太小又有可能因被控量无法跳出积分分离区,只进行PD控制,将会出现残差。   

  积分分离每一段的ki_index值都为常数,而变速积分则采用系数的形式,使得积分的分段更加线性化。

if (pid->Err_ABS > L_Err) { 
        
   ki_index = 0.000f;
} else if (pid->Err_ABS < S_Err) { 
        
   ki_index = 1.000f;
} else { 
        
   ki_index = (L_Err - pid->Err_ABS) / (L_Err - S_Err);
}

  变速积分控制更为缓慢,实际应用体验还是积分分离效果更好。      当根据PID位置算法算出的控制量超出限制范围时,控制量实际上只能取边际值U=Umax,或U=Umin,有效偏差法是将相应的这一控制量的偏差值作为有效偏差值计入积分累计而不是将实际的偏差计入积分累计。      在计算U(k)时,若上一时刻的控制输出量U(k-1)超过限制范围,则根据偏差的符号决定是否将相应偏差计入积分项。

if (ABS(pid->Output_Last) > OutputLimit) { 
        
if ((pid->Err_Sum > 0 && pid->Err_Now < 0) || (pid->Err_Sum < 0 && pid->Err_Now > 0)) { 
        
       pid->Err_Sum += pid->Err_Now;
  }
} else { 
        
   pid->Err_Sum += pid->Err_Now;
}

  o 实际工程中,如切换PID模式,则建议消除积分项以避免积分饱和。   • 专家PID:   专家PID依赖经验与规则的制定,同样也依赖调参。专家PID使用时多用于电机环。

if (pid->Err_ABS < S_Err) { 
        
   //小偏差 较小误差, 调小比例
   pid->Output = Offine_K * pid->Output;
} else if (pid->Err_ABS > L_Err) { 
        
//大偏差
   //串联BangBang-PID
pid->Output = (pid->Err_Now > 0) ? (9500) : (-9500);
} else { 
        
//正常偏差
if ((pid->Err_Now * (pid->Err_Now - pid->Err_Last) > 0 && pid->Err_Last * (pid->Err_Last - pid->Err_LastLast) > 0) || (pid->Err_Now - pid->Err_Last) == 0) { 
        
       //偏差在朝向偏差绝对值增大的方向变化(偏差越来越大), 或者偏差一直为某一固定值
       if (pid->Err_ABS > Mid_Err) { 
        
           //控制器实施较强的控制作用
           pid->Output = Online_K * pid->Output;
      } else { 
        
      //但是偏差绝对值本身并不是很大
           pid->Output = pid->Output + 0;
      }
} else if(pid->Err_Now * (pid->Err_Now - pid->Err_Last) < 0 && (pid->Err_Now - pid->Err_Last) * (pid->Err_Last - pid->Err_LastLast) > 0 || (pid->Err_Now == 0 && pid->Err_Last == 0) { 
        
       //偏差的绝对值向减小的方向变化,或者已经达到平衡状态
       //此时可以保持控制器输出不变
} else if(pid->Err_Now * (pid->Err_Now - pid->Err_Last) < 0 && ((pid->Err_Now - pid->Err_Last) * (pid->Err_Last - pid->Err_LastLast) < 0)) { 
        
       //偏差处于极值极限状态
       if (pid->Err_ABS > Mid_Err) { 
        
           pid->Output = Online_K * pid->Output;
      } else { 
        
           //但是偏差绝对值本身并不是很大
           pid->Output = pid- 

标签: 电连接器的防呆结构防呆型电连接器热熔胶传感器转角传感器装夹不紧影响fpc连接器性能的四因素传感器胶粘

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台