嵌入式系统在机器人视觉中的应用
随着Internet技术与信息家电、工业控制技术等的结合日益紧密,嵌入式设备与Internet的结合已成为大势所趋。此时期新的微处理器层出不穷,要求嵌入式操作系统的设计更加便于移植,支持更多的微处理器。 嵌入式系统的开发需要强大的硬件开发工具和软件支持包。通用计算机上使用的新技术、新观念开始逐步移植到嵌入式系统中,如嵌入式数据库、移动代理、实时CORBA等。各类嵌入式Linux操作系统在全球数以百万计爱好者的合力开发下迅速发展,由于具有源代码开放、系统内核小、执行效率高、网络功能强,多媒体人机交互界面友好等特点,很适合信息家电等嵌入式系统的需要。
一 嵌入式系统的技术特点
早期的嵌入式系统设计方法,通常采用"硬件优先"原则,即在只粗略估计软件任务需求的情况下,首先进行硬件设计与实现。然后,在此硬件平台上再进行软件设计。因而很难达到充分利用软硬件资源,取得最佳性能的效果。同时,一旦需要对设计进行修改时,整个设计流程将重新进行,这对成本和设计周期的影响很大。这种传统的设计方法只能改善软件/硬件各自的性能,在有限的设计空间不可能对系统做出较好的性能综合优化,在很大程度上依赖于设计者的经验和反复实验。
上世纪90年代以来,随着电子系统功能的日益强大和微型化,硬件和软件也不再是截然分开的两个概念,而是紧密结合、相互影响的。因而出现了软硬件协同(codesign)设计方法,即使用统一的方法和工具对软件和硬件进行描述、综合和验证。在系统目标要求的指导下,通过综合分析系统软硬件功能及现有资源,协同设计软硬件体系结构,以最大限度地挖掘系统软硬件能力,避免由于独立设计软硬件体系结构而带来的种种弊病,得到高性能低代价的优化设计方案。
二 嵌入式系统的发展趋势
在网络、通信、微电子发展的基础上,以及势不可挡的数字化信息产品的强大需求推动下,嵌入式技术具有广阔的发展创新空间。
(1)低功耗、高性能、高可靠性的系统需求对我国芯片设计是一个机遇。以嵌入式处理 器为领头的国产CPU、片上系统(SoC)、片上网络系统(NoC)将有很大的发展。
(2)Linux正逐渐成为嵌入式操作系统的主流;J2ME技术也将对嵌入式软件的发展产生深远影响。目前自由软件技术备受青睐,并对软件技术的发展产生了巨大的推动作用。嵌入式操作系统内核不仅需要具有微型化、高实时性等基本特征,还将向高可信性、自适应性、构件组件化方向发展;支撑开发环境将更加集成化、自动化、人性化;系统软件对无线通信和能源管理的功能支持将日益重要。近几年来,为使嵌入式设备更有效地支持Web服务而开发的操作系统不断推出。这种操作系统在体系结构上采用面向构件、中间件技术,为应用软件乃至硬件的动态加载提供支持,即所谓的"即插即用",在克服以往的嵌入式操作系统的局限性方面显示出明显的优势。
(3)Java虚拟机与嵌入式Java将成为开发嵌入式系统的有力工具。嵌入式系统的多媒体化将变成现实。它在网络环境中的应用已是不可抗拒的潮流,并将占领网络接入设备的主导地位。
(4)嵌入式系统与人工智能、模式识别技术的结合,将开发出各种更具人性化、智能化的实际系统。智能手机、数字电视,以及汽车电子的嵌入式应用,是这次机遇中的切入点。伴随网络技术、网格计算的发展,以嵌入式移动设备为中心的"无所不在的计算"将成为现实。
三 嵌入式系统在机器人技术中的应用
不论是在工业控制中,还是在商业领域里,机器人技术都得到了广泛的应用。从用于生产加工的传统工业机器人到丰富大众生活的现代娱乐机器人,都与嵌入式系统密不可分。现有的大多数机器人,都采用单片机作为控制单元,以8位和16位最为常见,其处理速度较低,没有操作系统,无法实现丰富的多任务功能,系统的潜力没有得到充分的发掘和应用。
基于ARM9的机器人视觉系统的目标是在选定好的S3C2410平台上移植并配置Linux操作系统,针对平台和应用的特点,制作合适的文件系统,为机器人视觉系统构建稳定的软硬件开发环境。其次编写应用程序,通过S3C2410平台,从USB摄像头实时采集图像,并利用这款嵌入式处理器的强大运算能力,对图像进行后期的处理,完成目标识别与定位,作为机器人动作单元的输入。最后针对机器人关节所使用的电机,编写特定的设备驱动程序,保证操作系统可准确地控制机器人动作,响应视觉处理的结果,开发一套完整的"机器人视觉系统"。
1. 硬件平台的选型和搭建
机器人系统如图1所示。全身由24个舵机组成,控制24个关节。通过对舵机的控制,可实现机器人的动作。
新松 6KG/10KG机器人SR6C/SR10C
![](/xb_startadmxbgk/Editer/uploadfile/20131011091615680.jpg)
开发中使用的机器人 图1
(1)视觉系统
采用USB摄像头作为视觉采集器件。其优点是接口通用,驱动丰富,传输速率快。同时,Linux操作系统对于USB设备的支持较好,方便了应用程序的编写和调试。网眼(WebEye)v2000摄像头,采用了ov511芯片(Linux源代码中有相应的驱动程序),适合用于开发。
这里采用高端的32位嵌入式微处理器:基于ARM体系结构的S3C2410芯片(由三星公司生产),其主频为200MHz。它提供了丰富的内部设备:分开的16kB指令Cache和16kB数据Cache、MMU虚拟存储器管理、LCD控制器、支持NAND Flash系统引导、系统管理器、3通道UART、4通道DMA、4通道PWM定时器、I/O端口、RTC、8通道10位ADC和触摸屏接口、IIC-BUS接口、USB主机、USB设备、SD主卡和MMC卡接口、2通道的SPI以及内部PLL时钟倍频器。S3C2410采用了ARM920T内核,0.18μm工艺的CMOS标准宏单元和存储器单元。
(2)硬件平台组成
见图2,一块核心母板,配备CPU、16MB的NOR Flash、64MB的NAND Flash、32MB的SDRAM,并设置系统从NAND Flash启动;一块外设电路板,负责系统和外设器件的连接,布设有2个USB接口、1个UART口、24个3针插座(用
于控制机器人的关节)以及电源接口等。核心母板与外设电路板通过内存插槽进行连接。
分开设计的好处有:升级核心母板可实现系统处理能力的提高;而更换外设电路则可适应不同的应用。这样就大大节约了硬件成本,对于开发和调试也是非常有利的。同时,核心母板本身就是一个最小系统,在嵌入式系统设计中,保证最小系统的可靠性是开发的第一步。
调试核心母板以及外设电路至工作正常。确保开发板与PC机通信(利用Windows下的超级终端工具,通过串口线连接开发板与PC机)。
2. 软件平台的构建和配置
目前,越来越多的嵌入式系统采用了Linux作为操作系统。Linux功能强大,运行稳定,驱动齐全,配置灵活,内核紧凑,从来就与嵌入式系统有密不可分的关系。Linux内核版本众多,其中2.4系列比较成熟,在嵌入式平台中应用广泛,资料齐全。这里使用Linux- 2.4.18-rmk7-pxa1版本。
a. 配置开发板软件环境
将系统引导程序(俗称bootloader,其功能相当于PC机中的BIOS)烧写进入S3C2410核心母板。这里采用了三星公司推荐的vivi程序。通过对vivi中参数的设置,完成对Flash的分区。
b. 配置、编译、下载内核
(1)下载源代码,在PC端建立交叉编译环境;armv4l-unknown-linux-gcc可以将Linux内核编译为适用于ARM体系结构的二进制代码;
(2)配置内核:使用make menu-config命令,将USB设备支持、USB摄像头驱动(针对OV511芯片)、NAND Flash驱动,以及挂载嵌入式文件系统所需要的驱动程序静态编译到内核中;
(3)编译内核:使用交叉编译工具,将源代码编译为可执行二进制内核镜像,生成文件zImage;
(4)下载内核:将zImage通过串口线,利用vivi的数据烧写功能,下载到Flash的内核分区中(kernel);
c. 制作文件系统
嵌入式系统中常见的文件系统有CRAMFS、JFFS、JFFS2、YAFFS等。考虑到实际的需求,这里采用了CRAMFS。在内核配置时对CRAMFS的驱动代码进行静态编译,并且利用mkcramfs工具制作经过仔细裁剪的文件系统映像,利用vivi的烧写
指令下载到Flash的root分区。最终的文件系统映像小于3MB,这是由嵌入式系统较为紧张的存储资源决定的。
![](/xb_startadmxbgk/Editer/uploadfile/20131011091632980.jpg)
硬件电路 图2
启动系统,通过PC机的超级终端,可看到启动信息:包括内核的版本、Flash分区表、交叉编译器的版本,以及内核中静态编译的组件等。
3. 驱动程序的编写和应用程序的开发
视觉功能的最终实现,首先需要为机器人的关节电机编写驱动程序,使操作系统可完成对机器人动作的控制,作为对视觉结果的响应。视觉绝非最终目的,而是机器人获取信息的一种途径,其根本目的在于为机器人的动作、行为提供策略或数据支持。单纯的视觉并没有意义。
机器人全身的关节均为舵机。舵机结构简单,控制方便,外部只有3个引脚:电源、地、PWM信号。对舵机的控制实际上就是要产生频率、脉宽合适的PWM波。
S3C2410芯片内部集成4个PWM发生单元。驱动程序利用其中的一个作为机器人头部电机的控制信号源,通过改写寄存器的值,改变频率和占空比,产生期望的PWM波。
将驱动程序交叉编译为模块,在系统启动后动态地插入内核中。模块加载前独立于内核,方便了驱动程序的调试。编写简短的测试程序,确认关节电机可以正常工作。
这里为机器人视觉系统搭建了一个实际的应用场景:活动的目标小球在背景中运动,期望机器人可以识别目标并对其定位,最后控制头部跟随目标运动(好像机器人在盯着活动目标观察一样)。
机器人视觉处理程序的主要功能为:
(1)从USB摄像头实时读取视频数据,进行简单的预处理;
(2)随后进行图像处理,主要完成空域的图像增强。通过对图像进行二值化,将目标小球从背景中提取出来;
(3)计算目标的位置,进而计算出机器人头部的旋转角度,通过舵机驱动程序,控制机器人头部转动到目标所在角度,实现对目标物体的跟踪。
经过实验,机器人头部可较好地跟踪目标,实现了视觉原型系统。
4. 拓展性工作
机器人视觉系统的开发只是嵌入式系统在机器人领域中应用的一个方面。事实上,还有很多值得我们继续去实现的子系统,诸如语音系统(语音识别、语音输出)、行走控制(设计算法,实现平稳的行走)、网络系统(未来的机器人将不再会是独立的个体,多机器人的协同工作是必然的趋势;同时,机器人同其他设备的连接需求也越来越迫切)等等。应当承认,虽然目前的嵌入式处理器已经具备了比较强大的功能,但是受功耗、体积、成本因素的限制,在实时视频(音频)处理、多媒体协同计算等方面,其速度仍然无法满足需求;所以,更强劲的嵌入式处理器也是将来在为机器人选择控制单元时的重要考虑因素。
四 嵌入式系统的前景
从本文所述的机器人视觉系统中就可看出嵌入式系统的强大功能与广阔应用领域。在当今数字信息和网络技术高速发展的后PC(Post-PC)时代,嵌入式系统已被广泛应用于移动计算平台(PDA、掌上计算机)、信息家电(数字电视、机顶盒、网络设备)、无线通信设备(智能手机、股票接收设备)、工业/商业控制(智能工控设备、POS/ATM 机)、电子商务平台、甚至军事应用等诸多领域,其前景无疑是令人非常乐观的。
文章版权归西部工控xbgk所有,未经许可不得转载。