论文部分内容阅读
摘要: 针对竞赛机器人在传统编程过程中带来的资源管理调度不完善现象,在机器人的控制芯片中装入一个嵌入式的实时操作系统内核μC/OS-II,该内核能够进行基于优先级的多任务处理,并且能够很好的管理与调度系统资源,具有很好的实时性和稳定性。在竞赛机器人的实际运用中,该内核减轻程序开发的负荷量,为软件调试人员的调试工作带来很大的方便。
关键词: μC/OS-II;操作系统;机器人
中图分类号:TP2文献标识码:A文章编号:1671-7597(2011)0320017-01
0 引言
在各种机器人竞赛中,机器人控制系统的资源管理分配、控制算法的优劣往往决定着最终的竞赛结果。目前,机器人控制系统方案中主控芯片以C8051、AVR、ARM9、DSP等主流芯片系列为主。这些控制芯片大多数都采用C语言的编程开发环境,但是,传统的C语言编程对嵌入式CPU的资源调度存在大量的浪费,例如软件延时程序,这些代码往往用循环的方式浪费CPU的资源。另外,传统的C语言编程无法很好的实现多任务的处理,无法达到多个线程的同时运行与实时处理,在处理实时性要求比较高的指令环节时,这些嵌入式CPU往往采用中断的方式进行实时处理,但是,这也带来了一个问题,就是当需要处理的任务增多时,中断的方式极容易带来不同中断间的相互嵌套,以及中断程序跟主程序的资源冲突问题。
1 μC/OS-II操作系统
1.1 内核简介
µC/OS-II是著名的源代码公开的实时内核,是一个完整的,可移植、固化、裁剪的抢占式实时多任务内核。µC/OS-II是用ANSI C编写的,包含一小部分与微处理器类型相关的汇编语言代码,使之可供不同架构的微处理器使用。虽然µ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操作系统也为编程人员的提供了一条快速编程的捷径,大大减少了软件开发的周期,对于系统的调试、检查也带来很大的方便,并且取得了较好的效果。
参考文献:
[1][美]Jean J Labrosse,嵌入式实时操作系统μC/OS-II(第二版)[M].邵贝贝等译,北京:北京航空航天大学出版社,2004.
[2]任哲,嵌入式实时操作系统原理及应用[M].北京:北京航天航空大学出版社,2005.
[3]宗光华,机器人的创意设计与实践[M].北京:北京航空航天大学出版社,2004.
[4]方建军等,智能机器人[M].北京:化学工业出版社,2003.
关键词: μC/OS-II;操作系统;机器人
中图分类号:TP2文献标识码:A文章编号:1671-7597(2011)0320017-01
0 引言
在各种机器人竞赛中,机器人控制系统的资源管理分配、控制算法的优劣往往决定着最终的竞赛结果。目前,机器人控制系统方案中主控芯片以C8051、AVR、ARM9、DSP等主流芯片系列为主。这些控制芯片大多数都采用C语言的编程开发环境,但是,传统的C语言编程对嵌入式CPU的资源调度存在大量的浪费,例如软件延时程序,这些代码往往用循环的方式浪费CPU的资源。另外,传统的C语言编程无法很好的实现多任务的处理,无法达到多个线程的同时运行与实时处理,在处理实时性要求比较高的指令环节时,这些嵌入式CPU往往采用中断的方式进行实时处理,但是,这也带来了一个问题,就是当需要处理的任务增多时,中断的方式极容易带来不同中断间的相互嵌套,以及中断程序跟主程序的资源冲突问题。
1 μC/OS-II操作系统
1.1 内核简介
µC/OS-II是著名的源代码公开的实时内核,是一个完整的,可移植、固化、裁剪的抢占式实时多任务内核。µC/OS-II是用ANSI C编写的,包含一小部分与微处理器类型相关的汇编语言代码,使之可供不同架构的微处理器使用。虽然µ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操作系统也为编程人员的提供了一条快速编程的捷径,大大减少了软件开发的周期,对于系统的调试、检查也带来很大的方便,并且取得了较好的效果。
参考文献:
[1][美]Jean J Labrosse,嵌入式实时操作系统μC/OS-II(第二版)[M].邵贝贝等译,北京:北京航空航天大学出版社,2004.
[2]任哲,嵌入式实时操作系统原理及应用[M].北京:北京航天航空大学出版社,2005.
[3]宗光华,机器人的创意设计与实践[M].北京:北京航空航天大学出版社,2004.
[4]方建军等,智能机器人[M].北京:化学工业出版社,2003.