致 谢
今年能够参加第八届飞思卡尔杯全国大学生智能汽车赛我们首先要感谢信息科学与工程学院王击老师的悉心指导,指导老师多次询问研究进程并为我们指点迷津。其严谨的治学态度以及对我们的关怀使们获益甚多,感动颇深。
在准备比赛期间我们得到了参加过第七届比赛的学长的许多非常实用的帮助和建议,在这里要特别感谢他们。另外也感谢一起准备比赛的队员,没有他们的帮助我们不可能完成工作。
另外我们还要感谢德州仪器公司以及飞思卡尔公司为我们提供的芯片支持,没有一个大范围的比较是不可能选出最优最合适元器件出来的,我们的小车能够顺利的参赛要感谢这两大公司的帮助。
第 37 页
参考文献
[1] 教育部高等学校自动化专业教学指导分委员会. 关于举办第三届全国大学生“飞思卡尔”杯智能汽车竞赛的通知[EBOL]. 2007-11-01.
[2] 邵贝贝. 单片机嵌入式应用的在线开发方法. 北京:清华大学出版社. 2004年10 月第1 版.
[3] 方兴,郭思明,马明煌. 上海交通大学速度之星队技术报告.
[4] 卓晴,黄开胜,邵贝贝.学做智能车[M].北京:北京航空航天大学出版社,2007.24~27. [5] Freescale Semiconductor Inc. S12PWM8B8CV1D Block User Guide V01.17[Z]. 2004. 1~51. [6] National Semiconductor. LM1881 Video Sync Separator General Description[Z]. June 2003 [7] 杨明,宋雪峰,王宏,张钹.面向智能交通系统的图像处理[J].计算机工程与应用.2001年09期.
[8] 余灿键,程东成,李伟强.PID算法在智能汽车设计上的应用.——《学做智能车——挑战“飞思卡尔”杯》[C].北京:北京航空航天大学出版社,2007.133~135.
第 38 页
程序附录
#include \
----------宏定义----------- 图像处理
#define HEIGHT 6561 #define WIDTH 200 #define AD 30 灰度阈值 #define CENTER 95 95
电机控制
#define SpeedPWMMax 800
#define MaxMoto 80 电机PWM周期#define PBangBang 30 棒棒阈值 #define NBangBang 50
sd卡速度记录 int sdimage=0; int sdaddr=100; unsigned char sp[512]; int sps=0;
int16 COUNT = 0;
舵机控制
第 39 页
#define DuoMiddle 1290 0 1290 #define DuoLeftMax 1045 1050 250 1018 #define DuoRightMax 1535 1530 -270 1562
uint8 a,b,c,d;
----------全局变量定义----------- 图像处理
uint8 THRESHHOLD = 100; 二值化阈值 uint8 Buffer[HEIGHT+1][WIDTH] = {{0}};
int16 leftBoundary[HEIGHT] = {0}; 图像的左边界 int16 rightBoundary[HEIGHT] = {0}; 图像的右边界 int16 midLine[HEIGHT] = {0}; 中心线 uint8 midBeginRow = 0; uint8 midEndRow = 0;
int16 midEndCol =0; 加入了赛道平移,可能出现负数 uint8 leftBeginRowFlag = 0; 寻到左边界起始行标志 uint8 rightBeginRowFlag = 0; 寻到右边界起始行标志 uint8 leftBeginRow = 0; 寻到左边界的起始行 uint8 leftEndRow = 0; 寻到左边界的结束行 uint8 rightBeginRow = 0; 寻到右边界的起始行 uint8 rightEndRow = 0; 寻到右边界的结束行 uint8 leftEndRowFlag = 0; 寻到左边界结束行标志 uint8 rightEndRowFlag = 0; 寻到右边界结束行标志
int16 lastLeftBoundary[3] = {0}; int16 lastRightBoundary[3] = {0};
第 40 页
int16 lastLeftRow[3] = {0}; int16 lastRightRow[3] = {0};
uint8 leftValidity = 0, rightValidity = 0; uint8 imgValidity = 0; 图像有效性 int16 roadType; 赛道类型 int16 yinDaoRowLen;
int16 leftMaxBoundary,leftMaxRow,rightMinBoundary,rightMinRow; int16 leftRowLen,rightRowLen;
float midSlope; 最后一行中心线相对与图像第一行中点的斜率倒数 int16 midColLength; int16 avmidEndRow; int16 lastMidColLen[3]; float slopeBoundary = 0; uint8 =0; 图像出界失效标志位 int16 t=0; 拨码开关用 uint16 Ay,Az;
int16 tempValue; 写SD卡用 unsigned char floatString[8]; unsigned char intString[7]; char count[5]; void main(void) {
uint8 a,b,c,d; uint8 m; uint8 *p; int sdimage=0;
第 41 页