1、目 录摘 要IABSTRACTII1 智能车概述11.1引言11.2 瑞萨智能车比赛介绍21.3 比赛规则与赛道介绍32 C/OS-II操作系统52.1 C/OS-II操作系统简介52.2 C/OS-II操的体系结构和文件组织62.2.1 C/OS-II的体系结构62.2.2 C/OS-II的文件组织72.3 任务调度与管理82.3.1 C/OS-II的任务82.3.2 C/OS II任务的管理与调度82.3.3 C/OS II任务间的通信与同步102.4 中断管理112.5 C/OS-II初始化与启动113 控制策略123.1 模糊控制123.2 专家控制123.3 神经网络控制133.4
2、Bang-Bang控制133.5 PID控制133.5.1 PID控制的原理和特点133.5.2 PID控制器的参数整定174 智能车的硬件部分194.1 机械结构194.1.1 模型车基本结构参数介绍194.1.2 模型车前轮的调整194.1.3 模型车光电传感器原理与布局204.1.4 模型车霍尔传感器的原理与布局214.2 模型车硬件结构224.2.1 H8/3048芯片简介224.2.2 马达驱动电路224.2.3 舵机驱动电路234.2.3 光电传感器电路235 软件设计255.1 软件总体架构255.2 C/OS-II的移植265.4 路径识别与速度测量295.5 舵机与电机的驱动
3、305.6 直角弯道路径处理315.7变线弯道路径处理325.8 速度控制345.9 角度控制控制35结束语37致 谢38参考文献39基于C/OS-II 的智能车软件设计基于C/OS-II 的智能车软件设计摘 要智能车整合了自动化控制、人工智能、信息融合、传感器技术、图像处理技术及计算机等多门学科的最新研究成果,是当前最为活跃的研究领域之一。目前竞赛用智能车的发展主要得益于智能车竞赛的发展。现在开展智能车竞赛的国家主要有美国、韩国和中国,覆盖了控制工程、模式识别、传感技术、电子工程、电器工程、计算机、机械及车辆工程等多学科的科技创意性比赛,这里主要讨论智能车软件的设计。本文中使用了C/OS-I
4、I操作系统,用于控制小车的决策与上位机通信。C/OS-II是一种可移植的,可植入ROM的,可裁剪的,抢占式的,实时多任务操作系统内核。它被广泛应用于微处理器、微控制器和数字信号处理器。C/OS-II只是一个实时操作系统内核,它仅仅包含了任务调度,任务管理,时间管理,内存管理和任务间的通信和同步等基本功能。没有提供输入输出管理,文件系统,网络等额外的服务。但由于C/OS-II良好的可扩展性和源码开放,这些非必须的功能完全可以由用户自己根据需要分别实现。本文中速度和角度的控制基于PID控制。PID控制按偏差的比例、积分和微分进行控制,它是连续系统中技术成熟、应用最为广泛的一种调节器。PID控制算法
5、是控制系统中技术比较成熟的在一种,应用非常广泛,它结构简单,参数容易调整,并目在算法上易于实现,控制精度高,具有很好的鲁棒性。关键词 智能车;C/OS-II操作系统;PID算法The software design of intelligent vehicle that Based on operating system C / OS-II ABSTRACTThe intelligent vehicleI ntegration of automation, artificial intelligence, information fusion, sensor technology, image
6、 processing and computer and other subjects of the latest research results, is the most active research areas. At present the development of smart car racing smart car competition, mainly due to development. Now the countries to carry out smart car competition, mainly the United States, South Korea
7、and China, covering control engineering, pattern recognition, sensor technology, electronic engineering, electrical engineering, computer, mechanical and vehicle engineering and other disciplines of science and technology creativity contest, where the main Discuss the design of intelligent vehicle s
8、oftware.This article uses the C / OS-II operating system, used to control the car with the host computer communication in decision-making. C/OS-II is a portable, implantable ROM, and can be cut, preemptive, real-time multitasking operating system kernel. It is widely used in microprocessors, microco
9、ntrollers and digital signal processors. uC / OS-II is a real-time operating system kernel, it only contains a task scheduling, task management, time management, memory management and task communication and synchronization between the basic functions. Did not provide input and output management, fil
10、e systems, networks and other additional services. However, uC / OS-II a good scalability and open source, these non-essential functions can by the user as needed to achieve.This control of speed and angle control based on PID. PID control by deviation of the proportional, integral and differential
11、control, it is a continuous system technology is mature, the most widely used as a regulator. PID control algorithm is to control the system in a more mature technology, widely used, its structure is simple, easy to adjust parameters, and present the algorithms easy to implement, control, high preci
12、sion and good robustness.KEY WORDS Smart Car; C / OS-II operating system; PID algorithmIII基于C/OS-II 的智能车软件设计1 智能车概述1.1引言智能车整合了自动化控制、人工智能、信息融合、传感器技术、图像处理技术及计算机等多门学科的最新研究成果,是当前最为活跃的研究领域之一1。目前竞赛用智能车的发展主要得益于智能车竞赛的发展。现在开展智能车竞赛的国家主要有美国、韩国和中国,覆盖了控制工程、模式识别、传感技术、电子工程、电器工程、计算机、机械及车辆工程等多学科的科技创意性比赛,这里主要讨论智能车软件的
13、设计。作为高技术领域的一个重要研究课题,智能车的研究工作得到了世界科技界的广泛关注。美、德、意、法、日等国从多种角度展开了对移动机器人的研究,取得了许多有价值的研究成果,产生了明显的社会和经济效益。美国卡内基梅隆大学(Carnegie Mellon University CMU)机器人研究所研制的NavLab-5系统智能车,能够完成传感器信息融合、图像理解和车体横向控制等功能。另外该大学还研制出一种类似于行星探测车的“流浪者”号智能车,该智能车具有多种环境感知能力,能在非结构动态环境中实现自学习、自推理等功能,并能够在沙漠中进行自主控制和几千公里以外的人工遥控2。纳漫游车是由美国喷气推进实验室
14、开发的一种微型智能车,用于协助其它火星车工作。它具有一种奇特的轮式移动结构,具备传统的滚动和转动之外的其它移动方式。其可移动柱杆的关节备有轮子结构,可以看作是腿式机器人和轮式机器人的一种混合结构。采用这种结构,小车可以在底盘朝上时,自动翻过来,具有自矫正功能,并且还能够在微重力的环境下行走。日本千叶技术研究所宣称研制出一名叫“阿吕西格尼亚一号”的新型智能车。8个汽车轮子各带一个智能腿,它们组合安装在汽车上,在30个发动机的带动下按一定的规律运动。它具有人腿的行走功能,不仅可以自由的前进和后退,还可以横跨,跨越像楼梯等任何障碍物3。在我国,关于智能车路径跟踪的研究主要集中在高校内,其中清华大学走
15、在最前面,智能技术与系统国家重点实验室研制了THMR系列机器移动车,车载设备包括摄像机、光码盘、磁罗盘、差分GPS和电子地图,控制系统能够接受自主驾驶和辅助驾驶两种格式。各高校纷纷将汽车电子作为重点研究对象,包括浙江大学、上海交通大学、国防科技大学等。本设计将按照需要改装智能车模型,完成基于激光传感器的智能巡线小车的制作。设计按照瑞萨全国智能车比赛的要求,基于F8/3048芯片,按照比赛规则设计智能车程序,并在比赛中获得决赛三等奖。在此过程中需要学习嵌入式系统开发环境与在线编程方法、单片机接口电路设计,自行设计并实现识别引导黑线的传感器电路、电机的驱动电路、车速反馈电路、智能车舵机控制电路以及
16、能使小车在不驶出赛道的前提下可能快速行驶的控制策略与软件算法。1.2 瑞萨智能车比赛介绍 瑞萨超级MCU模型车大赛是我国规模最大的大学生技能活动“全国大学生IT&AT技能大赛”的系列赛事之一,该项赛事由教育部管理信息中心主办,赛迪顾问承办,整个大赛得到了全球领先的半导体供应商日本株式会社瑞萨科技的全程支持。2007年是首届,在北京邮电大学举行。参赛选手在搭载有瑞萨MCU主板(H8/3048F)的模型车上自行设计并编入独立的控制程序,组装制作成具有自动识别功能的MCU汽车模型,胜负是根据顺利跑完全程比赛的时间长短来判定的。 MCU模型车在跑道中央行驶时读取跑道中央的白线以控制行驶路线,其构造分两
17、大部分:程控部分和机械部分。程控部分为感应器,当模型车行驶时车体前方的感应器迅速读取路面信息,并传达至主控制器,以控制行驶方向。机械部分为马达、齿轮、轮胎、舵机等。动力源为8节5号电池。现阶段国内的智能模型车大赛有两个:飞思卡尔杯全国大学生智能车竞赛和瑞萨超级MCU模型车大赛。飞思卡尔杯全国大学生智能车竞赛自2006年首届举办,已成功举办了四届。 瑞萨超级MCU模型车大赛自2007年举办,已成功举办了三届。其中飞思卡尔杯全国大学生智能车竞赛发展更为迅速,影响力更大,2009年的第四届飞思卡尔杯全国大学生智能车竞赛吸引了来自全国26个省(自治区)、直辖市的230余所高效的780支队伍参赛,比赛场
18、面空前激烈。瑞萨超级MCU模型车大赛以日本的“JAPAN MCU模型车大赛为基础,从日本引进的。JMCR大赛是由日本社团法人全国工业高中校长协会等主办,从1996年开始每年都会举行,至今已成功举办了14届。瑞萨作为世界占有率第一的MCU供应商,从首届JMCR大赛开始就成为主赞助商,并提供MCU搭载主板和技术支持,为日本嵌入式编程技术水平的提高贡献了力量。 根据比赛规则,大赛参赛选手必须在瑞萨MCU主板上设计并编入独立的行车程序,自行拼装制作成自动驾驶车(统称:MCU模型车),并能够在规定的跑道上自动行进。参赛选手通过此次比赛不仅能使自身的MCU编程能力获得提高,还能通过车身组装等环节掌握机械电
19、子学等相关知识。在赛事规则上也更加凸显了趣味性和人性化:首先,在速度较量的基础上增加了创意赛事-模型车入库趣味表演赛,即在原比赛赛道中加入一处以上的左或右的直角刁钻车库,参赛的选手们要事先编写好入库的程序以完成高难度的直角转弯和倒库动作,入库完成后赛车还要继续行进,直到顺利行驶完全程。1.3 比赛规则与赛道介绍本次大赛的赛车单片机主板由组委会统一提供,采用Renesas H8/3048F-ONE MCU 作为控制单元,RY3048F-ONE作为底板,以赛车现场成功完成赛道比赛时间长短来决定胜负。赛道规则如下:1 赛道制作方法为在厚度30mm,表面宽300mm的亚克力板上贴亚光黑色即时贴。2 赛
20、道表面由黑白灰三色组成。由内至外为:白色中心线宽20mm、两侧灰线宽10mm、外侧黑色宽100mm、最外侧的路肩白线宽30mm。如下图所示:图1-1 直道赛道图3全程赛道由直线、弯道、直角弯道(90的左右弯道)、S字弯道(内径450mm)变线区域以及倾斜角在以内的斜坡组合而成。4. 关于赛道直角弯道的说明:在距弯道前5001000mm区间范围内有两条宽度为20mm、间隔为30mm的垂直于赛道的平行白线。如下图所示:图1-2 直角弯道图5 关于赛道变线区域的说明:变线区域长、宽均设为600mm,按赛车行进方向在距离变线区域200mm1000mm范围内的赛道表面的单侧(左侧或右侧)设两条平行白线。
21、变线区域内的变线前赛道与变线后赛道的中心白线长度分别为200mm及400mm。如下图所示:图1-3 变线弯道图2 C/OS-II操作系统2.1 C/OS-II操作系统简介 C/OS是一个具备现代操作系统特点的RTOS,是源代码公开的实时嵌入式操作系统,1992年其作者Jean Labrssse将C/OS的源代码发表在“嵌入式系统编程”杂志上,得到了人们的广泛关注。C/OS是“Micro Controller Operation Syst”的缩写,其中文意义是“微控制器操作系统”,从这里可以看得出它是专门为微控制器设计的。它结构清晰、注解详尽,具有良好的可扩展性和可移植性,被广泛地应用于各种架构
22、的微处理器上。基于C/OS的产品包括从自动控制到手持设备等各个应用领域。C/OS-II是C/OS的升级版本4。C/OS-II的特点主要可以概括为以下几个方面:第一,源代码公开:C/OS-II的源代码全部公开,并可以从相关书籍上找到关于它的详细源代码讲解和注释。这使系统透明,也更容易使用和扩展。使源代码清晰易读且结构协调,注解详尽,组织有序。第二,可移植性好:可移植性绝大部分C/OS-II的代码使用移植性很强的ANSI C写的,具有优秀的可移植性。和处理器硬件相关部分采用汇编写,并且已经压缩到最低限度,使得C/OS-II便于移植到其它微处理器上。C/OS-II可以在绝大多数8位、16位、32位、
23、甚至64位微处理器、微控制器和DSP数字信号处理器上运行。第三,可固化:C/OS-II是专为嵌入式应用而设计的,这就意味着,只要开发者有固化手段,C/OS-II可以嵌入到开发者的产品之中,进而成为产品的一部分。第四,可裁剪:可裁剪可以只使用C/OS-II中应用程序需要的那些系统服务。也就是说某产品可能只使用很少几个C/OS-II调用,而另一个则使用了几乎所有的功能,这样可以减少所需的存储器空间。这种可裁剪是靠条件编译实现的。第五,抢占式内核:C/OS-II完全是可抢占式实时内核,即总是运行就绪条件下优先级最高的任务。大多数商业内核也是抢占的。第六,多任务:C/OS-II可以管理64个任务,但系
24、统保留了8个任务,应用程序最多可以有56个任务。赋予每个任务的优先级必须是不相同的。同时,这也意味着C/OS-II不支持时间片轮转调度法。该调度法适用于调度优先级平等的任务。第七,确定性:全部C/OS-II的函数调用和服务的执行时间具有可确定性,即它们的执行时间是可知的。也就是说其系统服务的执行时间不依赖于应用程序任务的多少。第八,任务栈:每个任务有自己单独的栈,C/OS-II允许每个任务有不同的栈空间。以便降低应用程序对RAM的需求。使用C/OS-II的栈空间校验函数,可以确定每个任务究竟需要多少栈空间。第九,任务服务:C/OS-II提供多种系统服务,如邮箱、消息队列、信号量、固定块大小的内
25、存的申请和释放、时间相关函数等。第十,中断管理:中断可以使正在执行的任务暂时刮起,如果优先级更高的任务被中断唤醒,高优先级的任务在中断嵌套全部退出后立即执行,中断嵌套的层数最多可达到255层。第十一,稳定性和可靠性:C/OS-II是基于C/OS的,C/OS已经有很多商业应用。C/OS-II得到了美国航空管理局的认证,可用于飞行器。这也从侧面证明了C/OS-II的稳定性,可以用在攸关生命的临界系统。C/OS-II虽然是开源的,但不是免费的,如果在产品中使用C/OS-II,则需要与Micium公司联系,获得商业使用授权。2.2 C/OS-II操的体系结构和文件组织2.2.1 C/OS-II的体系结
26、构与其它RTOS一样,C/OS-II是一段嵌入在目标代码中的程序,系统复位后首先执行,相当于用户的主程序,用户的其它程序都建立在RTOS之上。不仅如此,C/OS-II采用微内核结构,所谓微内核是将必需的功能(如进程管理、任务通信、存储管理、中断处理、进程调度)放在内核中,留给用户一个标准的API (系统调用),并根据各个任务的优先级,合理地在不同的任务之间分配CPU时间。而将那些不是非常重要的核心功能和服务(文件系统、网络通信、设备管理)等作为内核之上可配置的部分,方便系统扩展。相对于传统的宏内核而言,它把原先内核中的部分内容移到内核外边,作为服务进程运行,并通过进程间通信机制在要求服务的进程
27、于提供服务的进程之间建立起一种客户一服务员关系。这样,就可以由一些服务进程,而不是内核的部分模块来为应用进程提供服务。这些服务进程对用户而言,是可配置的,显然这样的操作系统显得灵活多了,根据用户的配置需求可大可小。最小的微内核只包括进程管理、存储管理、进程间通信三个主要成分,加上一个中断响应框架,也许还有一些不得不放在内核中的底层操作。至于系统调用,那是内核于进程之间的界面。无论是进程管理,存储管理还是进程间通信,许多功能和资源都要通过系统调用提供给用户进程,所以从结构上说这个界面也是内核的一个部分5。C/OS-II操作系统的多任务内核,包括任务管理、任务之间的通信与同步、时间管理、中断管理和
28、内存管理五个模块。这些功能是通过内核函数的形式交给用户调用的。其体系结构如图2. 1所示。注意用户多任务是建立在C/OS-II的各种系统服务之上,系统并没提供与硬件的接口程序,需要用户直接与硬件打交道。2.2.2 C/OS-II的文件组织C/OS-II可以大致分成核心、任务处理、时间处理、任务同步与通信,CPU的移植等5个部分。(1)核心部分(OSCore.c) 操作系统的处理核心,包括操作系统初始化、操作系统运行、中断进出的前导、时钟节拍、任务调度、事件处理等多部分。能够维持系统基本工作的部分都在这里(2)任务处理部分(OSTask.c) 任务处理部分中的内容都是与任务的操作密切相关的。包括
29、任务的建立、删除、挂起、恢复等等。因为C/OS-II是以任务为基本单位调度的,所以这部分内容也相当重要。(3) 时钟部分(OSTime.c) C/OS-II中的最小时钟单位是timetick(时钟节拍)。任务延时等操作是在这里完成的。 (4)任务同步和通信部分 为事件处理部分,包括信号量、邮箱、邮箱队列、事件标志等部分;主要用于任务间的互相联系和对临界资源的访问。(5)与CPU的接口部分 与CPU的接口部分是指C/OS-II针对所使用的CPU的移植部分。由于C/OS-II是一个通用性的操作系统,所以对于关键问题上的实现,还是需要根据具体CPU的具体内容和要求作相应的移植。这部分内容由于牵涉到S
30、P等系统指针,所以通常用汇编语言编写。主要包括中断级任务切换的底层实现、任务级任务切换的底层实现、时钟节拍的产生和处理、中断的相关处理部分等内容6。2.3 任务调度与管理2.3.1 C/OS-II的任务RTOS中的任务(task)类似于分时操作系统中的进程(process)的概念,一个任务也称一个进程,是具有一定功能的程序关于一个数据集合的一次运行活动,是处于活动状态的计算机程序。实时应用程序的设计过程,就是如何把问题分解成若干任务,每个任务都是整个应用的一部分,每个任务被赋予一定的优先级,有它自己的一套CPU寄存器和自己的堆栈空间。典型的,每个任务是一个无限的循环。每个任务都处在以下5种状态
31、之一的状态下:第一,休眠态:指任务驻留在程序空间中,还没有交给内核管理。通过调用任务建立函数OSTaskCreate()或任务建立扩展函数OSTaskCreateEXT(),可以使任务进入就绪态。第二,就绪态:当任务建立,这个任务就是就绪态,就绪态的任务都放在任务就绪表中。在任务调度时,指针OSTCBHIGHRky指向优先级最高的就绪任务。第三,运行态:准备就绪的最高优先级任务获得CPU控制权,从而处于运行态。第四,等待或挂起:等待除CPU之外的其他资源或条件(如信号量),不能运行。第五,中断态:除非关闭中断,否则一旦中断产生,当前正在执行的任务将被挂起,中断服务程序获得CPU使用权7。五种状
32、态的转换图如下:删除任务创建任务收到信息挂起时间到任务抢占任务调度等待消息挂起中断等待或挂起等待或挂起等待或挂起等待或挂起等待或挂起中断结束 收到 挂起 等待 挂起 消息 时间到 消息 任务调度中断 创建任务删除任务 任务被抢占 中断结束图2-1 状态转换图2.3.2 C/OS II任务的管理与调度 C/OS-II是采用独立任务栈的切换方法,给每个任务分配一个任务栈数组,任务栈数组在系统初始化时被赋值。C/OS-II内核初始化完成后,执行函数OSStartHighRdy()来启动第一个任务,而第一个任务的选择依据是任务的优先级别,选择过程在OSStart()中完成。 在一般的函数调用中,子函数
33、执行完成后,继续返回主函数执行,而调度函数通过改变堆栈内容来变更原来的程序执行路线,函数OSStartHighRdy()执行 “RET工”后,并不返回OSStart (),而是执行了一个任务函数8。在两种情况下会发生任务调度。一是在硬件定时时钟中断中,内核函数发现有更高优先级就绪的任务,就终止当前任务的执行转而执行更高优先级的任务,完成切换的函数是OSIntCtxSw ();二是当前运行任务在遇到外部资源和条件未准备好时,主动调用内核切换函数OSCtxSw (),以挂起本任务,暂时切换到另外一个任务运行。两种切换的原理相同,都是保存当前任务堆栈,将CPU的SP寄存器指向下个任务堆栈数组。任务调
34、度和任务优先级处理,都依据一个重要的数据结构:就绪表,实际上它是一个数组,内部存放所有任务的运行状态和优先级信息。因为C/OS-II最大允许64个任务,这样任务就绪表就用64位指示各个任务的运行状态(由于调度只关心各个任务的就绪与否的状态,只有就绪态的更高优先级的任务才有可能被调度,所有用1表示该任务就绪,0不是没就绪),用8个字节数组OSRdyTbl表示,用每一位在数组中的位置信息表示各个任务的优先级信息(位置越高,优先级越高)9。此外,为了查找计算方便,另设一个字节的组变量OSRdyGrp,用以表示在就绪表OSRdyTbl中哪8位中存在就绪位(64位又分8组,组中只要有一个为1则该组置1,
35、这样可以加快搜索速度)。查找最高优先级就绪任务算法如下:Y=OSUnMapTblOSRdyGrp;X=OSUnMapTblOSRdyTbIy;OSPrioHighRdy=(INTBU)(Y+3) +x);OSTCBHighRdy=OSTCBPrioTblOSPrioHighRdy;组变量和就绪表的对应关系如下图: 图2-2 就绪表关系图2.3.3 C/OS II任务间的通信与同步 在实际系统的应用中有时很需要任务间的或中断服务与任务间的通信,任务间信息的传递有两个途径:通过全局变量或发送消息给另一个任务。 在使用全局变量实现任务间通信时,必须保证每个任务或中断服务程序独享该变量。中断服务中保证
36、独享的唯一办法是关中断9。而两个任务共享某变量时,各任务实现独享该变量的办法也是关中断再开中断,或者使用信号量确保全局变量的唯一性。C/OS-II还提供了更好地解决任务间通信手段:邮箱和消息队列。信号量实际上是一种约定机制,在多任务内核中普遍被用于: 控制共享资源的使用权(满足互斥条件);标志某事件的发生;使两个任务的行为同步; 信号就象一把钥匙,任务要进行下去,得先拿到这把钥匙。如果信号量已被别的任务占有,该任务只得挂起,直到信号被释放。 在C/OS-II中,信号量变量是一个整型数,因此允许二值信号量和计数器信号量两种类型的操作。对信号量的操作包括创建(初始化)、等信号(亦称挂起)和给信号3
37、类10。邮箱是C/OSII内核提供的任务间的一种通信机制,是用一个指针变量,通过内核服务,一个任务或中断服务程序可以把一则消息(即一个指针)放到邮箱里去。同样,一个任务也可通过内核服务从邮箱接受这则消息。不同邮箱通过邮箱指针来识别。消息队列的实质是邮箱队列,在系统中有多个消息队列的情况下,C/OS-II将多个队列形成一个链表,即消息队列,它传递的实际上是多个指针。在C/OS II中,事件控制块是最重要的数据结构之一,因为所有的信号量、邮箱、消息队列都被看成事件。内核对信号量、邮箱、消息队列这些事件的管理是通过事件控制块(ECB, Event Control Block)来实现的。事件控制块结构
38、中除了包含事件本身的定义,如用于信号量的计数器,用于指向邮箱的指针,以及指向消息队列的指针数组等,还定义了等待该事件的所有任务列表。2.4 中断管理中断是嵌入式系统中最重要的硬件机制,定时中断可以给RTOS提供心跳的脉搏,硬件中断还可以实现一些事件的快速处理,真正达到“实时”的效果。中断发生后,CPU首先保存上下文并进入中断处理子程序进行处理,处理完成后程序返回:在前后台系统中,返回后台程序;对非占先式内核而言,返回到被中断的任务继续执行;对占先式内核,调度进入就绪态的最高优先级的任务运行;中断延迟、响应和恢复的时间是RTOS的重要指标。2.5 C/OS-II初始化与启动 在调用C/OS II
39、的其他服务之前,C/OS II要求用户首先调用操作系统初始化函数OSInit()。该函数负责初始化C/OS II所有的变量和数据结构,还建立一个空闲任务OSTaskIdle (),这个空闲任务总是处于就绪态的,并且它的优先级总是设成最低,确保多任务系统总是至少有一个任务在运行11。在C/OS II系统中多任务的启动是用户通过调用OSStart()实现的。然而,启动C/OS II之前,用户至少要建立一个应用任务。当调用OSStart()时,OSStart()负责从任务就绪表中找出那个用户建立的优先级最高任务的任务控制块。然后,OSStart()调用高优先级就绪任务启动函OSStartHighRd
40、y(),这个函数与选择的微处理器有关。实质上,函数OSStartHighRdy()是将任务找中保存的值弹回到CPU寄存器中,然后执行一条中断返回指令,中断返回指令强制执行该任务代码,使系统进入用户应用程序的运行,开始多任务的调度。3 控制策略智能小车路径跟踪控制系统的被控量为智能小车的舵机转角和驱动电动机的转速,其控制目的在于通过控制舵机来使智能小车的行使方向跟随道路的变换,通过直流电动机调速来使智能小车快速稳定地对路径进行跟踪,在调速和传动系统中主要存在经典PID控制和专家控制、模糊控制、神经网路控制等智能控制算法。3.1 模糊控制 对于现实生活中那些定性的、模糊的、非精确的信息系统可以采用
41、模糊控制,模糊控制理论的研究首先是从Zadeh建立模糊集理论开始的,模糊集理论在形式上利用规则进行逻辑推理,其逻辑取值可在0与1之间连续变化,采用数值的方法而非符号的方法进行处理。因此模糊系统可以利用数值方法来表示结构性知识,并用数值方法进行处理。模糊控制系统主要由四个部分组成:模糊化过程、知识库、模糊决策以及解模糊计算,因此模糊控制器的设计就是基于以上四个部分进行的,其具体步骤为:第一,模糊化过程,完成模糊控制器输入输出变量的选择、确定各变量的论域、量化等级以及比例因子,同时还包括各语言变量论域内的模糊字集个数确定及其它们的隶属度函数。第二,模糊决策过程,包括控制规则的建立和模糊推理结构两个
42、部分,前者实质为将操作员的控制经验加以总结而得出模糊条件语句的集合,后者则根据控制规则对当前的输入变量的量化值进行逻辑推理。第三,解模糊过程,模糊逻辑推理的输出仍然是一个集合,但是实际执行机构的控制和驱动则需要一个确定的值,因此需要对此集合进行解模糊计算,目前的解模糊计算方法有最大隶属度函数法、重心法、加权平均法。3.2 专家控制 专家系统是由许多收集的规则组成,最简单的形式为工F-THEN结构。它大体上由三个部分组成:第一,控制机制,包括规则的选择以及规则的激活时间。第二,推理机制,包括知识之间的逻辑推理以及与知识库的对应。第三,知识库,包括事实、推断、规则、经验以及数学模型。专家控制算法是
43、运用知识进行决策计算,以产生所需的控制作用,但是知识的获取一直是专家控制算法的重点和难点,因此单一的专家控制无法满足系统的实时性、灵活性、自适应性等要求。3.3 神经网络控制神经网络是一种不依赖模型的自适应函数估计器,它主要是利用对象的先验知识(一般为输入输出数据),经过误差校正反馈,修正网络权值,最终得出一个具有输入输出对应关系的函数模型,因此它具有自适应能力和学习,但是由于其复杂性且电动机控制模型已知,因此不采用神经网络控制。3.4 Bang-Bang控制Bang-Bang控制:是一种时间最优控制,它的控制函数总是取在容许控制的边界上,或者取最大,或者取最小,仅仅在这两个边界值上进行切换,
44、其作用相当于一个继电器,所以也是一种位式开关控制。这种控制方式在某些方面具有比常规PID控制较为优越的性能,尤其是对于给定值的提降及大幅度的扰动作用,效果更显著。在动态质量上不仅体现为过渡时间短这一特点,而且在超调量等其他指标上也具有一定的改善。3.5 PID控制在过程控制中,按偏差的比例(P)、积分(I)和微分(D)进行控制的PID控制器(亦称PID调节器)是应用最为广泛的一种自动控制器。它具有原理简单,易于实现,适用面广,控制参数相互独立,参数的选定比较简单等优点;而且在理论上可以证明,对于过程控制的典型对象“一阶滞后纯滞后”与“二阶滞后纯滞后”的控制对象,PID控制器是一种最优控制。PI
45、D调节规律是连续系统动态品质校正的一种有效方法,它的参数整定方式简便,结构改变灵活(PI、PD、)。 控制点目前包含三种比较简单的PID控制算法,分别是:增量式算法,位置式算法,微分先行。 这三种PID算法虽然简单,但各有特点,基本上能满足一般控制的大多数要求12。3.5.1 PID控制的原理和特点 在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。PID控制器问世至今已有近70年历史,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的 其它技术难以采
46、用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术最为方便。即当我们不完全了解一个系统和被控对象,或 不能通过有效的测量手段来获得系统参数时,最适合用PID控制技术。PID控制,实际中也有PI和PD控制。PID控制器就是根据系统的误差,利用比例、 积分、微分计算出控制量进行控制的。 从信号变换的角度而言,超前校正、滞后校正、滞后超前校正可以总结为比例、积分、微分三种运算及其组合。PID控制的传递函数:(3-1) 输出信号和输入信号的关系:(3-2) 图3-1 频率响应图 在低频段,主要是PI控制规律起作用,提高系统型别,消除或减少稳态误差;在中高频段主要是PD规律起作用,增大截止频率和相角裕度,提高响应速度。因此,控制器可以全面地提高系统的控制性能。位置式PID控制算法:图3-2 位置式流程图增量式PID控制算法: 图3-3 增量式流程图(1)比例(P)控制 比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差(St