赞
踩
简 介: 本文详细介绍了哈尔滨工程大学“济海追风5队”在第十六届全国大学生智能汽车竞赛基础四轮组中的系统方案。本次比赛采用大赛组委会指定的B3型车模,以英飞凌半导体公司生产的32位单片机TC364DP-LQFP-144为核心控制器,要求智能车识别白色赛道和车库坡道等多个元素,以最快速度完成整个比赛,智能车采用CMOS全局快门数字摄像头MT9V034对赛道信息检测,根据提取连通域得到赛道中线;通过编码器检测智能车的实时速度,使用电感采集电磁信息,利用陀螺仪完成小车出入库,通过红外测距模块实时测距辅助判断坡道等元素;使用PID控制算法调节电机的转速和舵机的打角,实现智能车在运动过程中速度和方向的闭环控制;为了提高模型车的速度和稳定性,使用上位机、按键、OLED模块等调试工具,进行了大量硬件与软件测试。实验结果表明,该系统设计方案切实可行。
关键词
: TC364DP-LQFP-144,图像处理,PID
智能车是一种高新技术密集型的新型汽车,以汽车电子为背景涵盖控制、模式识别、传感技术、电子、电气、计算机、机械等多科学的科技创意性设计,一般主要由路径识别、速度采集、角度控制及车速控制等模块组成。可实现自动驾驶、自动变速及自动识别道路等功能,是现代电子产业发展中一项重要的组成部分。
在我国,教育部为了加强大学生实践、创新能力和团队合作精神的培养,委托教育部高等学校自动化专业教学指导分委员会主办了每年一度的全国大学生智能汽车竞赛。该竞赛以“立足培养,重在参与,鼓励探索,追求卓越” 为指导思想,旨在促进高等学校素质教育,培养大学生的综合知识运用能力、基本 工程实践能力和创新意识。智能车竞赛涉及自动控制、模糊识别、传感技术、电子、电气、计算机、机械与汽车等多个学科,为大学生提供了一个充分展示想象力和创 造力的舞台,吸引着越来越多来自不同专业的大学生参与其中,激发了大学生的创 新思维,对于其实践、创新能力和团队精神的培养具有十分最重要的价值。全国大学生智能汽车竞赛是在竞赛组委会提供的统一汽车模型平台上,使用TC364DP-LQFP-144单片机作为核心控制模块,通过设计道路识别传感器和电机驱动电路、编写相应软件及装配模型车,制作一个能够自主识别道路的模型汽车。参赛队员的目标是模型汽车需要按照规则以最短时间完成单圈赛道。
比赛跑道为表面白色,两边有连续黑线作为引导线,黑线宽为25mm。车模通过采集赛道图像进行路径检测比赛规则限定了跑道宽道区宽度40cm,拐角最小半径50cm,并且规定了各赛道标志的具体指标。参赛队员的目标是使智能车按照规则在规定时间和发车机会下跑完更多的元素拿到更多积分。
根据竞赛规则相关规定,本智能车系统采用大赛组委会统一提供的B3型车模,以英飞凌公司生产的32位微控制器TC364DP-LQFP-144作为核心控制器,在IAR开发环境中进行软件开发。通过CMOS图像传感器拍摄赛道图像,将图像信号输入到TC364DP-LQFP-144微控制器,进行进一步处理获得主要的赛道信息;通过编码器来检测车速,并通过单片机进行正交解码进行脉冲计算获得速度和路程;转向舵机采用PD控制;驱动电机采用PI控制,通过PWM控制驱动电路调整电机的功率;而车速的目标值由默认值、运行安全方案和基于图像处理的优化策略进行综合控制;本次比赛中元素繁多,为了更好得采集赛道元素的信息增加传感器是必然的,我们选择红外模块进行测距,利用陀螺仪获取车身姿态实现出入车库,此外使用两横电感加强环岛的判断稳定性。
根据比赛的基本要求,我们设计了系统总体思路如图1.1所示。
▲ 图1.1 系统结构图
本文共分为六章。第一章主要是介绍了比赛的背景及智能车系统总体方案的介绍;第二章从智能车系统的机械结构出发,详细阐述了智能车系统各部分机械结构的安装和调整;第三章重点介绍了系统中所涉及的硬件设计方案和原理;第四章是介绍了智能系统的软件算法包括图像处理以及电机舵机的控制策略;第五章对调试过程中的一些手段进行讲解;
智能车的核心是控制策略和算法,但机械结构则对智能车的性能上限在一定程度上起到了决定作用。车速较高时,车模出现明显甩尾和侧滑,通过改进机械结构抑制这些现象是车辆优化的第一步。除对车身姿态的影响,机械性能影响车的加减速响应速度、运行对称性和稳定性等,因此,我们在不违反规则的情况下对小车进行多方面改造以使小车具有良好的运行性能。
采用新B3车模,对称性好,尺寸为270240180mm,轮胎尺寸为2961mm,通过对轮胎适量的填充和软化处理,提高减震性和抓地力。驱动电机为RS-380,7.2V的电机功率可达19.25W,额定功率达到0.016kW,额定电压7.2V,额定电流0.5A,额定转速16200rpm,额定转矩可达10.9Nm,外形储存29.237.8mm。伺服电机为S-D5舵机,6V电压时扭力可达6.5kgcm,动作速度快,车模整体质量较轻。智能车的外形大致如图2.1。
▲ 图2.1 智能车外形图
车辆布局特点:
(1) 车模底盘降低,用来降低重心。
(2) 舵机采用竖直姿态,方便控制。
(3) 对前轮进行阿克曼角的调节,保证车直线行驶的稳定性。
(4) 调整电池位置使中心尽量在车体中心
(5) 用轻便坚固的碳杆作为摄像头传感器的支撑材料。
原装车模使用的是NiCd电池,由于其体积大,质量大,不适合车辆高速行驶,此外NiCd电池质量分布不均,相当于增加车身不对称因素。本届比赛支持使用带保护板的两节18650锂电池进行串联供电,经过尝试,我们绘制了锂电池与保护板的连接PCB,购买松下动力型锂电池,放电能力强可以轻松带动两个380电机,通过合理选择电池位置调节车体重心,提高车辆灵活性和灵敏性。俯视图如图2.2所示。
▲ 图2.2 俯视图
舵机转向是整个控制系统中延迟较大的一个环节,为了减小此时间常数,需要对舵机安装方式和位置进行研究和改进。通过分析舵机控制转向的原理可知,在相同转向条件下,转向连杆在舵机一端的连接点离舵机轴心距离越远,转向轮转向变化越快。这相当于增大力臂长度,提高线速度。
舵机安装方式有立式和卧式两种,通过比较得立式安装效果更优。 舵机安装时须保证左右对称,以保证舵机左右转向时力臂相等且处于最大范围,提升舵机响应速度。经理论分析,功率等于速度与扭矩的乘积,加大转向速度必然减少输出扭矩,扭矩过小会造成迟钝,故安装时须考虑到转向机构的响应速度与舵机扭矩之间的关系,获得最佳转向效果。经实验,我们的舵机安装如图2.3所示。
▲ 图2.3 转向舵机安装
为使汽车直线行驶稳定,转向轻便,转向后能自动回正,减少轮胎和转向系零件的磨损等,在转向轮、转向节和前轴之间须形成一定的相对安装位置,叫车轮定位。本系统所采用的智能车通过四只轮胎与地面接触,后轮同轴受到限位,无法调整,与智能车的前进方向保持平行,因此要改变智能车与地面的接触方式,调试出利于车转向、直线的四轮定位,只能通过调整前轮倾角各定位参数来实现。它的安装位置由主销内倾、主销后倾、前轮外倾和前轮前束四个项目决定。
主销后倾如图2.4 所示,是指在纵向平面内主销轴线与地面垂直线之间的夹角,向前为负,向后为正。它在车辆转弯时会产生与车轮偏转方向相反的回正力矩,使车轮自动恢复到原来的中间位置上。所以,主销后倾角越大,车速越高,前轮自动回正的能力就越强,模型车通过增减黄色垫片的数量来改变 主销后倾角。
▲ 图2.4 主销后倾示意图
由于竞赛所用的转向舵机力矩不大,过大的主销后倾角会使转向变得沉重,转弯迟滞。所以我们修改主销后倾大致1~2°如图2.5所示。
▲ 图2.5 修改后的主销后倾
主销内倾如图2.6所示。是将主销(即转向轴线)的上端向内倾斜。从车前方看去,主销轴线与通过前轮中心的垂线之间形成一个夹角,即主销内倾角。轮胎调整为倾斜以后直线行走的时候是轮胎内侧着地,而当过弯的时候,由于惯性车体会要向弯道外侧倾斜,而这时候的外侧轮胎如果倾斜角度事先调整得当则正好可以胎面着地,从而使车辆在弯道获得最佳抓地力。使车轮转向后能及时自动回正和转向轻便。经过多次尝试后我们主销内倾如图2.6所示。
▲ 图2.6主销内倾示意图
车轮前束如图2.7所示。是指两轮之间的后距离数值与前距离数值之差,也指前轮中心线与纵向中心线的夹角。从上往下看,两个车轮指向的方向在前端指向内称为车轮前束,指向外的则称为车轮后束。前轮前束的作用是保证汽车的行驶性能,减少轮胎的磨损。前轮在滚动时,其惯性力自然将轮胎向内偏斜,如果前束适当,轮胎滚动时的偏斜方向就会抵消,轮胎内外侧磨损的现象会减少。
▲ 图2.7 车轮前束示意图
降低车模底盘可以降低重心,车模重心低可以使车模运行更加稳定,获得 更好的转弯特性。所以,在保证车模可以通过灯盘的情况下,底盘尽可能的降低,可以使车更加快速稳定。对于B3车模,通过增加塑料垫片,可以修改车模底盘的高度,所以成员自主设计并打印了3D打印件在前轮固定,来降低车模底盘高度,如图2.8所示。
▲ 图2.8 底盘高度调节
如果说优秀的算法是智能车的核心,那么可靠的电路是智能车的基石。电路看似简单,但若要设计出稳定可靠的电路也十分困难。只有一个良好、稳定的硬件环境才能保证车能平稳快速的行驶。我们在整个系统设计过程中严格按照规范进行。本着可靠、高效的原则,在满足各个要求的情况下,尽量使设计的电路简单。电路设计的过程是艰辛却也充满收获的过程。本章旨在叙述芯片的选型以及电路设计的要点与建议。
单片机最小系统为智能车系统核心控制部件。我们采用了封装为LQFP-144的TC364DP芯片。原理图如图3.1所示:
▲ 图3.1 单片机系统原理图
3.2. 电源模块设计
电源模块为系统其他各个模块提供所需要的电源。设计中,除了需要考虑电压范围和电流容量等基本参数之外,还要在电源转换效率、降低噪声、防止干扰和电路简单等方面进行优化。可靠的电源方案是整个硬件电路稳定可靠运行的基础。
全部硬件电路的电源由两节18650锂电池串联提供(额定电压7.4V,满电电压8.4V)。由于电路中的不同电路模块所需要的工作电压和电流容量各不相同,因此电源模块应该包含多个稳压电路,将充电电池电压转换成各个模块所需要的电压。为满足需要,本车模上存在6种供电电压:
(1) 智能车使用锂电池供电,选择带均衡功能的保护板可以同时给两节电池充电,正常使用时电压在7.4~8.4V。可直接用于电机供电。
(2) 使用稳压芯片LM2940-5V 输出电压5V,用于运放、驱动、蜂鸣器、陀螺仪、编码器等供电。原理图如图3.2.1所示。
▲ 图3.2 稳压电路8.4V-5V原理图
(3) 使用稳压芯片AS1015 输出可调电压5.5V,用于舵机供电。
▲ 图3.3 转压电路5V-3.3V原理图
(4) 使用稳压芯片AS1015 输出电压4.2V,用于将电池进行一级稳压。
▲ 图3.4 转压电路8.4V-4.2V原理图
(5) 使用LDO芯片AMS1117-3V3输出3.3V电压给编码器和OLED供电。
▲ 图3.5 转压电路4.2V-3.3V原理图
(6) 使用两路稳压芯片TPS76833来获得3.3V电压,分别给易受干扰的单片机和摄像头部分供电。
▲ 图3.6 转压电路4.2V—-.3.3V原理图
BTN7960 是一款用于电机驱动应用的集成大电流半桥。它是 NovalithlC M 系列的一部分,在一个封装中包含一个 p 沟道高侧 MOSFET 和一个 n 沟道低侧 MOSFET,并带有一个集成驱动器 IC。由于采用了 p 沟道高边开关,因此无需电荷泵,从而最大限度地减少了 EMI 集成驱动器 IC 使与微控制器的接口变得容易温度、过压、欠压、过流和短路保护 bTN7960 为受保护的大电流 PWM 电机驱动器提供了成本优化的解决方案,且电路板空间消耗极低。
▲ 图3.7 540电机驱动原理图
电磁传感器采用的是电容电感传感对来采集交变的电磁线电流信息。交变的电磁信号距离电磁信号线的平方成反比关系,我们可以通过采集到电磁信号的强度获得车体距离赛道中间的距离,从而进行车体的运行姿态的改变。
▲ 图3.8电磁信号检波放大原理图
主板上的接口电路主要包括编码器接口、电机舵机接口、陀螺仪接口和TFMINI激光雷达接口。
▲ 图3.9接口电路原理图
如果说优秀的算法是智能车的核心,那么可靠的电路是智能车的基石。电路看似简单,但若要设计出稳定可靠的电路也十分困难。只有一个良好、稳定的硬件环境才能保证车能平稳快速的行驶。我们在整个系统设计过程中严格按照规范进行。本着可靠、高效的原则,在满足各个要求的情况下,尽量使设计的电路简单。电路设计的过程是艰辛却也充满收获的过程。本章旨在叙述芯片的选型以及电路设计的要点与建议。
对于一辆性能稳定且优秀的智能车来说,摄像头传感器尤其重要。综合比较了 MT9V034 与 OV7725 摄像头传感器的优缺点之后,小组成员讨论决定使用总钻风MT9V034 摄像头传感器。该款摄像头具有帧频率高、硬件二值化和 BGA 封装 等众多优点。
▲ 图3.10摄像头实物图
1024线正交mini迷你编码器用来采集小车速度信息,为小车的速度控制提供反馈依据,使小车始终按照给定的速度行驶。选择测速传感器时需要考虑:测速的精度,稳定程度以及传感器的安装等因素。
▲ 图3.11编码器实物图
激光雷达模块相对于传统红外测距模块具有功耗低,准确度高,灵敏度高等特点,适合于智能车速度快时对于元素的识别
▲ 图3.12激光雷达实物图
本系统采用总钻风摄像头MT9V034摄像头进行赛道识别,电感做辅助识别,运用tifmini测距模块,陀螺仪模块对赛道元素和车辆运行状态进行检测。在转向和速度控制方面,采用PID控制算法,使智能车支持快速稳定完成比赛任务。
至十五届智能车竞赛起基础四轮摄像头限高10cm内,这成为了很多队伍舍弃摄像头识别,选择电磁识别的重要原因,但是根据各大高校队伍及本队伍的实践检验,10cm摄像头虽然在识别控制上难度有所提升,但切实可行。为实现10cm摄像头识别实际可操作,先根据实践经验总结以下内容。
(1) 摄像头高低的限制,实际限制的重点处并非在识别距离,而在左右视野范围缩小。对于赛道的识别实际是对赛道左右边界的识别,左右视野范围的限制会导致车辆更容易在弯道及其他特殊元素更容易丢失边界,对于同一元素由于车辆不同位置和运动状态视野图像更容易出现“有左无右”、“有右无左”……等情况,即对于代码对于各种情况的适应性以及不与其他元素误判的准确性都提出了新的考验。
(2) 提高左右视野范围。使用广角镜头,本系统运用150°微畸变广角镜头。
本系统不对采得图像进行逆透视处理,故选用微畸变镜头,若采用则可使用更高度数广角镜头。
(3) 确定识别距离。根据车辆速度和控制中断时间确当决定转向和速度的识别行或决策行。
(4) 赛道元素识别难度增加,融入电磁识别,将减少大量识别工作量,同时极大程度提高识别准确性。
方案一、选定决策行后,依据灰度值从中间向两边搜索边界。
方案二、两个像素点的差值除以两个像素的和值(公式为:abs(a-b)*100/(a+b)),简称差比和。
▲ 图4.1 直道
我们由于每次出库车模放置位置可一定程度上确定,因此根据车模情况,确定左右出库的固定转舵,陀螺仪记录角度,当角度达到预期情况时结束出库。
入库首先需要完成对斑马线的识别,由于斑马线是赛道上唯一出现的黑白跳变情况较多的情况,因此直接根据跳变情况做出判断即可,同时考虑到赛道需要跑两圈,第一次识别到跳变情况控制车辆直行,第二次识别则开始入库。
若对于斑马线的识别准确则可保证每次入库位置大致相同,则可直接根据车模情况打固定舵,借助陀螺仪判断完成入库。
▲ 图4.2 斑马线
在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称 PID 控制,又称 PID 调节。PID 控制器问世至今已有近 70 年历史,它以其结构简单、稳定性好、 工作可靠、调整方便而成为工业控制的主要技术之一。当被控对象的结构和参数不能完全 掌握,或得不到精确的数学模型时,控制理论的其它技术难以采用时,系统控制器的结构 和参数必须依靠经验和现场调试来确定,这时应用 PID 控制技术最为方便。即当我们不完 全了解一个系统和被控对象,或不能通过有效的测量手段来获得系统参数时,最适合用 PID 控制技术。PID 控制,实际中也有 PI 和 PD 控制。
PID 控制器是一种线性控制器,它根据给定值与实际输出值构成控制偏差。将偏差的比例§、积分(I)和微分(D)通过线性组合构成控制量,对被控对象进行控制,故称 PID 控制器,原理框图如图
▲ 图4.3 PID控制器原理框图
简单说来,PID 控制器各校正环节的作用如下:
位置式 PID 中,由于计算机输出的 u (k) 直接去控制执行机构(如阀门),u(k)的值和执行机构的位置(如阀门开度)是一一对应的,所以通常称为位置式 PID 控制算法。
位置式 PID 控制算法的缺点是:由于全量输出,所以每次输出均与过去的状态有关, 计算时要对过去 e(k)进行累加,计算机工作量大;而且因为计算机输出的 u(k)对应的是执行机构的实际位置,如计算机出现故障,u(k)的大幅度变化,会引起执行机构位置的大幅度变化,这种情况往往是生产实践中不允许的,在某些场合,还可能造成严重的生产事故。因而产生了增量式PID 控制的控制算法,所谓增量式 PID 是指数字控制器的输出只是控制量的增量△u(k)。
当执行机构需要的是控制量的增量(例如:驱动步进电机)时,可推导出提供增量的 PID 控制算式。由于一般计算机控制系统采用恒定的采样周期 T,一旦确定了 KP、TI 、TD,只要使用前后三次测量值的偏差,即可求出控制增量。
增量式 PID 具有以下优点:
(1) 由于计算机输出增量,所以误动作时影响小,必要时可用逻辑判断的方法关掉。
(2) 手动/自动切换时冲击小,便于实现无扰动切换。此外,当计算机发生故障时,由于输出通道或执行装置具有信号的锁存作用,故能保持原值。
(3) 算式中不需要累加。控制增量△u(k)的确定仅与最近 k 次的采样值有关,所以较容易通过加权处理而获得比较好的控制效果。
但增量式 PID 也有其不足之处:积分截断效应大,有静态误差;溢出的影响大。使用时,常选择带死区、积分分离等改进 PID 控制算法。
调节舵机占空比,观察舵机左右转动情况确定舵机左右极限值;初略设置舵机中值,占空比固定,车辆放置于直道行进,根据观察得行进路线进行微调,确定中值。在行驶中,运用pid将巡线偏差给到舵机占空比上实现方向控制。为适应不同速度、偏转大小等因素,我们采用分段式PID,通过不同PID参数提高了车辆适应性和稳定性
运用编码器获取实时速度,利用PID实现对电机闭环控制。
```python
MotorOutLast = MotorOut;
MotorOutLast = MotorOutLast>6000?6000:MotorOutLast;
MotorOutLast = MotorOutLast<-6000?-6000:MotorOutLast;
MotorOut = MotorOutLast-(int)(MotorIMotorErrArray[9] + MotorK(MotorErrArray[9]- MotorErrArray[8]) - MotorD*(MotorErrDerivative-MotorErrDerivativeLast));
if(MotorOut>=0)
{
MotorOut = MotorOut>10000?10000:MotorOut;
pwm_duty(ATOM0_CH3_P21_5, (int)MotorOut);
pwm_duty(ATOM0_CH0_P21_2, 0);
}
else if(MotorOut<0)
{
MotorOut = MotorOut<-10000?-10000:MotorOut;
pwm_duty(ATOM0_CH3_P21_5, 0); //电机正转
pwm_duty(ATOM0_CH0_P21_2, (int)(-MotorOut));
}
## <font face=黑体 color=#7a37ab>4.6 运动姿态</font>
利用IMC20602得到车辆运行角速度和角度用以识别坡道等元素。
```python
  get_icm20602_gyro_spi();
  get_icm20602_accdata_spi();
  w_y_re_use=w_y_re_use-icm_gyro_y_clean;
  w_z_re_use=w_z_re_use-icm_gyro_z_clean;
  angle_acc=(atan2(icm_acc_x,icm_acc_z))*acc_unit_conversion;
  angle_gyro=w_y_re_use*gyro_unit_conversion ;
  angle_re=angle_k1*angle_acc+(1-angle_k1)*(angle_re+angle_gyro*0.002);
