当前位置:首页 >> 学科竞赛 >>

智能车辅导


中国农业大学 创新实验室 常 华
changhua@cau.edu.cn 2010.2

智能车比赛的特征:
公平、公正、公开。

规则透明、裁判透明、场地透明、统一车辆、统一控
制器。 比赛项目: 电磁组竞速、光电组竞速、摄像头组竞速、花样表演 比赛日程:大区赛3天、全国总决赛3天

赛地点:每年变更。
比赛日期:每年9月左右。 奖项:每赛区约每组约60个队,跑下来就三等奖。前 30~35%为1、2等奖。赛区一等奖进入全国总决赛。

竞赛规则
试车日:每队半小时,上下午各一次。 跑道:一个小园交叉、大波浪、小波浪、弯道、坡道(决赛)、

停止线
上午预赛1:顺时针。试车一圈;3次正式机会(如果第一次跑完 全程,后面的机会就没有了,与此类推) 下午预赛2:逆时针。试车一圈;3次正式机会(如果第一次跑完 全程,后面的机会就没有了,与此类推)。

两次预赛成绩取最好的排名。
决赛:两个预赛跑道对称相连。按排名逆序比赛试车一圈;3次 正式机会(如果第一次跑完全程,后面的机会就没有了,与此类 推)。 进入一等奖条件:约2米/秒(视跑道而定)

基本基础知识

单片机原理及接口技术
自动控制理论

数字电路与模拟电路基础
模糊控制基础 传感器技术基础 基本技能 测试仪表的使用

基本工具的使用
焊接技术

印刷电路板的设计

注意事项:

团队合作,资源共享,多交流;
良好的工作作风和习惯; 多看一些参考书和相关资料; 坚持不懈,才能有结果; 工作安排: 熟悉菲斯卡尔单片机。熟悉其I/O接口、PWM接口、AD、串 口、定时器的编程。 摄像头接口信号,电磁传感器接口信号的获取

编码器的工作原理及信息提取
小车主电机和舵机的控制设计 主控程序的编制(注意菲斯卡尔单片机的独特功能) 总装调试。

资料的查找:

有关小车竞赛的文章,照片,视频。
有关菲斯卡尔单片机使用方面的资料。如实验、开发平台、 编程技巧等。 有关摄像头的工作原理、接口方法、接口信号等。 有关编码器的资料。编码器的接口及接口信号等。

摄像头组与电磁组的主要不同:
循迹信号的获取。其他均近似或一样。 如主电机控制、舵机控制、决策、速度反馈等。

决策系统是软件的内核。根据车的状态不同而不同。
硬件的可靠性是成败的关键。 合理分工、分工不分家:硬件设计、信号测量、软件编制等。

一、系统控制为什么要引入负反馈
r(t)
开环控制器

u(t)
对象

y(t)

r(t)
闭环控制器

u(t)
对象

y(t)

1. 使不稳定的系统变为稳定系统 2. 降低参数、噪声、和非线性失真的影响 3. 使系统的输出随着输入按照规定的方式运动(保 持系统的最优状态),如快速性等。 4. 加大系统的负载能力输出(特性变硬)

r(t) +

e(t)
D(s)

u(t)
G(s) F(s)

y(t)

_

D( s )G ( s) Y ( s) ? R( s ) 1 ? D( s) F ( s)G ( s) H ( s) ? D( s)G ( s) 1 ? D( s) F ( s)G ( s)

构成负反馈系统的一般原则:
输入端与给定量做差运算。

系统的运动轨迹就是 系统传递函数所代表 的微分方程的解

将要跟随输入量的变化而变化幵保持稳定的系统输出量反馈至 最终的闭环传递函数一般选择为二阶系统传递函数,从而使系 统具有较好的动态特性。

close all;clear all; num=1; den=[10,1]; printsys(num,den,'s') G=tf(num,den); sisotool

100k 20u

仿真时间20秒。

实际的小车模型、舵 机模型还会有滞后环 节,会使得调节器的 设计非常困难。

