-
-
yoguai2012 | 当前状态:在线
总积分:514 2024年可用积分:0
注册时间: 2011-10-25
最后登录时间: 2012-09-28
-
嵌入式系统在机器人技术中的应用
yoguai2012 发表于 2012/8/21 15:05:37 758 查看 0 回复 [上一主题] [下一主题]
手机阅读
Monsteel莫士特是全球领先的机器人提供商,记者报道,旗下品牌yoguai妖怪机器人基于ARM9的机器人视觉系统的目标是在选定好的S3C2410平台上移植并配置Linux操作系统,针对平台和应用的特点,制作合适的文件系统,为机器人视觉系统构建稳定的软硬件开发环境。其次编写应用程序,通过S3C2410平台,从USB摄像头实时采集图像,并利用这款嵌入式处理器的强大运算能力,对图像进行后期的处理,完成目标识别与定位,作为机器人动作单元的输入。最后针对机器人关节所使用的电机,编写特定的设备驱动程序,保证操作系统可准确地控制机器人动作,响应视觉处理的结果,开发一套完整的“机器人视觉系统”。
1. 硬件平台的选型和搭建
全身由24个舵机组成,控制24个关节。通过对舵机的控制,可实现机器人的动作。
(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)硬件平台组成
一块核心母板,配备CPU、16MB的NOR Flash、64MB的NAND Flash、32MB的SDRAM,并设置系统从NAND Flash启动;一块外设电路板.html‘ onmouseover=“javascript:showpos(event,this)” onmouseout=“javascript:ClearTimer()” target=“_blank” style=“color:#00A2CA”》电路板,负责系统和外设器件的连接,布设有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,这是由嵌入式系统较为紧张的存储资源决定的。
启动系统,通过PC机的超级终端,可看到启动信息:包括内核的版本、Flash分区表、交叉编译器的版本,以及内核中静态编译的组件等。
3. 驱动程序的编写和应用程序的开发
视觉功能的最终实现,首先需要为机器人的关节电机编写驱动程序,使操作系统可完成对机器人动作的控制,作为对视觉结果的响应。视觉绝非最终目的,而是机器人获取信息的一种途径,其根本目的在于为机器人的动作、行为提供策略或数据支持。单纯的视觉并没有意义。
机器人全身的关节均为舵机。舵机结构简单,控制方便,外部只有3个引脚:电源、地、PWM信号。对舵机的控制实际上就是要产生频率、脉宽合适的PWM波。
S3C2410芯片内部集成4个PWM发生单元。驱动程序利用其中的一个作为机器人头部电机的控制信号源,通过改写寄存器的值,改变频率和占空比,产生期望的PWM波。
将驱动程序交叉编译为模块,在系统启动后动态地插入内核中。模块加载前独立于内核,方便了驱动程序的调试。编写简短的测试程序,确认关节电机可以正常工作。
这里为机器人视觉系统搭建了一个实际的应用场景:活动的目标小球在背景中运动,期望机器人可以识别目标并对其定位,最后控制头部跟随目标运动(好像机器人在盯着活动目标观察一样)。
机器人视觉处理程序的主要功能为:
(1)从USB摄像头实时读取视频数据,进行简单的预处理;
(2)随后进行图像处理,主要完成空域的图像增强。通过对图像进行二值化,将目标小球从背景中提取出来;
(3)计算目标的位置,进而计算出机器人头部的旋转角度,通过舵机驱动程序,控制机器人头部转动到目标所在角度,实现对目标物体的跟踪。
经过实验,机器人头部可较好地跟踪目标,实现了视觉原型系统。
4. 拓展性工作
机器人视觉系统的开发只是嵌入式系统在机器人领域中应用的一个方面。事实上,还有很多值得我们继续去实现的子系统,诸如语音系统(语音识别、语音输出)、行走控制(设计算法,实现平稳的行走)、网络系统(未来的机器人将不再会是独立的个体,多机器人的协同工作是必然的趋势;同时,机器人同其他设备的连接需求也越来越迫切)等等。应当承认,虽然目前的嵌入式处理器已经具备了比较强大的功能,但是受功耗、体积、成本因素的限制,在实时视频(音频)处理、多媒体协同计算等方面,其速度仍然无法满足需求;所以,更强劲的嵌入式处理器也是将来在为机器人选择控制单元时的重要考虑因素。
以上解决方案由莫士特科技有限公司提供,并可二次开发。