基于μCOS-II操作系统的竞赛机器人资源调度方案范文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于μCOS-II操作系统的竞赛机器人资源调度方案范文摘要:针对竞赛机器人在传统编程过程中带来的资源管理调度不完善
现象,在机器人的控制芯片中装入一个嵌入式的实时操作系统内核
μC/OS-II,该内核能够进行基于优先级的多任务处理,并且能够很好的
管理与调度系统资源,具有很好的实时性和稳定性。
在竞赛机器人的实际
运用中,该内核减轻程序开发的负荷量,为软件调试人员的调试工作带来
很大的方便。
关键词:μC/OS-II;操作系统;机器人
0引言
在各种机器人竞赛中,机器人控制系统的资源管理分配、控制算法的
优劣往往决定着最终的竞赛结果。
目前,机器人控制系统方案中主控芯片
以C8051、AVR、ARM9、DSP等主流芯片系列为主。
这些控制芯片大多数都
采用C语言的编程开发环境,但是,传统的C语言编程对嵌入式CPU的资
源调度存在大量的浪费,例如软件延时程序,这些代码往往用循环的方式
浪费CPU的资源。
另外,传统的C语言编程无法很好的实现多任务的处理,无法达到多个线程的同时运行与实时处理,在处理实时性要求比较高的指
令环节时,这些嵌入式CPU往往采用中断的方式进行实时处理,但是,这
也带来了一个问题,就是当需要处理的任务增多时,中断的方式极容易带
来不同中断间的相互嵌套,以及中断程序跟主程序的资源冲突问题。
1μC/OS-II操作系统
1.1内核简介
µC/OS-II是著名的源代码公开的实时内核,是一个完整的,可移植、固化、裁剪的抢占式实时多任务内核。
µC/OS-II是用ANSIC编写的,包
含一小部分与微处理器类型相关的汇编语言代码,使之可供不同架构的微
处理器使用。
虽然µC/OS-II是在PC机上开发和测试的,但µC/OS-II的
实际对象是嵌入式系统,并且很容易移植到不同架构的微处理器上。
至今,从8位到64位,µC/OS-II已在超过40中不同架构的微处理器上运行。
1.2μC/OS-II的优点
ΜC/OS-II是一个抢占式的内核,即已经准备就绪的高优先级任务可
以剥夺正在运行的低优先级任务的CPU使用权。
这个特点保证了它的高实
时性。
以51单片机为例,假如需要用中断方式采集一批数据并进行处理,在传统的编程方法中不能在中断服务程序中进行复杂的数据处理,因为这
会使得关中断时间过长。
所以经常采用的方法是置一标志位,然后退出中断。
由于主程序是循环执行的,所以它总有机会检测到这一标志并转到数
据处理程序中去。
但是因为无法确定发生中断时程序到底执行到了什么地方,也就无法判断要经过多长时间数据处理程序才会执行,中断响应时间
无法确定,系统的实时性不强。
如果使用μC/OS-II的话,只要把数据处
理程序的优先级设定得高一些,并在中断服务程序中使它进入就绪态,中
断结束后数据处理程序就会被立即执行。
这样可以把中断响应时间限制在
一定的范围内。
对于竞赛机器人这类对中断响应时间有严格要求的系统,
这是必不可少的。
2μC/OS-II在竞赛机器人上的任务管理
对于竞赛机器人来说,程序的模块化管理极为重要,传统的编程方式
则是在主函数里面进行走模块以及动作执行模块的控制,中断环节进行位
置的PID调节,外部信号的读取等。
这种程序设计虽然简单易懂,但是当
中断函数处理数据量加大时,会带来中断时间过长,程序的实时性反而不
高的缺点,带来的缺点确实CPU资源的大量浪费,例如行走函数的退出检
测条件通常用的是while(position!=destination);这其实是在大量
的浪费CPU时间,CPU可以利用这些时间进行PID调节及其外部信号的读
取等等。
采用操作系统的编程方式,则不会出现这种资源的浪费现象,并且能
够很好的管理系统的资源以及各个任务之间关系。
对于基于μC/OS-II操
作系统作为控制系统内核的机器人,可以对传统的程序做很多优化的处理,在软件设计方面,开启两到三个线程任务进行机器人的行走以及其他任务
的控制。
任务1进行行走以及各动作的全局动作控制,任务2进行行走时
的PID调节以及外部手柄等信号的读取,任务3进行与外界的通信实现。
各任务之间设置不同的优先级。
当机器人行走的时候,把PID调节的线程
优先级设为最高级,这样,在保证PID调节任务正常进行的情况下,把
PID调节空余的时间拿来执行其他的线程任务,例如读取外部遇障信号,
读取外部手柄控制信号,以及跟外界的通信等等。
当机器人停止行走而开
始执行其他动作任务时,可以调整其他线程的优先级为最高级,保证其他
任务的顺利进行。
而当机器人又开始行走时,又可以把行走环节以及PID
调节的线程的优先级设为最高级。
这样根据实际的情况进行优先级高低的
切换,从而达到真正的多任务实时性处理。
3总结
基于μC/OS-II的操作系统在竞赛机器人编程方式上取得很大的突破,解决了传统C语言编程给编程人员带来的资源分配不合理以及资源浪费等
问题,很好的使程序达到了模块化设计的效果,使系统的资源管理技术上
升了一个档次,并且增加系统的稳定性,真正发挥了32位机器的多任务
的功能。
在实际应用中,μC/OS-II操作系统也为编程人员的提供了一条
快速编程的捷径,大大减少了软件开发的周期,对于系统的调试、检查也带来很大的方便,并且取得了较好的效果。