?导入被控对象模型 ?构造闭环系统 ?将闭环系统离散化0.1秒 ?观察开环系统的阶跃响应 ?设计默认的PI调节器K=50 ?观察闭环环系统的阶跃响应

二、小车控制系统1——双单环串联控制系统
舵机调节器一般 选择为P调节器 角度 偏差 速度调节器一般 选择为PD调节器 转速 输出

摄像头

舵机

+

_
舵机调节器
θ
舵机角度 给定

车速 给定

信号 变换器
v

+

_

速度调节器
码盘 θ

主电机

角度偏差 给定为 0度

车速 反馈

e

一般而言:
摄像头、舵机调节器、码盘的传递函数可视为常数 舵机、主电机及小车的传递函数为一阶惯性系统——e- τs k/(Ts+1) 且舵机的时间常数小于主电机的时间常数。 信号变换器为一线性运算。其输出为:K—|输入|

三、小车控制系统2——双单环模糊串联控制系统
小车控制系统1的方案的主要不足: 主要被控环节的传递函数不易得到。即便得到,也是一个时变 系统。例如:舵机模型会随着车速、路面、轮胎、扭转角度的 不同而发生变化。主电机模型(小车模型)会随着载重、拐弯大小、

路面、轮胎的情况不同而发生变化。

解决方法:引入模糊控制方案。 模糊控制方案:简单地说,就是根据经验构造的、由一堆有一 定规律的if—then语句形成的表格。用此表格代替原有固定参量

调节器,形成模糊调节器。

对一般的控制系统而言: 以角度——速度控制为例:
输入的物理量为一模糊
角度 速度 偏小

变量,分度的多少和分
度范围视控制精度而定。

偏小 加速2

适中 加速1

偏大 保持

适中
偏大

加速1
保持

保持
减速1

减速1
减速2

表栺一般具有对称性。
角度 偏差

摄像头

舵机
信号 变换器

+

_
舵机调节器
舵机角度 给定

车速 给定

速度模糊调节器

转速 输出

角度偏差 给定为 0度

车速 反馈

速度模糊 控制表 码盘

主电机

四、小车控制系统3——双环模糊非串联控制系统
实际上,舵机转角也是随着车速的变化而变化的。同样的弯道, 车速高,舵机的转角就要大一些;车速低,舵机的转角就要小

一些。
因此,舵机转角的输出也应该随着车速的变化而变化。 同样,可以仿照速度模糊控制器的设计来设计舵机模糊调节器。
角度 偏差

摄像头

舵机

+

_
舵机模糊 控制表
舵机模糊调节器

舵机角度 给定

车速 给定

速度模糊调节器

转速 输出

信号 变换器
车速 反馈

角度偏差 给定为 0度

速度模糊 控制表
码盘

主电机

五、模糊控制器的基本构成和工作原理 例:定义“青年人”
μA(x) 1.0

? A ( x) ? e

?(

x ?20 2 ) 7

某个年龄的人隶 属于“青年人” 的程度:隶属度

在整个年龄论域X 上定义青年人的模 糊集合A

10

20

30

X

三角形

半角形

Z形 控制系统中常用的 隶属函数

梯 形

钟 形

模糊控制器的工作过程——模糊逻辑推理过程 模糊控制器的组成: 1. 输入量的模糊化——通过隶属函数使输入量成为模糊论域中 的模糊量。 2. 模糊推理——通过经验建立模糊推理模型,根据模糊量推出 输出模糊量。 3. 输出量的精确化——将输出模糊量通过量化表转换成精确的 输出量。
模糊控制器 清 晰 量 模 糊 量 E 模糊化 模糊推理

语言则规

模 糊 量 U 清晰化

清 晰 量

r

e

u

y 对象

影响控制效果的几个主要因素: 隶属函数形状、重叠率、模糊论域的多少、模糊论域的分割。 隶属函数形状的选择——最简单的是使用用三角形
μ μ

in

in

