机械荟萃山庄

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 655|回复: 0

基于开源OSGEARTH的国产航天三维仿真软件

[复制链接]

2万

主题

2万

帖子

17万

积分

超级版主

Rank: 8Rank: 8

积分
173959
发表于 2022-12-27 13:31:23 | 显示全部楼层 |阅读模式
OSG是一个开源的场景图形管理开发库, 为图形图像应用程序的开发提供场景管理和图像渲染优化功能。 OSG具备跨平台特性, 可以在大部分CPU上编译通过, 可以运行于Windows、Linux等大多数操作系统, 具备线程安全性。

OSGEARTH是一个基于OSG的开源跨平台类库, 提供了一个地理空间SDK和地形引擎, 可以从数据源构建可视化地形模型和影像, 方便快速构建基于三维数字地球的各类应用, 在各领域已有广泛应用。
航天三维仿真软件的系统架构,底层是麒麟国产操作系统, 第二层的Qt提供基本界面功能支持, 第三层的OSG提供三维仿真基础框架和功能, 第四层的OSGEARTH提供三维数字地球相关的应用接口, 顶层是三维仿真软件. 三维仿真软件主要包括了场景资源初始化加载、三维场景管理、关键事件与视点控制、仿真动画控制、粒子系统控制、数据驱动、弹道数据筛选、弹道外推、地球自转及轨道推算、测站自动跟踪、多屏切换、场景配置等主要功能模块。
关键流程如下: 软件初始化时基于OSGEARTH加载地球影像和高程数据从而构建三维数字地球场景, 然后通过网络接收弹道、关键事件等各类任务数据, 弹道数据经过筛选、插值处理后驱动飞行器位置变化, 关键事件数据通过事件机制触发相应动画播放, 各模块协同实现飞行器三维仿真。
对于影像数据, 地图影像数据量很大, 10级全球地图影像大约需要15 GB, 而道路标注影像数据相对较小. 考虑到高精度影像数据不但占用空间, 在进行三维场景渲染时也非常耗费资源, 影响渲染效率. 因此, 软件采用分区域分层方式加载不同精度影像数据, 共分三层: 底层采用中等精度级别(如10级)的全球地图影像, 中间层采用较高精度级别(如16级)的全球道路标注影像, 上层采用较高精度级别的各发射场区域地图影像(如11–16级). 当在火箭起飞离地面较近、可视地域较小时调用发射场区域的高精度数据, 当火箭或飞行器远离地面、可视地域较大时调用全球低精度数据, 而道路标注层数据量不大, 采用全球高精度数据.

对于高程数据, 同样存在数据量大的问题, 但简单地通过上述方式加载高程数据无法避免出现较明显的“地形断裂”现象. 因此, 软件仅在中国区域加载了一层中等精度级别(如10级)的高程数据, 其他区域未使用高程数据. 当火箭起飞至进入大气层前, 恰在中国区域范围内, 此时距离地面较近, 加载中等精度地形, 当火箭进入大气层后, 此时距离地面较远, 高空俯瞰对地形的关注程度降低, 没有加载地形基本不影响整体演示效果。
通过差异化的加载策略, 在不同场景切换时, 影像和地形不会出现明显突变现象, 最大限度地减少了实时渲染的数据量, 有效提升了渲染效率, 保证了流畅的仿真效果。
通过网络接收以驱动飞行器模型的弹道数据可能存在非正常数据(主要是相对飞行时出现跳动), 因此在后端弹道数据插值处理前应先进行相应的筛选, 避免不必要的计算处理, 有效提升飞行器仿真流畅程度.

整体流程只要满足网收启动的条件就循环执行. 内部基本流程如下: 首先, 如果没有新数据到达或为非弹道类数据, 则结束本轮处理, 否则继续根据弹道数据和起飞时间计算当前弹道飞行时间rt, 获取本地飞行时间lft(每秒自动计算当前本地时间与起飞时间之间的差值), 并获取上一帧弹道数据的飞行时间rt0; 然后, 判断rt和rt0的大小, 如果rt小于rt0, 则数据非法, 结束本轮处理, 否则继续判断rt和lft的绝对误差, 如果误差超过阈值Threshold, 则数据非法, 结束本轮处理, 否则数据合法, 继续完成弹道数据插值处理并更新数据引擎驱动模型的位置变化, 转入下一轮处。
在飞行器仿真过程中, 需要显示各测站到目标飞行器的跟踪状态. 当目标飞行器相对于测站出地平, 即仰角大于等于0度, 测站开始跟踪, 显示跟踪线, 当目标飞行器相对于测站入地平, 即仰角小于0度, 测站停止跟踪, 隐藏跟踪线.

基于目标跟踪的原理,通过OSG中节点更新回调机制实现测站自动跟踪. 某个测站到目标飞行器的跟踪线通过跟踪线场景节点对象lineNode定义, lineNode节点注册一个节点回调对象。TTCNodeCallback. 测站自动跟踪的流程是这样的: 当渲染整个三维场景的场景图且遍历至lineNode节点时, 会自动调用回调函数并传入该测站的地理位置信息和飞行器目标节点对象。targetNode, 根据targetNode获取当前时刻目标的地理位置信息, 从而计算出该测站到目标节点的仰角E. 如果E<0, 则清理lineNode的显示缓存, 隐藏跟踪线, 否则用测站和目标的位置信息更新lineNode的顶点信息, 刷新lineNode的显示缓存, 从而显示跟踪线。
在研发机房部署仿真验证环境, 包括两台工作站, 一台是国产化工作站(飞腾1500A、16 GB内存、1 TB硬盘、AMD RX570独显、银河麒麟操作系统4.0.2), 部署航天三维仿真软件, 一台部署数据仿真重演软件及数据处理软件. 仿真重演软件加载仿真数据发送到数据处理软件经处理后, 模拟任务网络环境向三维仿真软件发送数据, 验证三维仿真的可靠性和渲染效率。
本文基于OSGEARTH设计和实现了一款国产航天三维仿真软件, 通过地球影像和高程数据的差异化加载、场景树的优化构建、弹道数据筛选等设计策略, 解决了在全国产化平台上进行三维仿真的可靠性和渲染效率问题, 并通过仿真实验进行了验证。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|机械荟萃山庄 ( 辽ICP备16011317号-1 )

GMT+8, 2024-11-15 21:05 , Processed in 0.085475 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表