智能车竞赛技术报告-单车赛题组-同济大学
Posted 卓晴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了智能车竞赛技术报告-单车赛题组-同济大学相关的知识,希望对你有一定的参考价值。
学 校:同济大学队伍名称:智行·YYYDS
参赛队员:罗翊杰
金屹阳
刘一凡
带队教师:张志明
徐和根
01 方案综述
1.1 项目设计意义
自行车机器人是双轮静态不稳定、动态可稳定机器人的典型代表。研制能自动驾驶的两轮智能交通工具,是控制领域经典而富有学术研究价值的问题。两轮不共轴系统与共轴系统相比,具有静止状态平衡、占地面积小、通过性强和灵活性高的特点。
但是自行车研究目前存在以下问题,首先是自行车平衡系统成本高昂。在互联网上流传甚广的稚晖君的平衡自行车系统,其动量轮,驱动器与传感器的成本过高,不利于自行车机器人技术的普及。其次,目前自行车的平衡需要依靠高速旋转的动量轮,极易造成安全事故。
▲ 图1.1.1 稚晖君的平衡自行车
因此,我组以《竞赛》规定的K型车模为基础,设计开发了基于Infineon Aurix平台的自平衡自行车系统,以较低的成本和较高的安全性,验证实现了自行车的自平衡与摄像头赛道循迹。
1.2 项目方案总述
▲ 图1.2.1 系统方案总体框图
根据竞赛规则相关规定,平衡单车组智能车系统允许使用各类电磁、红外光电、摄像头、激光、超声传感器器件进行赛道和环境检测,车模微控制器使用Infineon Aurix系列多核单片机。赛车的位置信号可由摄像头或者电磁传感器采集,动控制决策。通过编码器测速模块来检测车速,进行脉冲计数计算速度和路程;电机转速控制采用 PID 串级控制。
1.3 项目任务要求
1.3.1 竞赛要求
▲ 图1.3.1 室内循环赛道示意图
1. 车模单车使用K型车模。在车模上允许使用动量轮,动量杆维持车模平衡。如果采用无刷电机驱动动量轮,则需要使用基于Infineon的驱动方案。车模作品制作完毕后,对于车模外形尺寸没有限制。
2. 微控制器与传感器车模微控制器采用Infineon单片机。传感器允许使用摄像头、CCD、光电管、电磁等。
3. 赛道与比赛任务比赛赛道采用室内循环赛道,赛道上铺设有电磁引导线。车模从车库出发,在赛道上运行一周后,最终驶入车库。计时标准:车模从车库驶出到重新驶入车库之间的时间差。
▲ 图1.3.2 系统实物图
02 机械设计
2.1 总述
对平衡自行车这类结构,机械设计是决定车辆性能的关键。为了降低控制复杂度,增强平衡控制的鲁棒性,尤其需要对车模的重心、转弯半径等参数进行严格的测试与控制。本项目依托《全国大学生智能汽车竞赛》的K车模进行搭建。在多轮测试下,我们选择了一种比较优秀的结构设计。有效提高了车身的稳定性。
而为了适应自平衡等功能的需要,我们对车模进行了3D建模,并在此基础上,对车模进行了多层次的改造。
我组对车模的机械改造主要分以下几个部分:动量轮以及支架的安装,电池安装与车模切割,摄像头支架安装等。
2.2 车模切割与支架安装
2.2.1 车模切割与电池安装
单车车模体积小巧,如果想在车模已安装动量轮的前提下,原本放置电池的位置被动量轮替代,因此车模的必须要对车模进行裁剪,来安装电池降低重心,在保证车模原始结构不受影响的前提下,我们对车模进行了最低限度的裁剪。
▲ 图2.2.1 车模裁剪部位
裁切完成之后,我们在车模底部位置粘贴了魔术贴,以此方便地进行电池的安装与更换。
2.2.2 动量轮与支架的安装
为了使剪裁后的车模更加稳定,我们使用了龙邱的动量轮支架和的直流电机,实现车体、电机、飞轮、编码器和齿轮的配合。
动量轮支架分为上下两部分,上部用于连接车模,下部用于固定电机和编码器,上下两部分之间使用三角体连接块连接。上半部分支架有多个螺丝安装孔,可以直接安装在车模原有孔位上,无需再对车模打孔。
▲ 图2.2.2 动量轮支架3D模型图
关于动量轮支架的安装,我组尝试了两种方案:
1. 在车模底部安装动量轮,可降低重心。
2. 在车模顶部安装动量轮,可提升力矩。
在根据理论推导与实际安装测试比较后,我组选择了方案一作为实装方案。
2.2.3 舵机选择与安装
电单车依靠一颗舵机实现车头转向与平衡保持,是单车中最重要的执行机构。K 车模原配舵机为 SD12 舵机,其体积小,且为金属齿轮舵机,响应速度、扭矩满足使用需求。但实际使用后发现,调试时不可避免的车模失控,车头撞击墙等,容易导致小舵机齿轮损坏,损坏率高。考虑到整个舵机价格较高,为降低成本,选取了 SD5 舵机。相比 SD12 舵机,SD5 扭矩更大,不易损坏,响应速度满足要求。但由于不是原配舵机,其安装成了需要解决的问题。为此我们使用了简易的安装支架,如图:
▲ 图2.2.3 合金舵机支架
2.3 电路板的安装
考虑到 K 车模上并没有较多的空间来安装电路板,因此采用极简的设计风格,放弃供应商提供的主控核心板,而采取全4层PCB+SMT的工艺。我组将电路板上所需的部分分为了2个模块,分别是:
1. 主控板,包含主控芯片以及各种电源模块,同时也有部分传感器接口。
2. 电机驱动板:包含电机驱动模块。
电路板的安装需要考虑各种因素,所以我组对此也尝试了好几种方案,并且在最终选出了最适合我们车模的安装方式。
2.3.1 主控板PCB安装
▲ 图2.3.1 主控板PCB的安装方式
主控板PCB上搭载MCU TC264D芯片、三组DC-DC供电与各类外设接口。为了方便主控板的安装,我组选择直接在车模侧面使用魔术贴固定主控板。
03 硬件设计
3.1 外设选型
本方案中,我们使用了大量的外设模块来实现各类功能。这些外设依托各种各样的总线、接口与MCU交换数据。例如,测量加速度和角速度的IMU使用I2C总线,TF卡使用了SPI接口,蓝牙串口使用了UART。其他大部分使用了GPIO口来模拟其他的通信协议或者连接了片上外设比如PWM输出等等。
3.1.1 使用模块简介
在本方案中,我们使用MT9V032灰度摄像头采集赛道信息,ICM-20602感知车身的姿态,用舵机控制车身前进的方向,编码器采集转速,TF卡座和蓝牙串口作调试用,TFT屏幕显示各种状态。
各种模块的供电电压不同,通信方式也千变万化,这里对这些模块进行一些简单的介绍,让我们在设计硬件的过程中对各种模块与MCU的连接不至于太陌生。
各个模块的具体介绍与接口定义如下表,各种接口目前的封装都是标准的HDR2.54接口或者排线接口。
▲ 图3.1.1 系统外设模块总表
3.2 系统供电单元
3.2.1 供电方案分析
智能车竞赛一般使用2芯或3芯串联的锂电池作为供电电池,这种电池额定电压为7.4V,在满电状态下最高不超过8.4V。因此必须使用降压电路,将电源电压降到3.3V才能正常驱动MCU和其他绝大部分外设,模块。事实上,考虑到一些外设需要5V供电加之5V也是常用的逻辑电平,我们常用的方案是将电源电压先降到5V,再从5V降到3.3V。
▲ 图3.2.1 SY8089,SY8113的电路3D仿真
我组在两种常见的降压芯片类型,LDO和DC-DC之中选择DC-DC作为供电方案。
LDO最大的优点是非常好用,1VIN,1VOUT和1GND三个引脚即可使用,几乎不会坏。但是LDO本质上还是线性稳压器,举个例子用5V转3.3V的LDO AMS1117-3.3,输出1A电流需要输入1A电流,也就是有1.7W的功率热耗散了。这就意味这LDO的输入输出压差不能太大,负载也不能很多。
DC-DC,简而言之,就是开关电源,我们日常使用的充电器95%都用到了DC-DC电路。如果说LDO的降压方式类似于一个滑动变阻器的话,DCDC的降压方式类似与快速开关电源输入来达到预定的电压。这决定了DC-DC的效率一般可以超过90%。
3.2.2 DC-DC芯片选择(本方案选用)
DC-DC的降压芯片选用在各种高端ARM的Reference Design中出现的矽力杰同步降压芯片SY8113和SY8089,这两款芯片目前在市面上使用广泛,且能找到各种廉价的PIN to PIN替代品。
3.2.3 供电电路的设计
为了实现稳定供电并且最大限度滤除DC-DC带来的纹波,我组在参考了厂商的Reference Design的基础上进一步优化供电电路,如使用固态电容滤除杂波。最小化电流环与负反馈通路,减小对其他电路的干扰。SY8113与SY8089降压电路图如下:
▲ 图3.2.2 SY8113降压电路图
▲ 图3.2.3 SY8089降压电路
3.3 主控板电路设计与实现
智能车的主板是承载了MCU的最小系统,各种常用的板载外设,外设接口以及设备供电电路。作为一个复杂系统工程的硬件核心,主板可以说是智能车一切的基础。主板的设计,我们采用分而治之的策略,即将各种功能电路高度解耦,保证每一部分的正常工作,便可以得到一个完整主板。
▲ 图3.3.1 主控板PCB 3D渲染图
以下是本方案的大致框架图,其中TC264D右侧的为板载外设,下方的均为通过2.54mm HDR接口与其他各种设备连接。电源方面,方案采用了串级DC-DC降压方案,提供稳定,高效率的5V/3.3V供电。
▲ 图3.3.2 主控板方案简图
3.3.1 TC264D的供电输入与核心电压配置
TC264D是英飞凌AURIX系列嵌入式芯片中典型的一款,片上集成两个核心。AURIX系列芯片主要是面向汽车电子的各种控制类应用,集成了各种各样的复杂功能,因此对TC264D的供电,也不能想一般芯片那样,一正一负就可以正常工作。
TC264D的供电主要分为3类,第一类是支持5V-3.3V宽电压输入的,比如说IO的供电和ADC的电源,第二类是只支持3.3V电压输入,在芯片中主要负责给Flash供电,最后是核心的1.3V电压,这与电脑CPU的供电类似,需要精确且高效的供电支持。
▲ 图3.3.3 TC264D 的电源
TC264D内部集成了5V降压到3.3V的LDO和3.3V到1.3V的电路,理论上来说,只需要单独5V供电即可点亮芯片,但实际上为了稳定,我们通常使用3.3V供电+1.3V开关电源输入的方式为芯片提供电力。
▲ 图3.3.4 SMSP模式为TC264D提供1.3V核心电压
TC264D内部还支持多种方式产生1.3V的核心电压,这里主要分为LDO和SMSP模式,正好对应了上文提到的两种降压方式。在本方案中,我们使用了较为稳定的SMSP模式产生1.3V电压,并使用了英飞凌的BSL215C P+N MOS管芯片作为上下管。
3.3.2 TC264D与主控板外设的连接
TC264D的引脚大致可以分为,电源引脚(VCC,VSS等),功能引脚(如晶振,复位,JTAG等),IO(可以直接指定高低电平,也可以做片上外设输出),模拟输入引脚(默认作VADC的输入引脚)这四类。
因为TC264D的应用场景是汽车电子,芯片内部大部分片上外设可以认为是面向功能的,这就导致了其片上外设经常将不同功能器件比如定时器,ADC等封装成一个外设。所以我们在后续编程的过程中,很重要的一步是将这些外设配置成我们希望的功能。
▲ 图3.3.5 主控板外设接口引脚与TC264D连接简表
3.4 驱动电路设计与实现
为了使我们的系统拥有澎湃的动力,正确驱动电机必须要放在首位。就以竞赛中常见的380有刷电机举例,经我们实测,其稳定运行的电流在0.6A左右,而堵转时电流可以达到惊人的16A。如果直接用MCU的GPIO直接控制电机,无异于蚍蜉撼大树。因此,在智能车竞赛中,我们通常将功率输出与逻辑控制分离,使用一块和主板分立的电机驱动板来单独驱动电机。
3.4.1 智能有刷电机驱动芯片
DRV8701芯片是TI公司在2015年发布的智能全桥驱动芯片,可以驱动4片外置的N-MOS组成的H桥,还支持多种逻辑控制方案,栅极驱动电流配置,限制堵转电流,3.3V/4.8V的LDO输出。
▲ 图3.4.1 DRV8701性能参数表
3.4.2 桥臂mos管选型
下表列举了三种容易买到的贴片mos管,在驱动能力方面,都可以满足竞赛需要,可以根据具体需求,如厂家限制,封装选择,驱动板面积等可自行选择,最终我组选择TPH1R403NL作为实装的驱动mos管。
▲ 图3.4.2 MOS管选型
3.4.3 DRV8701外围电路设计
使用DRV8701驱动有刷电机需要对参考电压与电机电流进行限制,如下式:
I C H O P = V R E F − V O F F A V × R S E N S E I_CHOP = V_REF - V_OFF \\over A_V \\times R_SENSE ICHOP=AV×RSENSEVREF−VOFF
其中A_V是芯片内部放大器的放大系数,等于20V/V,V_off=0.05V,所以一般取0.02Ω,即可实现10A左右的电流控制。
如此,DRV8701便可以被我们完美的使用起来了。在本方案中,实际上未使用电流限制,以便达到最大驱动电流。参考设计如下:
▲ 图3.4.3 DRV8701设计全桥驱动电路
04 软件设计
4.1 系统软件框架
对于一个多任务的,涉及运动平衡、图像处理、存储等功能的复杂系统,良好健康的软件框架尤其重要。
4.1.1 4-Layers架构
因为本项目的相关功能代码从嵌入式底层到实时操作系统均有涉及,跨度较大。因此,我组将工程代码抽象为4层:
▲ 图4.1.1 系统层次简图
-
Hardware Layer与Infineon的iLLD库耦合,负责对MCU的各类片上外设进行配置并抽象出通信接口。
-
Peripheral Layer通过Hardware Layer访问系统的外设模块如SD卡、IMU等,根据各个模块的具体功能抽象出接口给算法使用。
-
Algorithm Layer依靠Peripheral Layer提供的数据进行相关算法处理比如Kalman Filter、Image Process等
-
Thread Layer则是按照RTOS的逻辑将各类算法,外设操作按照线程分类、组织,并最终构建系统。
4.2 实时操作系统RT-Thread
4.2.1 移植RT-Thread到Aurix MCU
RT-Thread是当前热门的国产RTOS,版权属于上海睿赛德电子科技有限公司,于2006 年1月首次发布,初始版本号为0.1.0,经过10来年的发展,如今主版本号已经升级到3.0,累计开发者达到数百万。
为了在TC264D上使用RT-Thread,就必须进行移植,尤其是线程切换等设计内核操作的函数。而TriCore 提供了一种硬件的上下文机制,这种机制是专为嵌入式实时操作系统设计的,目的就是为了能提高线程切换的效率。
因此,我们借助厂商的支持,在TC264D的CPU0内使用了RT-Thread进行线程管理,而CPU1作为协处理器进行异步的图像处理操作。
4.2.2 RT-Thread在项目中的调度
在本项目中,我组主要使用了RT-Thread的动态线程与信号量功能。在所有片上,片外外设初始化完毕后,系统创建若干线程,交由RT-Thread进行调度。
▲ 图4.2.1 RT-Thread系统线程调度示意图
Thread Balance负责车辆的姿态解算、平衡控制与其他各类运动学控制。系统接收到由IMU ICM20602发出的125Hz中断信号即发出信号量将Thread Balance添加到就绪队列进行运动学处理与控制。
Thread Camera主要接收来自协处理器CPU1处理、提取完成的图像信息,进而进行方向控制。同时在也查询接收按键信号量来进行拍摄任务。
Thread Key 负责对系统的8个按键开关进行扫描,只要检测到按键从release跳转到press或者long press状态就发送对应的信号量供其他线程接收。
Thread Life 负责对系统状态进行监测,若系统长时间无法切入Life线程,则发出提示信号,是调试代码时,检验系统稳定性的保障。
▲ 图4.2.2 系统运行时检测画面
05 控制原理
5.1 总述
本项目在竞赛要求的基础上,搭建一个可保持自平衡,具有环境感知能力并且能够在保持稳定的系统。其中系统的自稳定最为关键。我组使用动量轮与控制前轮方向的舵机作为协同平衡控制器,icm20602为陀螺仪和加速度计的硬件架构。软件控制算法为PID控制,使用了串级PID、增量式PID、积分分离等手段。对于传感器测量的源数据则采用了Kalman Filter和滑动滤波来得到控制的反馈量。系统的平衡算法,先后经过MATLAB系统仿真与实机调试验证,具有较好的性能。
5.2 硬件传感器设计
要保持平衡就需要获取车身的状态,包括车身角度、车身角速度。在此我组使用ICM20602作为实装IMU。ICM20602是新一代MEMS IMU具有极小的零漂与封装尺寸。仅需使用一个模块就可以完成对两个量的测量。同时,ICM20602支持的通信端口包括I2C和10MHz的高速SPI,完全适用于单车的平衡控制。
▲ 图5.2.1 ICM20602内部结构图
对于动量轮的控制,除了使用合适的驱动来控制电机还需要安装编码器来实时测量动量轮的转速,使其向我们的目标转速(0rad/min)趋近。在此我们使用的是1024线正交编码器。实际使用只要4根线电源、地、A相、B相。由于动量轮的转速变换范围较大,如果使用96线或更小的编码器会导致在低转时量化误差较大。1024线时在经济和性能考虑下较为合适的选择。
5.3 自行车运动学建模与仿真
对自行车平衡控制,需要对系统进行建模来分析系统的各类性能。为了建模的方便,我们将自行车的车身近似为刚体处理,动量轮为偏移车身重心的提供动量的刚体。于是,我们化用倒立摆系统对自行车的运动学进行分析。
5.3.1 简化系统的建模分析
我们常见的倒立摆或单摆系统如图一所示。若要对其进行控制,需要在转轴出基于摆杆一个力矩,如下图:
▲ 图5.3.1 倒立摆系统模型示意图
对于此系统利用牛顿运动定理和简单的线性化即可得到系统对于的状态空间方程:
x 1 ′ = x 2 x'_1 = x_2 x1′=x2 x 2 ′ = − g l sin x 1 − k m x 2 + 1 m l 2 T x'_2 = - g \\over l\\sin x_1 - k \\over mx_2 + 1 \\over ml^2 T x2′=−lgsinx1−mkx2+ml21T
其中 x 1 = θ , x 2 = θ ′ x_1 = \\theta ,x_2 = \\theta ' x1=θ,x2=θ′ 在支点给轻杆一个力矩T。
但对于我们的单车模型来说,虽然也可近似为一个倒立摆模型,但其控制输入量来源于动量轮,而非转轴支点处的力矩简化如图二。这极大的增加了系统的复杂程度。
▲ 图5.3.2 基于飞轮的倒立摆系统
利用拉格朗日方程推导运动学方程:
L ( q , q ′ ) = T ( q , q ′ ) − V ( q , q ′ ) L\\left( q,q' \\right) = T\\left( q,q' \\right) - V\\left( q,q' \\right) L(q,q′)=T(q,q′)−V(q,q′)
其中 L L L 为拉格朗日算子, q q q 为系统的广义坐标, T T T 为系统的动能, V V V 为系统的势能。同时对 sin θ \\sin \\theta sinθ 作线性化,用 θ \\theta θ 代替。可以得到如下的状态空间方程:
其中 a = m 1 L 1 2 + 4 m 2 L 1 2 + I 1 a = m_1 L_1^2 + 4m_2 L_1^2 + I_1 a=m1L12+4m2L12+I1 , b = ( m 1 + m 2 ) g L 1 b = \\left( m_1 + m_2 \\right)gL_1 b=(m1+m2)以上是关于智能车竞赛技术报告-单车赛题组-同济大学的主要内容,如果未能解决你的问题,请参考以下文章
智能车竞赛技术报告 | 单车拉力组 - 沈阳航空航天大学 - 青梅绿茶队
智能车竞赛技术报告 | 单车拉力组 - 长春理工大学- 追风零队 2021
智能车竞赛技术报告 | 单车拉力组 - 哈尔滨工业大学 - 紫丁香