重叠率的选择——使用最多的是重叠率为0.5
μ

μ

μ

50

70

90

50

60

70

80

50 55

60

75

0 70 ? 60 60 ? 55 重叠率 ? ? 0 重叠率 ? ? 0.3 重叠率 ? ? 0.2 90 ? 50 80 ? 50 75 ? 50

目标:针对大惯性带滞后一阶系统设计一模糊控制器。
常用控制规则表1(rule01.fis)

输出U
NB

NB PB

NM PB

输 入 变 量 Eek (e)

NM NS ZE PS PM PB

PB PB PB PM PM ZE

PB PB PB PM ZE ZE

输 入 变 量 EΔek (Δe) NS ZE PS PM PM PS PM PM PS PM PS ZE PM ZE NM ZE NS NM NS NM NM NS NM NM

PM ZE

PB ZE

ZE NM NB NB NB NB

NM NM NB NB NB NB

某控制系统模糊控制器的设计
μ(e)

输入变量 隶属度 e输入 变量值

1

-6 NB

-4 NM

-2 NS

0 ZE

2 PS

4 PM

6 PB

离散化论域
Ee
α1 α2 e

-1

-0.66 -0.33

0

0.33

0.66
0.78

1

连续量论域

μ(Δe) 输入变量 隶属度 1

-6 NB

-4 NM

-2 NS

0 ZE

2 PS

4 PM

6 PB

离散化论域
EΔe β1 β2 Δe

Δe输入 变量值

-1

-0.66 -0.33

0

0.33

0.66

1

-0.12

连续量论域

? Mamdani推理方法

对应4条规则 每条规则的条件有2个隶属度, 取较小的隶属度,共4个隶属 度,用于切割结论的隶属函数。

第一种方法:根据控制规则表 if e=PM and Δe=ZE then U=NM min(α1, β1)=α1 ?切u:NM if e=PB and Δe=ZE then U=NM if e=PM and Δe=NS then U=NS min(α1, β2)= β2 ?切u:NS if e=PB and Δe=NS then U=NS

min(α2, β1)=α2 ?切u:NM

min(α2, β2)= β2 ?切u:NS

μ(u)

1
β1 β2 α1 α2

NB

NM

NS

ZE

PS

PM

PB

u

第二种方法: e: max(α1, α2) = α1 ?PM Δe: max(β1, β2)=β1 ?ZE

对应规则: if e=PM and Δe=ZE then U=NM
min (α1, β1) = α1 ?切u:NM e: min(α1, α2) = α2 ?PB Δe: min(β1, β2)=β2 ?NS

对应规则: if e=PB and Δe=NS then U=NS
min(α2, β2)= β2 ?切u: NS
μ(u)

1
α1
β2

NB

NM

NS

ZE

PS

PM

PB

u

-2

-1.32

-0.66

0
输出值

0.66

1.32

2

以角度——速度控制为例, 观察模糊推理过程。

fis_disp
角度 速度 偏小 适中 偏大

所有隶属函数使用三角形函数 偏小 加速2 加速1 保持 重叠率:50% 适中 加速1 保持 减速1 采样时间: 角度输入范围:-15 -- +15 偏大 保持 减速1 减速2 速度输入范围:0 -- 50 速度输出范围:-10 -10(指的是在当前速度的基础上的+/-偏量)

仿真时应注意: 如果输入超过了 限制,就会出现 输出为0的情况。 因此对输入应加 装限幅装置。

六、模糊控制器?到模糊控制表的生成(Matlab R2007a版)
1. 在fuzzy工具箱中生成并检查模糊控制器是否符合要求,调整各参 数使其符合要求并命名存盘如car01.fis。

2. 建立一个新的simulink文件如图。
3. 在File—Model Properties—Callbacks—InitFcn 中写如下代码: car_ruler=readfis(‘C:\MATLAB目录\car01.fis’); %读入模糊控制器。 A=0;B=0; %A、B赋值

