INT8U VideoStopCollectFlag; //停止当前场的采集 INT8U VideoEvenFlag; //奇偶场标志
INT16S VideoOutputLine; //当前摄像头输出行 INT16S VideoCollectLine; //图像采集行 INT16S VideoCollectInterval; //图像采集行
INT8U Video[VIDEO_HEIGHT][VIDEO_WIDTH]; //摄像头数据 INT8U *VideoP, *VideoCollectP;
INT8S VIDEO_HEIGHTSearchStart[VIDEO_HEIGHT] = { 0 }; //扫描范围 INT8S VIDEO_HEIGHTSearchEnd[VIDEO_HEIGHT] = { 0 }; //扫描范围
//图像参数
INT8S PosStore1[VIDEO_HEIGHT]; //存放每行黑线位置数组 交替存储 INT8S PosStore2[VIDEO_HEIGHT];
INT16S PosStoreAdjusted1[VIDEO_HEIGHT]; INT16S PosStoreAdjusted2[VIDEO_HEIGHT];
INT8S PosStoreFlag = 1; //存放辅助标志 为1半场存放在1 为2本场存放在2 INT8S *CurrentPos; //本场黑线位置 INT8S *PrevPos; //上场黑线位置
INT16S *CurrentPosAdjusted; //上场黑线位置 INT16S *PrevPosAdjusted; //上场黑线位置
INT8U Dianji_data; INT16U Duoji_data;
INT8U THRESHOLD = 155;
INT8U zuo_danxian = 1, you_danxian = 1;
INT16U image_center[VIDEO_HEIGHT] = { 0 }; INT16U sum = 0, dissum = 0; INT8U zhongduan = 1; INT8U count = 0; INT8U b = 0;
INT8S PrlineLeft, PrlineRight;
INT8U Flag, PrcourtLeft, PrcourtRight, TmpFlag = 0,shiziflag=0; //记录各行黑块信息
INT8S BlockPos[VIDEO_HEIGHT][BLACK_BLOCK_MAX_NUM]; //每行搜寻到的各黑块位置
INT8S *BlockPosP;
INT8S BlockStart[VIDEO_HEIGHT][BLACK_BLOCK_MAX_NUM]; //每行搜寻到的各黑块
XI
的起始点
INT8S *BlockStartP;
INT8S BlockEnd[VIDEO_HEIGHT][BLACK_BLOCK_MAX_NUM]; //每行搜寻到的各黑块的终止点
INT8S *BlockEndP;
INT8U BlockSelectedIndex[VIDEO_HEIGHT]; //每行最终黑线选取的黑块索引 INT8U BlockCount[VIDEO_HEIGHT]; //每行搜索到的各黑块个数
INT8U ValidBottomVIDEO_HEIGHT; //有效基行 越往低值越大 INT8U ValidTopVIDEO_HEIGHT; //最顶端有效行位置 越往顶值越小
//电机参数 MOTOR_PWM_MIDDLE中值,大于MOTOR_PWM_MIDDLE为前进,小于MOTOR_PWM_MIDDLE为后退 INT16S MotorPWM = 0; //电机PWM
INT16S MotorPWMPrev = 500; //电机PWM
INT16S MotorFeedBackAvg = 0; //当前电机平均值 以0位基础
INT16S MotorMax = 0; //最大速度 INT16S MotorMin = 0; //最小速度
INT16S MotorMinReal = 0; //根据情况计算的真实速度 INT16U MotorStatusFlag = 0; //标定电机所处状况 INT16U MotorDiffFlag = 0; //标定电机差速所处状况
//舵机参数
INT16S SteerPWM = 0; //本场舵机PWM
INT16S SteerPWMPrev = STEER_PWM_MIDDLE; //上场舵机PWM INT16U SteerMode = 0;
//智能车状态
INT8U CarStatus = 0;
INT16S ValidVIDEO_HEIGHT = 0; //本场有效行数 INT16S ValidVIDEO_HEIGHTNumPrev = 0;
INT16S OffsetAvg = 0; //本场图像平均值 INT16S OffsetAvgPrev = 0;
INT16S OffsetAvgAdjusted = 0; //本场图像平均值
XII
INT16S OffsetAvgAdjusted1 = 0; //本场图像平均值 INT16S OffsetAvgAdjustedPrev = 0;
INT16S OffsetLeftMax = 0; //左边最大值 INT16S OffsetRightMax = 0; //右边最大值
INT8U OffsetLeftMaxIndex = 0; //左边最大值Index INT8U OffsetRightMaxIndex = 0; //右边最大值Index
INT16S AngleTotalAdjusted = 0; //整体角度 INT16S AngleTotalAdjustedPrev = 0; //整体角度
INT16S AngleAdjustedTop1Of3 = 0; INT16S AngleAdjustedMiddle1Of3 = 0; INT16S AngleAdjustedBottom1Of3 = 0;
INT16S SlopeBottomHalf = 0; //斜率1 INT16S SlopeTopHalf = 0; //斜率2 INT16S AngleBottomHalf = 0; INT16S AngleTopHalf = 0;
INT16S SlopeAdjustedVIDEO_HEIGHTD[VIDEO_HEIGHT]; //各行偏差
INT16S SlopeAdjustedLeftDMax = 0; //和顶部底部直线偏差最大值
INT16S SlopeAdjustedRightDMax = 0; //和顶部底部直线偏差最大值Index INT8U SlopeAdjustedLeftDMaxIndex = 0; //和顶部底部直线偏差最大值
INT8U SlopeAdjustedRightDMaxIndex = 0; //和顶部底部直线偏差最大值Index
INT16U CrashedFrameNum = 0; //图像已经丢失的场数 INT8U IsInvalidFrame = 0; //本场是否为无效 INT8U IsInvalidFramePrev = 0; //上场是否为无效
//路况参数
INT16U RoadStatus = 0; //路况信息 INT16U RoadStatusPrev = 0;
//起点识别
INT8U StartLineFlag = 0; INT8U StartLineFlagPrev = 0; INT8U StartLineFlagPrevPrev = 0; INT8U StartLineFlagPrevPrevPrev = 0;
XIII
INT8U StartLineLeftMaxNum = 0; INT8U StartLineLeftMaxNumPrev = 0; INT8U StartLineRightMaxNum = 0; INT8U StartLineNum = 0;
INT8U StartLineRightMaxNumPrev = 0; INT32U SprintDistance = 0; INT32U SprintRunDistance = 0;
//运行分析参数
INT32U RunPulse = 0; //智能车前进距离脉冲数
INT32U RunTime = 0; //智能车行进时间 单位为毫秒
//动态调试
INT16S DynamicVar = 0;
INT8U LOOP = 0; INT8U Temp = 0;
void SystemInit(void) { //INT8U i; //INT8S chooseNum; DisableInterrupts; //disable interrupts IRQCR_IRQEN = OFF; //disable IRQ PLLInit(); //init pll PortInit(); //init port IRQInit(); //init IRQ SCI0Init(); TIMInit(); //init TIM Led1Init; Led2Init; Led3Init; Led4Init; Led5Init; Led6Init; Led7Init; Led8Init;
XIV
相关推荐: