智能车软件培训_第1页
智能车软件培训_第2页
智能车软件培训_第3页
智能车软件培训_第4页
智能车软件培训_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

传承,突破,创新

——逐鹿智能车软件培训目录CONTENTS1单片机和c语言简介2车模类别与轮胎处理3传感器与调试工具介绍4程序算法流程5PID控制6实战操作第一部分单片机FUNDATIONC语言通用IO口1.输入2.输出中断1.内部中断2.外部中断3.中断优先级定时器1.输入捕捉2.输出比较3.内部定时4.脉冲计数单片机常用模块GPIOInterruptTimer串口1.波特率2.帧格式3.接收发送中断IIC/SPI1.通讯时序图2.通讯可靠性3.硬件

模拟模数转换1.采样精度2.采样速度3.单通道多通道采样单片机常用模块

SCIIIC/SPI

ADCC语言重点是函数,数组和指针,结构体和枚举要求掌握,链表文件不做要求。>>右移运算符比如0x66>>1=0x33<<左移运算符比如0x66<<1=0xCC~按位取反比如~0x66=0x99!非运算比如!10的值就是0&按位与比如0x66&0x33值就是0x22&取地址运算符比如int*a,b=10;a=&b;|按位或

比如0x66|0x33值就是0x77^按位异或相异为1相同为0比如0x66^0x33的值就是0x55C语言简介—需要掌握的知识.结构体变量常用于查询成员,比如b.c->指向结构体指针常用此来查询成员比如a->b其与(*a).b相互等价(括号不可去)?:三目运算符比如a>b?a:b其意思是查询a和b的较大值熟练掌握和运用c语言是做软件最最基本的要求。步骤1创建name.h头文件和name.c源文件步骤2name.h里面必须加上#ifndef_NAME_H#define_NAME_H//声明相关变量和函数#endif步骤3name.c里面必须把name.h包含进去#include”name.h”

步骤6如果包含头文件过多,不妨新建include.h头文件专门包含头文件,其他源文件想调用其他函数只需将include.h包含进即可步骤5main.c源文件中将name.h包含进去#include”name.h”main.c中就可以使用name.c中断函数步骤4name.c里面主要放相关的函数和使用到的变量,name.h里面主要存放相关变量和函数的声明C语言简介—项目工程搭建方法第二部分车模类别Workreview轮胎处理12光电电磁循迹必须采用电感,电感种类不限,通过识别赛道中间铺设通有交变电流的导线来识别中线,由此完成比赛,软件算法相对简单,硬件相对比较复杂。循迹必须采用光电传感器,比如摄像头,CCD,通过采集赛道两侧的边缘,由此计算出中线,由此完成比赛,软件算法比较复杂,硬件相对比较简单。车模类别(传感器)-两大类DFCA直立车模三轮车模双电机车模单电机车模智能车六大车模类别BE单电机车模直立车模E♂干练,沉稳,坚韧主要指A车和B车,他们使用动力澎湃的RS560单电机,虽然是单电机,但性能足以碾压双RS380,速度提升主要依靠算法和机械,机械主要讲究合理的重量分配,算法可以使用十分暴力的bangbang,贝壳的神车看一眼就感觉特别稳重。车模性别♀灵巧,迅捷,秀气主要指D车,E车,F车,这三种车模都是双RS380电机,与动力强劲的560电机相比,可以说是柔弱,其速度的提升与机械结构有密不可分的关系,机械结构主要讲究合理,紧凑,简单,神车给人的第一感觉就是一个字美。C车模虽然采用双电机但兼顾了二者的优点,电子差速+舵机,转向异常灵活,可以说是所有车模跑的最快的,所以它属于12ACDF车模BE车模轮胎处理优先采用软化剂,隔夜一定要涂抹软化剂,保鲜膜包上更佳,不推荐锉刀,搓不好可能会适得其反,多跑多磨在任何时候都是提升摩擦力的最佳办法。轮胎内部有填充海绵,相对较软,推荐将内部海绵改换成其他相对较硬的路肩,填充硬度一定要把握好,跑起来小车轮胎不跳且不凹陷为佳,最后用704硅橡胶封边处理即可。涂抹软化剂最好用保鲜膜包上,隔夜即可感受不一样的摩擦力。轮胎处理:第三部分传感器Achievement调试工具传感器传感器模块循迹编码器干簧管陀螺仪通过采集一定时间编码器返回脉冲的个数,可以测定前进距离再除以时间即可得到速度。监控车身姿态,常见有两种:模拟(AD)和数字(IIC)陀螺仪摄像头或者电感,提取赛道元素,通过一定算法可求取中线,传给mcu进行下一步处理。磁控开关,常用于检测起跑线标志。采用IIC通讯协议,六轴指的是三轴陀螺仪+三轴加速度计,能输出xyz轴三个角速度和xyz轴的加速度,可以监控车身姿态识别特殊的赛道(环岛),或者作为转向PID直立PID中的一个负反馈环节,获取姿态角度(ROLLPITCHYAW)一般有三种方法。方法一:卡尔曼滤波,角速度进行积分可以获得角度,积分会存在温飘,所以需要加速度计去校准,加速度计可以测量重力加速度,其中PITCH和ROLL角度可以通过反正切函数可以求得,YAW只可以通过陀螺仪X轴积分求得,将加速度计算得的角度和陀螺仪积分求得的角度传给卡尔曼滤波,调整好相关参数即可获得稳定的数据。方法二:互补滤波,陀螺仪算得的角度*置信系数+加速度计算得的角度*(1-置信系数),即可获得角度,效果没有卡尔曼滤波好,但是比较简单。方法三:硬件滤波,mpu6050内置DMP硬件滤波可以直接输出四元数,对四元数进行一定换算即可获得十分稳定的数据,但是移植起来非常麻烦,涉及很多库函数,目前我们学校kea128还没有移植成功。Tips:六轴