运用AURIX Development Studio作为软件开发工具。ADS是英飞凌公司于2019年底推出的免费的集成开发环境,支持英飞凌TriCore™内核AURIX™ 系列MCU;ADS是一个完整的开发环境,包含了Eclipse IDE、C编译器、Multi-core调试器、英飞凌底层驱动库(low-level driver,iLLD),同时对于编辑、编译及调试应用代码没有时间及代码大小的限制。调试界面如图5.1所示:
▲ 图5.1 ADS调试界面
为了更好得掌握摄像头采集到的图像信息且从中提取出有用信息,我们采用“逐飞科技智能车传感器调试助手”对图像进行观察
▲ 图5.2 “逐飞科技智能车传感器调试助手”显示界面
实时了解车控以及进行远程调参能够极大推进车辆调试进度,因此我们选用逐飞科技无线串口透传模块和vofa+上位机软件在调试阶段对车辆进行监控和调参。
▲ 图5.3 上位机显示界面
▲ 图5.4 逐飞科技无线串口透传模块
经实验证明10cm摄像头可以完成对赛道及各项元素的识别,但是识别难度大幅提升,摄像头融合电磁的识别方式能够极大程度降低识别难度以及提高识别稳定性。对运用PID算法足够用于控制车辆转向和速度,同时若对PID算法进行分段处理,则可提高车辆适应性。智能车具有极强的综合性,机械决定车辆性能上限,硬件决定车辆稳定性,软件为车辆核心,唯有通力合作,考虑周全才能在赛场上一展风姿。
[1] 卓晴,黄开胜,邵贝贝.学做智能车 [M].北京:北京航空航天大学出版社.2007.
[2] 英飞凌基础四轮组浅析(https://mp.weixin.qq.com/s/I3aH8Mf66C7GZRctKc-grg)
[3] 蔡述庭.“飞思卡尔”杯智能汽车竞赛设计与实践 [M].北京:北京航空航天大学出版社. 2012.
● 相关图表链接:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。