曾庆远
(中国电子科技集团第十研究所 四川省成都市 610036)
合成视景系统(SVS),是系统读取地形数据后再通过图形显示平台还原的三维虚拟场景的显示系统,目前低空飞行场景应用的飞行器基本都已装备合成视景系统。无论在民航或军用领域中,为避免飞机在低空贴地飞行过程中出现视觉盲区飞行员无法查看真实地形而导致危险事故,需要装备现代化合成视景系统,飞行员可实时查看当前飞行区域的地形,提高飞行安全。
飞行员在飞行过程中对前方地形的三维态势感知至关重要,因此,设计一种能实时显示和提示前方三维地形的机载系统是很有必要的。通过机载设备提供三维地形显示,飞行员能实时对当前飞行进行判断和决策。在实时性方面,设计一种高效的嵌入式实时系统以满足航空电子设备的高效性与实时性亦十分重要。
合成视景实现是将存储设备中的地图数据进行读取解析后进行三维虚拟场景还原显示过程。一般地,三维地形数据会在地面预处理平台生成固定的数据格式存储在存储卡中,通常地形数据根据经纬度信息进行区域分块存储。合成视景三维图形显示一般通过图形引擎进行加载显示,三维地形基于地形数据库在嵌入式平台进行实时加载。基于嵌入式平台和地形数据库技术对合成视景进行渲染显示可满足实时渲染的需求。
实时飞行过程中,合成视景系统通过导航设备发送的导航信息,根据飞机的位置、姿态等信息加载当前三维地形,嵌入式平台图形处理模块对三维地形数据进行三维地形渲染,生成可视化逼真的三维地形。系统实现框图如图 1 所示。
图1: 系统实现框图
针对大容量地形数据的处理与渲染,系统选用某国产化X200 图形芯片作为合成视景嵌入式平台核心处理器,以满足航空电子设备对系统实时响应性要求。X200内部集成了图形处理单元和通用数据计算单元,具备高效的数据处理能力的同时也拥有强大的三维渲染能力,支持通用的图形驱动,方便了合成视景软件开发,提高开发效率,硬件上3D 加速功能,可满足三维地形的高清显示。
通用处理器CPU 与图形处理器GPU 通过芯片内部总线,实现大容量数据传输。CPU 端设计好图形需要绘制的顶点缓存、图元属性、颜色等信息,将数据信息存储在缓冲区后,最终通过内部总线传递至GPU 端缓存,经过GPU 进行图元渲染显示。在平台设计方面采用一种CPU 与GPU 共享内存的模式,从内存划分一部分空间给GPU 作为显示存储使用,此种模式满足低功耗平台需求,同时也减少了平台设计复杂性,为图形引擎以及软件提供了稳定高效的运行环境。
设计的合成视景嵌入式系统主要包括硬件设计部分与软件设计部分,使用嵌入式实时操作系统作为软件运行环境。设计X200 作为硬件的核心部件,包括通用处理器部分用来处理数据和逻辑控制,承担整个系统的运算和控制功能;应用图形处理器作三维图形渲染核心部件对三维数据库文件进行渲染显示。
合成视景软件部分设计成多线程模式软件框架,设计了地形绘制任务、地形加载任务、数据处理任务、平台服务任务。任务之间通过设计的管道通讯机制进行数据通信。其中设计OSG 图形引擎是三维渲染重要组件,它提供了图形渲染的核心接口供合成视景软件调用,最终通过图形处理器进行渲染输出。嵌入式平台系统实现框图如图 2 所示。
图2: 嵌入式平台系统实现框图
高程数据DEM 精度会影响整体的三维显示效果,现有高程数据常用格式有30×30 米、90×90 米两种精度[1]。系统选用30×30 米数据精度进行三维地形还原显示。为嵌入式平台能高效的加载地形数据,需将地形数据进行预处理转换成存储结构简单、可动态加载计算的数据格式。高程地形数据原始数据通常为.tif 格式,在地面平台中应用工具将地形生成一种具备lod 金字塔形式的.ive 数据格式的三维模型。
三维地形数据首先存储在地面存储子卡,考虑到大容量数据存储,设计1T 容量的存储空间。计算机设备通过读取到地面存储子卡里数据,通过VPB 工具进行格式转换。将最终转换后的数据存储在机载存储子卡中,存放地形数据格式按分块方式存储,以方便图形引擎对地形数据的加载。系统设计地面存储子卡与机载存储子卡是同一物理介质,设计了热插拔功能,此设计优化了大容量数据的存储拷贝过程。地形数据预处理流程如图3 所示。
图3: 地形数据预处理
通过上节地形数据预处理后获得的最终可在机载设备加载显示的地形数据。系统设计基于OSG 图形引擎技术来实现三维地形的加载和渲染,X200 图形处理单元支持openGL 标准图形接口,OSG 图形引擎封装大部分openGL 接口,可直接使用OSG 图形引擎接口进行三维地形显示设计。OSG 图形引擎提供视景窗口管理类、三维地形管理类、文件读取类、层次细节处理类、图形渲染类等。通过文件读取接口读取到地形数据文件,设计层次细节类将地形数据进行管理,最后图形渲染进行视景处理,通过设计好的窗口进行管理视景输出。
三维地形的渲染过程通常是根据导航设备给的位置高度信息,根据经纬高的信息,OSG 引擎开始查询机载存储子卡对应的地形块,每个经纬度信息都能找到对应的地形块,查询到对应地形块后,根据高度信息显示地形块的层级,每一块地形块根据图层的层级进行瓦片划分。将需要的地形瓦片块进行读取和加载。同时的设计纹理贴图模式,读取纹理图片,将对应的三维地形与纹理图片进行投影映射。配置图形引擎的相机,一般地,三维地形显示设计投影坐标系为透视投影,设计相机观察位置、法向量,截距的远近距离等信息,同时设计漫游器适配观察相机即可实现三维动态显示。
基于OSG 图形引擎生成的三维地形显示效果图如图 4 所示。
图4: 三维地形显示效果图
3.3.1 三维地形算法设计
三维地形显示采用的是四角面片网格算法对三维地形进行构建,设置三维地形行列号,间隔距离,通常使用一个矩阵网格表示一块地形的区域。设计一个当前位置为矩阵初始位置,以横轴为X 轴,纵轴为Y 轴,设置每个顶点距离间隔为D,可以计算每一个顶点的位置,通过加载高程数据,将每个位置高度设置成对应的高度值。接着,读取纹理图片,将纹理图片进行坐标映射,绑定每一个纹理坐标与顶点坐标,通常对纹理坐标进行归一化处理,纹理坐标范围为(0.0)-(1,1)。通过纹理映射后获得三维地形数据。
设计基于OSG 引擎方法实现三维地形的渲染,初始化观察位置,设定好相机位置和投影模式,设置三维透视投影模式,将三维显示模式设置为背部消隐,不显示的部分进行顶点隐藏,不显示观察相机不可见部分,在不影响显示效果的前提下,可以减少顶点渲染数量,提高渲染效率。同时的设计水平和垂直视场角,对视角范围外的场景进行裁剪,通过视场角的设定,显示的区域范围符合人机交互的观察习惯,对飞行员对三维地形视景的观察具有更良好的感知。
3.3.2 软件设计
软件部分设计是基于vXworks 嵌入式实时操作系统,由于机载平台对系统实时性要求,vXworks 在作驱动开发和图形库集成方面提供了通用的组件和软件接口,便于底层驱动移植和应用软件开发。vXworks 嵌入式实时操作系统具备多任务开发环境,在应用软件设计时可设计多任务处理的模式以满足系统对功能的需求。
合成视景软件设计分为应用软件与BSP 软件两部分,BSP 软件主要设计底层驱动和图形驱动等接口软件设计,BSP 部分主要是设计嵌入式网口、串口、PCIE等接口,以实现通讯与控制通道。为应用软件提供可靠运行环境。
应用软件是合成视景功能实现部分,合成视景应用软件设计为地形绘制任务,地形加载任务,数据处理任务,平台服务任务。平台服务任务实现预处理、功能任务监控功能,保证对功能任务的实时监控;数据处理任务管理各个任务之间通信,通过管道通信机制对各个任务运行资源进行资源管理和控制;地形加载任务通过图形驱动提供的接口函数加载地形数据库的数据,根据导航数据传输的参数加载当前地形模型;通过前面各个任务之间的协同工作后,将需要准备渲染的视景通过地形绘制任务进行地形绘制。整个软件性框架按数据处理和图形显示分离的模式设计,实现软件高内聚低耦合的需求,增强软件了显示和处理效率,实现了对硬件资源最大化利用。合成视景软件实现框图如图 5 所示。
图5: 合成视景软件实现框图
实验选择山区地形附件进行三维地形显示验证,山区地形高度起伏明显便于实验观察验证。输入仿真模拟器将导航数据通过网络接口发送给平台,通过嵌入式软件平台服务软件接收处理后,最终加载当前三维地形。导航数据主要是周期性发送导航位置、姿态信息以更新飞行位置和姿态。为了直观显示导航效果除了三维地形位置更新,在实验验证过程中还增加了仪表和三维地形叠加,动态的监控地形和仪表的显示。
实验显示如图 6 所示,从实验效果图观察,嵌入式系统成功加载与显示当前三维地形,运行后帧率平均大于30 帧/秒,地形显示画面清晰,仪表数据更新正常,整个系统运行稳定。在稳定性和实时性均能满足航空电子设备要求。
图6: 三维地形显示图
基于X200 嵌入式平台实现合成视景系统,在设计过程中严格要求实时性和稳定性进行设计。集成的处理单元和图形单元为系统运行提供的硬件资源,vXworks实时操作系统提供稳定的运行环境,设计的多任务应用软件高效实现三维地形显示功能。实验验证表明基于X200 嵌入式合成视景系统架构具备航电设备应用的条件。同时基于X200 平台的合成视景系统在功率消耗偏高,在地形加载后功率会快速增长,在后期研究中可优化图形驱动,减少图形模型的重复绘制工作进而减少系统功耗。