模拟陀螺仪输出的是电压信号,进行AD采集即可获得相关轴的大小,其余算法同数字陀螺仪,模拟陀螺仪占用借口较多,但数据不易出bug,数字陀螺仪IIC通讯出错可能会产生很严重的bug导致程序卡死.六轴数字陀螺仪MPU6050陀螺仪使用介绍512数字指的是编码器齿轮旋转一圈,编码器脉冲引脚输出512个等幅高低脉冲,恩智浦单片机定时器一般都具有脉冲累加功能,配置相关寄存器,采集一定时间内的脉冲个数,可以算得编码器旋转的圈数,编码器齿轮的齿数反比上电机齿轮的齿数即可求得电机齿轮旋转的圈数,电机齿轮旋转的圈数*车轮轮胎面到齿轮圆心的竖直距离*2π即可求得小车前进的距离,距离再除以时间就可得到速度,旋转方向可以使用GPIO口来读取,但要注意得到的速度要再乘以方向系数,前进为1后退为-1,。F车速度公式V=index*count*207/(1175*time)index:表示旋转方向,count表示单位时间获取的脉冲个数,time表示时间单位s,输出的速度单位为cm/s。

编码器的速度曲线一般都比较平滑,滤波处理比较简单,使用梯度滤波和滑动平均滤波就可以最大限度的降低编码器曲线上的噪点。如果车身速度很快(2.5以上),过弯时会产跳轮的现象,编码器数据已不能正确反映车身速度,影响过弯速度,此时需改进滤波算法。512线mini增量编码器编码器使用介绍电感是电磁车的眼睛,赛道中漆包线流过的微弱的电流与电感产生电磁感应,产生的感应电流经过运放放大,最后传给单片机的AD采集口,即可获取赛道信息,电感水平左右放置,漆包线与电感垂直的时候产生的感应电流最大,在赛道上从左至右移动电感,电感上面感应电流应该是先逐渐变大,再逐渐变小,所以最简单中线提取算法是差比和,即中线偏移的距离=(左电感-右电感)/(左电感+右电感)*增益。感应电流输出的曲线平滑程度跟运放有很大关系,运放一般采用OPA2350运放,数据波动在个位数字,只需简单的滑动平均滤波。电感安装时要注意相邻两个电感切忌安装过近,至少要有两厘米的距离,否则会产生互感现象,具体现象就是过十字的时候车身会产生振动,严重的会导致十字直接冲出赛道。平时调车的导线留过的电流与比赛时不同,比赛时如果不采取相关措施,可能会产生很多误判导致无法完成比赛,我们有两种解决办法,第一种是调节运放上面电位器,减小或者增加放大倍数,第二种是使用归一化算法,归一化就是将感应电流采集的最大值对应归一化中的1,最小值对应0,其余均按照value=(value-min)/(max-min)这种思路来换算,在赛场上只需采集最大和最小电流即可。Tips:精密电感如果有条件建议使用,尤其是采集中线和识别特殊元素的电感,需要保持电感感抗相互对称。电感电感使用介绍干簧管有两种塑封和玻封,一般安装与电磁车底盘下方,用来识别起跑线,起跑线下方有纽扣大小的磁铁,经过后会使干簧管吸合,吸合后连接单片机引脚上的电平产生变化,即可据此判断出起跑线。单片机识别干簧管的电平方式一般有两种,第一种是采用外部中断,配置相关寄存器设置为上升(下降)沿和高(低)电平触发即可,这种方式好处是特别灵敏,基本不存在漏判,但有时候会误判。第二种采用GPIO口读取,读取到高(低)电平即可,这种方式优点是不会误判,但会漏判,所以需要在IO口上并很多干簧管去检测。干簧管一般采用塑封,不容易损坏,且可靠,引脚两端使用时要并上104电容进行简单的硬件滤波。干簧管干簧管简单介绍NRF24L01:一般称作2.4G,采用SPI通讯,传输速度很快,切采用2.4Ghz无线技术,通信距离较远,但协议比较复杂,占用IO口比较多,调试起来相对麻烦,对新手不是很友好,且通信不是很稳定,易断线。蓝牙:采用串口通讯,通讯可靠,使用简单,但传输距离较短,且通信波特率不可设置过高,导致其传输速度较慢。1.蓝牙2.NRF24L01调试模块--通讯模块其他通讯调试工具:串口WIFI无线串口SD卡模块红外遥控:红外接收头接收到遥控器发送的信息,产生一定的PPM信号,单片机通过输入捕捉引脚进行解码即可,主要用于调整参数,避免平时调试时小车