4. 双击模糊控制器图标, 在变量输入框内写入car_ruler
5. 执行这个Simulink文件(必须保证没错) 6. 命名、存盘。如car01.mdl。 7. 在Simulink下,点击Tools—SystemTest…进入系统测试界面

在系统测试环境下: 1. 在Test Browser标签下,点击Main Test; 2. New Test Elements—Simulink;在红色输入框内输入已存盘的 Simulink文件名。 3. Test Vectors—New;使用默认名输入两个输入变量的起始值:步长: 终了值。 4. Test Variables—New;使用默认名输入输出变量名。 5. 在Properties标签下的Define Model Overrieds区域内 New Mapping—Select Block to Add…;在弹出的Simulink图中选择输入 量。Simulink Data选择Constant Value; System Test Data选择输入变量。 6. 在Map Simulink Data to Test Variables区域内 New Mapping—Outport Signal;Simulink Data选择Out1; System Test Data选择默认变量名。 7. 在Test Browser标签下,点击Save Results,在Properties标签下点击 New Mapping,使用默认变量名保存测试结果。

配置完成的系统测试界面

按动左上角的运行图标,执行测试(或按下F5)

测试完成后,会自动进入Test Result Viewer界面。 给定各坐标变量,就会生成模糊控制曲面,其数据被保存在 Workspace中的结构stresults里。 在命令窗口可

以用命令看到
数据内容。 stresults.testvect or.TestVector1 stresults.testvect

or.TestVector1
stresults.variabl e.Var1

得到控制表(不是最好的方法):

建立一个新的simulink文件如图。
双击查找表图标,在参数输入框内按如下

式填入参数。
注意:

stresults.variable.Var1(:,:,k)
中的k可以是stresults.variable 结构中的任何一个。 k的大小与仿真运算时设置的 时间有关。 设置完成后点击Edit…即可得到控制表。

查表方法选择: Interpolation-Use End Values — This method performs linear interpolation as described above but does not extrapolate outside the end points of x and y. Instead, the end-point values are used. — This method does not interpolate or extrapolate. Instead, the elements in x and y nearest the current inputs are found. The orresponding element in z is then used as the output. Use Input Below — This method does not interpolate or extrapolate. Instead, the elements in x and y nearest and below the current inputs are found. The corresponding element in z is then used as the output. If there are no elements in x or y below the current inputs, then the nearest elements are found. Use Input Above — This method does not interpolate or extrapolate. Instead, the elements in x and y nearest and above the current inputs are found. The corresponding element in z is then used as the output. If there are no elements in x or y above the current inputs, then the nearest elements are found.

更方便地得到控制表(但查表方法是默认的)
设仿真时间为 0秒,则系统测试的输出量为: stresults.variable.Var1(TestVector1个数× TestVector2个数) 此时,可从Workspace直接得到控制表。 注意:得到控制表后,应对其内容通过fuzzy设计器中的

view—rules功能与所设计的模糊控制器进行必要的核实,
核实无误后方可使用。

切记:C语言的下标是从0开始,而Matlab语言的下标是
从1开始。

Good Methods !!!

七、系统调试注意
1. 采样间隔必须相等——必须使用定时器 2. 应保证每一个采样周期内完成一次调节 3. 可采用FIR数字滤波器抗干扰,以保证系统的稳定性 4. 调整原则,遵循“从内向外、从后向前”的原则

5. 模糊论域不是越多越好,建议使用7级,最大不要超过9
级。而模糊控制表则视精度要求而定,如15×15等。 6. 模糊控制表的论域相互之间应有交叠,否则不是模糊控 制,而是逻辑控制(但并不是说逻辑控制不可以)。 7. 为了更方便的调试,建议增加供调试用无线信号传输网 络以及多档参数切换开关。

八、弯道的弯度判断

? 图像的几种基本情况
? 中线左侧为道内,反之道外。 ? 由于摄像头视角的变形,可 以通过线性变换重构图像或 换算弯道的弯度。

