项目主要研究开发内容研究多点触控技术的原理、硬件实现方法以及对象跟踪算法,研制一种以ARM处理器为核心,彩色液晶图形显示、多点触控输入,具备底层驱动和软件中间件的高可靠性智能仪器面板。
项目研究开发内容研究开发主要内容研究多点触控技术的原理、硬件实现方法以及对象跟踪算法,研制一种以ARM处理器为核心,彩色液晶图形显示、多点触控键盘输入,具备底层驱动和软件中间件的高可靠性智能仪器面板。
基于ARM智能仪器面板硬件架构当前按照智能仪器仪表的适用场合和复杂程度,其硬件结构大体有以下几种形式:●电池供电的低功耗便携式的硬件架构●基于ARM通用仪表面板的硬件架构本项目重点研究基于ARM智能仪器仪表的硬件架构。
其框架如图2所示。
研究的主要内容包括以下4个部分。
多点触控屏ARM9 系列嵌入式处理器RS232USBVGA以太网存储器彩色液晶显示器基于ARM的多点触控智能仪器面板的硬件架构(1)智能仪器面板的硬件体系结构●智能仪器面板功能分析●智能仪器面板的硬件体系结构(2)智能仪器面板底层设备驱动技术研究●设备驱动程序研究⏹设备文件的定义及其设备无关性⏹字符设备驱动程序⏹块设备驱动程序● 智能仪器面板各功能模块底层设备驱动技术研究⏹ 数据测量模块接口驱动技术 ⏹ 数据存储模块驱动技术 ⏹ 人机接口模块设备驱动技术 ⏹ 数据通信模块接口驱动技术(4)智能仪器面板底层设备驱动的设计实现智能仪器仪表底层驱动与中间件结构如图3所示,研制的软件模块包括:● 设备驱动的模块化构建与内核的裁剪配置⏹ 设备驱动模块的添加 ⏹ 内核的裁剪配置● 系统引导程序 bootloader 的设计 ● 主要设备及接口驱动程序的设计实现⏹ SPI 接口驱动的设计及实现 ⏹ LCD 驱动的设计及实现 ⏹ USB 驱动的设计实现 ⏹ 以太网接口驱动的设计与实现ARM 硬件平台操作系统SPI 驱动操作系统适配层OS Adapter 嵌入式数据库SQLite 嵌入式人机接口MiniGUISPI 通信模块打印报表模块RS232通信模块数据管理模块人机接口模块打印驱动串口驱动PS-2驱动SD 卡驱动键盘驱动LCD 驱动VGA 驱动物理层系统层中间层应用层智能仪器仪表底层驱动与中间件结构图智能仪器面板的图形化液晶显示利用操作系统的Framebufer技术,完成彩色LCD的帧缓冲驱动程序,并设计MiniGUI用户程序界面触摸屏驱动程序。
帧缓冲(framebuffer)是操作系统为图形设备提供的1个抽象接口,帧缓冲设备属于字符设备,采用“文件层一驱动层”的接口方式。
对用户而言,它和其他设备文件没有区别,用户程序可以把framebufer 看成1块内存,既可以向这块内存中写入数据,也可以从这块内存中读出数据,LCD显示器将根据相应指定内存块的数据来显示相应的图形。
应用程序对显示缓冲区的读写操作是抽象的、统一的。
用户程序不必关心物理显存的位置、换页机制等具体细节,这些是由帧缓冲设备驱动来完成。
基于framebuffer 的LCD显示原理如图4所示。
应用程序LCD显示器显存在用户空间的映射内核态地址空间(显存区)地址映射系统调用基于framebuffer的LCD显示原理如图其研究的主要内容包括:●智能仪器面板的图形化显示功能分析●智能仪器面板的图形化显示软件体系结构●智能仪器面板的图形化显示软件中间件●智能仪器面板的图形化显示软件实例4.1.3智能仪器面板的多点触控技术多点触控技术以为苹果公司的iPhone手机为代表,它必将快速延伸到仪器仪表行业。
在多点触控中,如何有效地执行对象追踪技术是决定多点触控效能的关键,当扫描系统建立对象的信息之后,必须配合一个有效而稳健的搜寻与配对策略,在连续扫描的信息中快速而精准地找出对象的位置,或是建立对象所需要搜集的信息。
在压电式触控技术中,使用区域合并方法来消除破碎或分散的对象,以提高整个系统的处理速度,此外依据主动式轮廓追踪技术来掌控触控屏上每个点的移动状况,而且进一步利用特征追踪法对对象位置变化作预测,以缩小搜寻比对的范围,主要步骤包括预测下个时间点的对象状态与依据变化量来更新系统内部参数,真正达到一个具有动态调整的精密追踪技术。
主要研究内容包括:(1)多点触控智能仪器面板的硬件结构(2)多点触控的对象跟踪方法在多点触控的运算流程中,通过扫描系统检测触控点信息,通过滤波器先将原始数据中的背景噪声消除,界定触控的区域范围并得到有效触控面积后,可以计算出重心位置,经ARM作运算处理判断是否合并成为坐标。
另一个特性是检测压力的变化,通过接触面积的不同而改变导通的电流量,内部电路进而根据该电流变化量转化为压力值变化。
这些处理后的坐标以及压力信息再经由ARM将多点移动动作转换成指令,将此指令传给主系统的CPU就可以控制面板显示内容以及执行一些应用程序,但其中如何将触碰在屏幕上的每一点的动作完整的解析出来,是整个多点触控系统中最重要的核心。
本项目重点研究多点触控技术中的以下三种方法。
●区域合并(Region-Based combination)触控技术以矩阵式的传感器来感应手指或物体触碰的动作,一般而言,当触碰到屏幕的物体较大或是手指按压的力量较大时,会让传感器所感应到的面积范围较大,但某些时候因为手指或物体的移动速度较快,或是触碰时的压力不够大,造成同一个触碰范围内,扫描系统传感到的对象由好几个组成,而不是单一的触控对象,因此在区域式追踪的算法中,必须判断在同一个扫描帧(frame)中,哪些对象有可能是同一个手指或物体所造成的,就必须把这些对象合并在一起,否则若破碎的情况没有办法有效的合并,那么将来这些对象在移动的过程中将更加难以追踪辨识。
●主动式轮廓追踪(Active Contour-Based Tracking)它是将扫描系统传感到的触碰信号转换成轮廓线来表示,并赋予轮廓线影像空间的特性,比如面积、形状等,再利用每个frame新的信息作轮廓的更新,用以追踪对象。
在多点触碰的过程中,每一个手指或触碰的物体在经过上一个步骤“区域合并”之后所产生的轮廓都不尽相同,而在这些对象移动的过程中,我们就可以根据每一个对象在轮廓上的特性来增加追踪的正确性,而且由于轮廓线是封闭曲线,本质上也容易解决对象交错的问题。
●特征追踪(Feature-Based Tracking)以对象特征为基础的追踪方法,是萃取扫描系统所传感到的原始数据中形成目标物的各种成分,再将这些成分集合成较高阶的特征信息,藉由比对相邻数据的特征信息来追踪目标物。
根据不同的触碰特征,可分为:电压信号差异、触碰面积差异、移动速度差异。
以电压信号差异为例,在多点触碰的情况中,有可能会有一些触碰点具有相同的传感面积,倘若这些面积相差不多的触碰点在移动过程中有靠近、甚至交错的情况,单纯利用面积信息作为对象追踪的辨别可能会造成误判,但压电式触控技术的扫描原理就是利用扫描系统将手指的触碰转换为电压信号,每一个手指在按压屏幕时的力量大小有所不同,则检测出来的电压也会有不同的变化,因此每一个对象除了有面积信息可以参考外,还会有平均电压值作为其中一个特征。
假设在对象追踪的过程中,当我们没办法由面积的差异来分辨每一个对象时,就会进一步使用每一个对象的平均电压特性做配对的计算。
技术方案(1)主要芯片的选型●ARM芯片选用英特尔公司PXA270。
PXA270是Intel公司开发的基于XScale架构的处理器,内核采用ARMv5TE,外围控制器众多。
内置了Intel的无线MMX技术,能够显著的提升多媒体性能,此外PXA270也包含了Intel的SpeedStep 技术,能够根据需要动态调节CPU的性能,真正实现了低功耗,高性能。
同其他XScale处理器一样,支持多种嵌入式操作系统,如Linux、Windows、WinCE、Nucleus、Palm OS、VxWorks、Java等。
PXA270的产品除基本接口功能外,可以扩展特殊接口,能满足军用级和工业级的环境要求,带有强大的电源管理功能和强大的图像处理功能,是工控ARM主板中的高端产品。
在石油和矿业等行业有广泛应用。
(2)操作系统的选型在嵌入式应用领域,其操作系统主要是Linux、WinCE和VxWorks。
在突出图形显示界面、要求实时性、工业环境下的仪器仪表应用中,三者各有利弊。
●Linux:代码开源Linux操作系统是一款优秀的操作系统,支持多用户、多线程、多进程,实时性好,功能强大且稳定。
同时,它又具有良好的兼容性和可移植性,被广泛应用于各种计算机平台上。
缺点:代码开源可靠性、安全性难以保证。
●Windows CE .NET是Windows CE 3.0的后继产品。
Windows CE .NET为嵌入式市场重新设计,为快速建立下一代智能移动和小内存占用的设备提供了一个健壮的实时操作系统。
Windows CE .NET具备完整的操作系统特性集包和端对端开发环境,它包括了创建一个基于Windows CE的定制设备所需的一切,例如:强大的联网能力、强劲的实时性和小内存体积占用以及丰富的多媒体和Web浏览功能。
VxWorks操作系统:注重实时性它是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。
在我们的军事、通信、工业控制等领域得到了非常广泛的应用。
缺点:价格昂贵。
综合上述因素,项目选择WinCE作为首选系统。
(3)对象跟踪的实现:物件追踪的算法(biparite matching)多点触控技术中每个frame会有不定个数的对象,可能只有1个,也可能有2个,甚至有10个。
必须持续追踪这些对象的变化,包括每个点什么时候出现、中间移动的轨迹以及什么时候消失,如果追踪机制只面对一个点,那么问题很简单。
在图5中,圆形为前一个frame对象的位置,方形为当前这个frame的位置,在单一点的情况下,可以直接断定圆形和方形是同一个对象,并且移动路径是A。
11 A单一物件的位移与追踪图6展示了两个点的情况,如何判断两个对象是走了路径A还是路径B以及更复杂的可能。
为了简化,用一个简单的策略来解决:在两个frame间,相对位移越短就越可能是相同的一个点,也就是说在图6中,上方的方形应该是点1,下方的是点2,因为这样两个点移动的距离都比较短。
1?A2?ABB多点物件的位移与追踪利用图论中的bipartite matching问题来解全域的最佳解。
详细的配对方法如下:1.假设前一个frame的所有对象集合为A,目前frame的则为B;2.对于A中的所有点a,计算出到B中所有点b的edge长度,并放进一个数组E中;3.把数组E中距离太远的edge剔除掉:4.将E按edge长度排序,从小到大;5.从E的开头开始,每取出一条edge前先看看edge的两端点是否已经配对成功过,配对时同时会判断对象的各种特征,除了距离要最短之外,其余的特征也必须符合才能完成一组配对:6.重复上一步直到取出所有edge为止。