图8. 判断跑道是弯曲型还是S型的子程序
如果10个光电传感器都无法检测到黑色轨迹,智能车系统能通过中断模式确定黑色轨迹的位置。然后,智能车系统确定是否智能车出跑道。如果是,智能车系统工作在误差处理机制下。如果不是,智能车系统继续操作跟踪控制算法。误差处理机制是智能车系统从绘制表中度最新的历史数据并将其发送给中央处理单元。然后CPU确定最后一个检测到黑线的传感器并且控制舵机,以至于智能车可以回转。 4. PID控制系统的智能汽车
智能车系统根据PID算法使发动机的实际速度接近给定的速度[5]。在μC/ OS - II的系统中,数字PID控制算法分为立场式控制算法和渐进式控制算法。为了减少计算量,并得到一个稳定的结果,舵机控制将采取渐进式控制算法。公式是(1)如下。
?U(K)?Kp(En?En?1)?KiEn?Kd(En?2En?1?En?2)
(1)
由公式1,我们可以看到,增量 与误差 ,后一个误差 ,最后误差 有关系。因此,如果
CPU每时每刻都知道误差 的值,那么它就可以进行PID算法,输出舵机控制变量并且有效地控制转向角。图11是计算流程。
图9. S型轨迹目标速度的流程图
图10. 中断程序确定是否智能车跑出轨道
图11. 电机速度控制模块
智能车系统通过坐标法能很容易地控制转向角。例如,当0号传感器检测到了黑色轨迹时,智能车系统将相应的坐标设置为数-17。旁边的传感器是远离中心线的,有一个更大的坐标数字对应着传感器。表1显示,每一个光电传感器具有一个特定的坐标数字。
表一 与光电传感器相匹配的坐标
整个智能车系统有三个任务组成,该三个任务在μC / OS - II系统中[8]。它们分别是光电传感器的路径检测,速度检测和控制。控制任务是由PID子程序和P子程序以及测绘表还有路径识别子程序组成。我们必须根据它们的功能优先分配每个任务。由于光电传感器是智能车的眼睛,它需要有一个强有力的实时性。最高优先级是设置给AD光电传感器路径检测任务的。第二个优先级是设置给控制
任务的。最后,最低优先级设置给速度检测任务。表2是对每个任务的优先分配表。
表二. 任务优先级分配
智能车系统根据任务1确定路径信息。然后, CPU给任务2发送路径信息与此同时任务2给舵机和电机发送相应的PWM脉冲。图12是工作流程。
我们在CodeWarrior IDE软件中编译C + +程序[7]。下面的代码是主要的程序代码。 PID结构的定义: struct PID {
int Proportion; // Proportional Const int Integral; // Integral Const
int Derivative; // Derivative Const int LastError; // Error[-1] int PrevError; // Error[-2] int Outlimit;// Output limiter int Output; } speed1;
PID的计算:
double PIDCalc( PID *pp, double NextPoint ,double A,double Pup, double Pdown); 速度结构的初始化:
void init_pid(struct PID *pid,int p_gain,int i_gain,int d_gain, int le,int pe,int outlimit, int ot); 计算PWM占空比:
PWM=PIDCalc(&speed1,SetPoint,Speed); *MotorPWM =PWM;
图12.每个任务在μC / OS - II系统中的工作流程图
三.实验结果
通过仿真可以在如图13中那样看到结果,我们观察到通过使用改进后的算法智能车可以满足稳定性和更快的速度来跟踪规定的轨迹。
图13 智能车在仿真环境下的稳定运行
四.结论
在本文中,跟踪控制算法是基于光电传感器的基础上提出的。智能车能沿着规定的轨迹顺利地移动。仿真结果表明,跟踪控制算法使智能汽车更灵活,更稳定。然而,智能车系统仍然需要改进。例如,如何使智能汽车在更复杂的环境下顺利地运行还有如何使电机的速度更有效。我们将在以后来解决这些问题。
参考文献
[1] 郑监利,黄利嘉,葛鹏飞,刘向飞,―基于CCD自动跟踪的智能车‖。学报东华大学学报(自然科学),34卷,第6期,2008年12月,pp.728 – 731
[2] 贾用―基于模糊控制算法合成的智能车的转向控制‖。电脑知识与科技,第4卷第7期,2008年12月,pp.1877 – 1878 1899
[3] 刘进,齐晓辉,李勇科,―基于视觉‖自动测量和控制的智能车模糊PID控制算法,O.I。自动化,2008卷。 27日,10号,第67-69 68,69
[4] 卓青,黄开声和邵贝贝。学做智能车挑战―飞思卡尔‖杯。北京航空航天大学和宇航出版社,2007。
[5] 邵贝贝。嵌入式单片机的在线动态教学 清华大学出版社,北京2004年。
[6] 郑寇根,唐杰,和赫同能,嵌入式系统 - 设计和应用程序使用68HC12和HCS12,电子工业出版社,北京,2006。
[7] Stephen Prata 美国,C + +标准入门书,邮电出版社,2002。
[8] 陈师直,uC/OS-Ⅱ的内核分析,移植和驱动程序开发。邮电出版社,2007年2009年第四届国际会议计算机科学与教育学报