? 图像的主要三个特征参数应
该是:A、B、C。 ? 可以利用模糊矩阵判断弯道

交叉道和 停止线
C
N —θ
B 0

弯度的大小。应注意到表格
可能出现的不对称性。 定义各个量的方向:
B

A
L

P θ

马克思曾经说过:“任何一门科学只有充分

利用了数学才能够达到完美的境界”。

角度 模糊 判断 表
角度 偏差

摄像头 舵机
舵机角度 给定 车速 给定 速度模糊调节器

+
角度偏差 给定为 0度

_

转速 输出

舵机模糊 控制表
舵机模糊调节器

信号 变换器
车速 反馈

速度模糊 控制表 码盘

主电机

C语言三维数组的定义 int a[2][2][3]={1,2,3,4,5,6,7,8,9,10,11,12};
5 6 9 10 11 12

1 3

2 4

7 8

close all;clear all; p=8;x=rand(p,1),y=rand(p,1); figure;plot(x,y,'r*');hold on; x0=mean(x);y0=mean(y); % the center point r=sqrt((x-x0).^2+(y-y0).^2); % the radius theta=acos((x-x0)./r); %the angle index=lt(y-y0,0); theta(index)=2*pi-theta(index) %计算各个点的角度 [theta,i1]=sort(theta) r1=r(i1) Step1: theta=[theta(:); 2*pi+theta(1)]; 随机闭合曲线 r1=[r1(:);r1(1)]; ——赛道的生成 theta1=min(theta):2*pi/100:max(theta); r2=spline(theta,[0;r1;0],theta1); %插值 %r2=interp1(theta,[r1],theta1,‘pchip’); %此法圆滑程度差 ttt=[theta' theta1];rrr=[r1' r2]; [ttt,i2]=sort(ttt);rrr=rrr(i2); xx=rrr.*cos(ttt)+x0;yy=rrr.*sin(ttt)+y0; h=plot(xx,yy);set(h,'LineWidth',5); save ('race_road_data','xx','yy');

Step2: 赛道数据的生成

close all;clear all; load ('race_road_data','xx','yy'); img=imread('race_road_img.jpg'); img=im2bw(img);[m,n]=size(img); figure;imshow(img);hold on;

x0=60;y0=-103; x=1366*xx+x0;y=m-490*yy+y0;
h=plot(x,y);set(h,'LineWidth',2);

close all;clear all; load ('race_road_data','xx','yy'); img=imread('race_road_img.jpg'); img=im2bw(img);[m,n]=size(img); h_road=figure;imshow(img);hold on;

Step3: 智能车竞赛仿真

x0=60;y0=-103; x=1366*xx+x0;y=m-490*yy+y0;
% h=plot(x,y,'r');set(h,'LineWidth',2);hold on; h=plot(x(1),y(1),x(2),y(2),'o');set(h,'LineWidth',10);hold on; h_camera=figure; s0=30;s1=120;[m,n]=size(x);step_l=3; %>=2 for i=1:step_l:step_l*fix(n/step_l)-step_l sita=atan((y(i)-y(i+step_l))/(x(i)-x(i+step_l))); c_x1=s0*sin(sita); c_x3=s1*cos(sita); c_y1=s0*cos(sita); c_y3=s1*sin(sita); c_x2=s0*sin(sita); c_x4=s1*cos(sita); c_y2=s0*cos(sita); c_y4=s1*sin(sita); x1=x(i+step_l)-c_x1; y1=y(i+step_l)+c_y1; x2=x(i+step_l)+c_x2; y2=y(i+step_l)-c_y2; set(h_road,'Visible','on'); % plot([x1,x2],[y1,y2],'-b');hold on; h=plot(x(i),y(i),x(i+1),y(i+1),'o');set(h,'LineWidth',10);hold on; if (y(i)>y(i+step_l)&&x(i)>x(i+step_l))||(y(i)<y(i+step_l)&&x(i)>x(i+step_l)); %2,3-Quadrant x3=x1-c_x3; y3=y1-c_y3;