失控冲出赛道到处乱撞。蜂鸣器:分有源和无源,用IO或PWM来做驱动信号主要用来进行程序算法检测,和一些操作的提醒,比如按键按下或者程序执行产生响声。LED:用法同蜂鸣器,但一般在程序框架刚刚搭建时使用,寻找程序框架中隐藏的bugOLED:一般使用SPI来点亮屏幕上面的亮点,据此可以显示不同的参数和程序的运行状态,五向开关主要负责快速设置相关参数,二者相互配合便于进行人车交互,缺点是相关算法比较庞大,内存占用较多.1.OLED显示屏+按键/拨码开关2.红外+蜂鸣器+LED调试模块—人机操作界面+++STEP2STEP1STEP3将outputdata.h和outputdata.c添加进工程添加库文件更改OutPut_Data()函数中的发送一个字节的函数,将其改为自己单片机中能发送一个字节函数。更改相关函数在main函数中,调用OutData[0]=a;OutData[1]=b;OutData[2]=c;OutData[3]=d;OutPut_Data();abcd表示你想要发送的变量,完成即可在软件中看到波形。调用函数串口示波器—VisualScope使用说明Tips:如果使用串口示波器,单片机中不能同时发送其他跟串口示波器无关数据,否则显示不出来图像。第四部分程序流程图ArithmeticAnalysis真实程序框架流程图程序程序框架说明第五部分自动控制简介典型案例PIDPID介绍串级pid模糊PID自动控制方式简介