X=[x1,x2,x3,x4];Y=[y1,y2,y3,y4]; xx0=fix(min(X));yy0=fix(min(Y)); xx1=fix(max(X));yy1=fix(max(Y)); camera=~imcrop(img,[xx0,yy0,xx1-xx0,yy1-yy0]); if (y(i)>y(i+step_l)&&x(i)>x(i+step_l))||(y(i)<y(i+step_l)&&x(i)>x(i+step_l)); %2,3Quadrant camera=imrotate(camera,-90+sita*360/2/pi); else %1,4-Quadrant camera=imrotate(camera,-270+sita*360/2/pi); end camera=~camera; [m,n]=size(camera); for i=m:-1:1 a=camera(i,:); b=circshift(a,[1,1]); c=xor(a,b); num=sum(c); if num>=2 break;end end camera_r=camera(i-s1:i-1,fix(n/2)-s0:fix(n/2)+s0-1); T = maketform('affine',[1 0 0;0 0.5 0; 0 0 1]); camera_s = imtransform(camera_r,T);


相关文章:
智能小车实践报告
教师参与辅导自主完成实训任务; 2015 年 5 月 22 日:进度检查 2015 年 5 ...当车身下左边的传感器检测到黑线时,主控芯 片控制左轮电机停止,车向左修正,当...
简易智能小汽车报告模板
简易智能小汽车队长:黄洋 队员:尹志军 赛前辅导老师: 臧春华 梁荣新 文稿整理...分别置于轨道的两侧, 根据其接受到白线的先后来控制小车转向来调整车向, 但测 ...
智能车竞赛相关资料
智能车竞赛相关资料_工学_高等教育_教育专区。第七届全国大学生“飞思卡尔”杯...裁判组人员均不得在现场比赛期间参与任何针对个别参赛队的指导或辅导工作, 不得...
中大智能车参赛手册
第六届智能车挑战赛 中山大学第六届 智能车挑战赛 参赛手册 指导单位:中山大学...包括技术评判组及现场裁判组人员均不得参与提供任何对个别参赛队的 指导或辅导...
简易智能小车设计报告
2003 年全国大学生电子设计竞赛 设计报告 E 作者:吴作智 作者 赵青 简易智能电动车 董全超 (山东大学控制科学与工程学院 邮编 250061) 赛前辅导老师: 姚福安 ...
达内培训:嵌入式WIFI智能车免费学习_嵌入式培训_教学视...
视频教程,达内IT培训集团全套教学,在线学习嵌入式培训课程,达内培训:嵌入式WIFI智能车视频下载
嘉兴学院智能汽车志愿者培训手册V6.01
嘉兴学院智能汽车志愿者培训手册V6.01_哲学_高等教育_教育专区。“飞思卡尔”杯大学生智能汽车竞赛志愿者培训手册(第六版) 浙江赛区承办单位 2015-7-2 1 目录 1...
智能车设计大赛策划书
电子设计大赛介绍 电子设计大赛介绍物理与电子工程学院举办的智能车设计大赛是面向...调试技术和 EDA 软件工具 的使用辅导,赛前将在实验室集中培训,如电烙铁、...
智能环保汽车
智能环保汽车山西省阳泉市矿区红岭湾小学 六(5)班 李正阳 辅导教师:吴向美 武...这是一种现代科技的一种新型汽车,它是有环保卫生的一种汽 车。 每一种汽车...
智能停止系统不工作,是故障吗?【汽车维修培训干货】
将汽车需要启动的时候,驾驶员松开自动踏板,车 辆就会迅速启动,进入起步准备状态。 智能停止系统如何控制发动机? 发动机正常启动,驾驶,遇到红灯,驾驶员踩下踏板,停止...
更多相关标签:
智能车 | 智能车论坛 | 名爱新能源智能车 | 飞思卡尔智能车大赛 | 飞思卡尔智能车 | 恩智浦智能车 | 智能车官网 | 中国智能车未来挑战赛 |