开环控制是指系统的被控制量(输出量)只受控于控制作用,而对控制作用不能反施任何影响的控制方式。采用开环控制的系统称为开环控制系统。优点:结构简单,成本低廉,易于实现缺点:对扰动没有抑制能力,控制精度低

开环控制自动控制方式简介·闭环控制闭环控制是指系统的被控制量(输出量)与控制作用之间存在着负反馈的控制方式。采用闭环控制的系统称为闭环控制系统或反馈控制系统。闭环控制是一切生物控制自身运动的基本规律。人本身就是一个具有高度复杂控制能力的闭环系统。优点:具有自动补偿由于系统内部和外部干扰所引起的系统误差(偏差)的能力,因而有效地提高了系统的精度。缺点:系统参数应适当选择,否则可能不能正常工作。PID介绍

PID调节器是一种线性调节器,这种调节器是将设定值r(t)与输出值c(t)进行比较构成控制偏差e(t)=r(t)-c(t)

将其按比例、积分、微分运算后,并通过线性组合构成控制量,如图所示,所以简称为P(比例)、I(积分)、D(微分)调节器。

位置式pid可表示为u(t)=kp*e(t)+ki*∫e(t)+kd*de(t)/dt

增量式pid可表示为Δu(t)=kp*(e(t)-e(t-1))+ki*e(t)+kd*(e(t)-2*e(t-1)+e(t-2))模拟PID调节器控制系统框图010203按比例反映系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用用以减少偏差。比例作用大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下降,甚至造成系统的不稳定。比例调节使系统消除稳态误差,提高无差度。因为有误差,积分调节就进行,直至无误差,积分调节停止,积分调节输出一常值。积分作用的强弱取决与积分时间常数Ti,Ti越小,积分作用就越强。反之Ti大则积分作用弱,加入积分调节可使系统稳定性下降,动态响应变慢。积分作用常与另两种调节规律结合,组成Pl调节器或PID调节器。积分调节能反映系统偏差信号的变化率,具有预见性,能预见偏带变化的趋势,因此具有超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。因此,可以改善系线的动态性能。在微分时间选择合适的情况下,可以减少超调,减少调节时间。微分作用对噪声干扰有放大作用,因此过强的微分调节,对系统抗干扰不利。此外,微分反应的是变化率,而当输入没有变化时,微分作用输出为零,微分作用不能单独使用,需要与另外两种调节规律相结合,组成PD或PID控制器。微分调节PID介绍020103影响小车咬合中线的能力。不论是电磁还是摄像头,转向环都是智能车的核心闭环,所以调好转向环特别有必要,好的转向环不论是大S还是小S咬中线能力都很强,且不失速,也不超调,给人一种柔中带刚的感觉。转向闭环使小车的速度维持到一个恒定的值,有增量式和位置式两种。发车时,速度环不应该有很大过冲,过弯时,速度环要及时补偿上去,不然会失速,出弯入直时,速度环也不应该产生很大过冲速度闭环两轮直立车中所独有的闭环,使直立车站立起来的闭环。直立环不可调节过硬也不可调节过软,不同参数的直立环对其他闭环会产生不同的影响,推荐采用串级方案。直立环智能车中的闭环(单回路)串级PID介绍(双回路)串级控制系统:就是由两个调节器串联在一起,控制一个执行阀,实现定值控制的控制系统串级控制系统中常见的名词术语:主、副变量,主、副控制器(调节器),主、副对象,主、副检测变送器,主、副回路。内环角速度+外环偏差,偏差经过外环pid运算后,输出传给内环进行差速pid计算,外环一般采用pi,内环使用pid(多多尝试)。1.智能车转向环外环速度环+内环直立环,外环速度环计算输出的值传给内环叠加在直立环的角度上面,可以解决单回路速度环与直立环的矛盾问题。2.直立车直立环外环角度+内环角速度,角度偏差经外环运算,传给内环计算,输出值经过处理传给两个电机,另外

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论