姚文龙,刘 毅,邵 巍,孙玉洁
(青岛科技大学 自动化与电子工程学院,青岛 266100)
借助小天体探测器获取的天体序列图像是准确了解小天体三维形貌等信息最有效的方法,同时也是实现探测器着陆过程导航制导[1]、顺利着陆的前提。由于小天体地表特征复杂多样[2]、环境摄动干扰多[3],目标暗弱不规则[4],探测器在着陆段导航制导过程中受多种噪声、环境摄动、不规则弱引力场等复杂扰动影响,使得探测器姿态设计难以保证,获取的着陆图像无序、效率低,因此探测器设计应具备先进的精确控制和影像处理系统。复杂的深空环境及探测器设计制造的高要求性,极大地增加了实验成本,使得探测器着陆探测任务难以开展实施。
考虑到深空环境的不可预知性及着陆探测的复杂性,小天体着陆段光学图像导航与序列图像获取是一项复杂程度高且难以保证的过程,因此对其进行大量综合模拟是保证任务成功完成的前提。针对复杂环境实验中所存在的诸多问题,为提高实验准确性及快速性,虚拟现实技术被广泛应用[5],取得了良好的实验效果。文献[6]搭建彗星接近段导航图像仿真虚拟实验平台,通过OSG仿真软件模拟彗星探测接近过程,建立虚拟相机模型,实现了对彗星接近过程图像序列仿真。文献[7]在“虚幻引擎4”软件中构造火星地形地貌模拟火星仿真环境,构建火星车模型,实现火星场景漫游,完成了任务点到目标点的火星探测任务视景仿真。文献[8]利用OpenGL图形库搭建三维场景,基于Cg着色语言的GPU编程实现小行星成像仿真,产生了真实感较强的小行星模拟图像。虚拟现实技术在模拟火星表面探测、彗星接近段动态模拟等方面取得良好的效果,成功模拟出火星车在火星表面的视景仿真过程和彗星接近段导航图像的动态获取过程。现有的深空探测虚拟视景仿真系统是以行星作为目标天体进行设计的,如近地空间环境综合仿真演示平台Space Eye 2005[9]、基于Vega Prime的月球软着陆视景仿真系统[10]等,对于具有质量小、目标暗弱不规则、表面特征多样特性的百m级、km级以及10 km级的小天体,采用现有的虚拟视景仿真系统效果不理想,获取影像精度不够,难以满足小天体探测器着陆段光学图像导航验证需求。
针对这一现象,为了研究复杂深空环境下探测器着陆段运行及序列图像获取过程,研发了一套小天体地形动态模拟与着陆视景仿真系统。该系统具备完善的模型优化及探测器姿态仿真算法。首先,运用三维建模技术对目标天体模型进行调整,采用加权最小二乘法对模型三角网格进行光顺,利用线性插值法提高贴图质量,并合理选择纹理贴图方式,实现模型渲染优化。其次,采用Unity3D引擎,结合三维交互技术、碰撞检测技术开发虚拟仿真系统,并通过旋转矩阵法实现探测器姿态设计,然后借助编程语言完成探测器运动及图像存储。最后,通过与某研究所制导、导航和控制(Guidance,Navigation and Control,GNC)系统的对接,实现数据实时传输与读取,构建出半实物仿真系统。在仿真系统设计时,充分利用了Unity3D引擎多平台发布的特点,使其能在多个主流平台上运行,极大地降低了硬件设备成本。系统软件克服了复杂深空环境对探测器的限制,能够很好地模拟探测器着陆过程,为小天体着陆段导航制导、光学图像导航、柔性附着等研究提供了前提。
运用虚拟现实技术,结合小天体立体模型,借助三维建模软件对模型进行调整,开发视景仿真系统,实现了小天体在虚拟深空环境中的模拟实验。以小行星25 143 Itokawa作为目标天体进行实验验证,系统设计分为以下几步:
1)利用建模软件3D s Max对Itokawa三维模型进行调整,并进一步实现对模型三角网格的光顺,提高了模型真实感;
2)纹理贴图进行插值处理,提高了图像质量,采用插值后的贴图进行纹理映射和渲染,丰富了目标模型表面形貌特征;
3)运用Unity3D虚拟引擎构建视景仿真系统,包含深空仿真环境搭建、基于旋转矩阵法的探测器姿态实现、辅助功能设计,实现了虚拟相机图像存储、碰撞检测等功能;
4)实现Unity3D与GNC系统的通讯,GNC系统作为仿真数据来源,输出太阳光入射方向、探测器位置及欧拉角信息,本系统以给出的信息作为实验输入进行仿真,成功模拟出小天体探测器着陆段的动态运行。
结合承担的航天某所项目提供的小天体模型数据信息,在大量实验基础上进行三维模型仿真,得到小天体Itokawa仿真模型如图1所示,观察到小天体的三维形貌特征,其中通过细化模型数据信息可以进一步提高模型的准确性。
图1 Itokawa仿真模型Fig.1 Itokawa simulation model
观察小天体三维形貌特征,按照小天体实际尺寸大小,利用3dsMax中的可编辑多边形、拉伸、FFD修改器等指令对模型进行调整[11],得到Itokawa基础三维模型,基础模型由三角面片网格组成。进一步通过加权最小二乘法对网格模型进行光顺处理,实现模型表面光滑,减少噪声影响。
基于最小二乘的光顺算法[12]可以描述为:假设某一含噪声的三角网格模型为T={V,E,F},其中V={vi|i=0,1,···,t-1}为模型所有顶点的集合,E为模型T所有边的集合,F为模型T所有三角面片的集合,求得与T具有相同邻接关系的新三角网格T′={V′,E,F},其中T′要确保光滑且与T保持相似,还要保持T的尖锐特性,在数学上可将保特征网格光顺表示为求新网格顶点,使能量函数
其中:S为对角线上元素为si的对角阵;V′与V分别为光顺后网格顶点和原网格顶点构成的向量;L表示n阶Laplacian矩阵,表述为
图2 Itokawa三维网格模型Fig.2 Itokawa 3D mesh model
仿真软件开发中,模型坐标轴的选择影响着物体运动轨迹,因此需对模型坐标轴的位置和角度进行调整来匹配功能需求。系统建模流程如图3所示,当模型放缩、导出后,其轴向发生偏离时,需在3DsMax中进行轴向与轴心的重置变化,将调整完的Itokawa模型以“.FBX”格式成组导出,并导入Unity3D中形成模型库,随时选用。
图3 系统建模流程Fig.3 System modeling process
通过对小天体模型尺寸调整,得到目标天体基本轮廓,后续对模型三角网格光顺处理,增强了模型表面光滑度,但基础模型与实际天体表面特征环境相差较大。为使模型更加逼真,需对模型进一步优化,对模型修改器中参数进行调试,使得模型表面陨石坑、地表凹凸更加明显,小天体三维模型模如图4中所示,更加接近图1Itokawa仿真模型。
图4 Itokawa三维模型Fig.4 Itokawa 3D model
为进一步丰富模型表面特征信息,利用纹理贴图在不增加模型复杂程度基础上来突出表现对象细节,并且可以创建出反射、凹凸等多种效果,来完善模型的外观形貌,使构建的模型更加真实。纹理贴图的本质是二维纹理图像映射到三维模型表面[14],纹理映射的关键是确定物体空间和纹理空间的映射M,M可由式(4)表示
其中:(u,v)和(x,y,z)分别表示纹理空间和物体空间中点的坐标。由于目标天体形状近似椭球形,采用球面纹理映射方式
采用此纹理映射方法会在模型的两端处产生明显的纹理形变,因此,需借助立体投影映射来进一步处理模型产生的纹理形变,立体投影映射定义为
其中:p=tanφcosφ;q=tanφsinφ。φ 为经度、φ 为纬度。
纹理贴图的图像质量和大小决定着最终的显示效果,对原图像采用双线性插值[15]进行改善,分别通过对x轴和y轴进行一阶线性插值实现,结果如图5所示。已知Q11=(x1,y1),Q12=(x1,y2),Q21=(x2,y1),Q22=(x2,y2),首先对x轴方向线性插值,插入R1、R2像素。
图5 双线性插值算法图示Fig.5 Bilinear interpolation algorithm diagram
再进一步对y轴方向进行插值,并根据R1、R2像素,线性插值计算P点处像素,实现图像插值。
对线性插值所得图像裁剪为纹理有效区域并更新纹理坐标,其中在纹理更新过程中,新纹理(u′,v′)坐标为
其中:umin、vmin分别为原纹理u、v方向上最小值为原纹理u、v方向上长度。
结合线性插值得到的新图像,采用球面映射和立体投影映射相结合的方式,并通过调整UV坐标及U、V、W平铺参数,实现了将二维平面贴图准确贴附在三维复杂模型上。避免出现纹理拉伸、像素模糊化等现象,Itokawa贴图优化后的效果图如图6所示。
图6 Itokawa优化模型Fig.6 Itokawa optimization model
设计视景仿真系统需要对系统场景规范建模,主要分为以下几步:
1)优化后的立体模型成组导出为“.FBX”格式,并导入到虚拟引擎资源文件夹,借助树状资源列表合理规划场景资源,实现资源规范化;
2)小天体模型载入Unity3D虚拟中,对模型进行旋转、平移等调整以及设置模型物理属性,引入虚拟相机等场景模型,构建物体碰撞检测关系;
3)合理构建场景天空盒并设计场景光照系统,搭建出虚拟深空仿真环境;
4)探测器姿态描述方法的设计与验证,通过汇编语言进行小天体探测器辅助功能的实现;
5)场景环境的优化,通过光照动态渲染与静态渲染的结合,实现场景渲染优化;
6)实现与GNC系统的数据传递,其中GNC系统输出仿真数据,本系统软件对数据进行读取。
为使Unity3D平台中的场景更加真实,创建天空盒模拟真实深空环境,其中深空环境中光源是仿真系统的重要组成部分,场景中的光源决定了场景呈现出来的氛围。在Unity3D中光源对象[16]主要有4种:区域光、点光源、方向光、聚光灯,本系统选用方向光模拟太阳光照,Unity3D中方向光强度不随光源位置的远近而发生衰减,首先调整光源方向并调整光照强度,其次为模拟复杂光照条件,光源模式设为混合模式,再次将光源阴影效果设置为软阴影模式,使场景物体阴影更加显著,最后对场景光照渲染优化,构建的仿真运行场景如图7所示。
图7 仿真场景搭建Fig.7 Simulation scene construction
小天体的动态仿真需要对天体不同姿态进行相应模拟,因此仿真系统需建立强大的逻辑动作库,命令与动作相互联系。小天体的运动特性对探测器能否顺利仿真具有重要影响,故小天体运动功能设计是本仿真系统不可缺少的环节,借助运动函数实现模型动作,并按照天体实际数据设计其运动参数,Itokawa参数信息[17]如表1所示。
表1 Itokawa基本参数Table 1 Itokawa basic number of participants
探测器运动仿真是本系统设计的重要部分,是探测器能否实现对小天体地形动态观察的前提,通过脚本控制探测器的具体运动从而实现实时动作。系统运动模块使用的部分脚本API如表2所示。
表2 关键脚本API Table 2 Key script API
在深空探测任务中,探测器姿态轨迹设计影响着整个探测任务的结果,姿态设计是探测器轨道设计的前提,通过对姿态的描述能够直观观察探测器实际运行状态,确保小天体探测任务的顺利进行。
本系统模拟探测器位于着陆段不同位置和姿态处对小天体地形的动态观察以及高分辨率着陆图像的获取。探测器姿态设计决定着探测任务中小天体成像与探测器的精确着陆,根据任务实际需求,通过旋转矩阵法[18-20]实现探测器姿态设计。
小天体着陆段的模拟成像、探测器的姿态设计是在世界参考坐标系下描述的,真实空间下的三维立体坐标系,不会出现平移与旋转变化,在Unity3D中,选取初始时刻的惯性坐标系作为空间坐标系。小天体的固连坐标系定义在小天体上,原点在小天体中心处,z轴与目标小天体最大转动惯量轴方向一致,x轴指向目标小天体的最小转动惯量轴,选择构成左手坐标系y,模型导入到虚拟引擎中定义小天体固连坐标系三轴与世界坐标系轴向一致且平行。
为得到探测器在特定旋转顺序下的目标姿态,将抽象的空间旋转割裂为3次绕不同旋转轴依次进行的旋转变化。在不同的旋转顺序下,存在多种表示相对姿态的旋转矩阵,其中Unity3D中坐标系为左手坐标系,遵循左手法则,探测器姿态旋转顺序为z-y-x可通过绕z轴旋转γ 角、绕y轴旋转β 角、绕x轴旋转α 角得到探测器的预期姿态,欧拉角旋转变换如图8所示。
图8 z-y-x欧拉角转动Fig.8 z-y-x Euler angular rotation
根据坐标转换矩阵基本原理,利用欧拉角分别求取绕不同旋转轴的旋转矩阵,根据期望旋转顺序,得出z-y-x旋转下的姿态矩阵为
Unity3D中的旋转函数以z-x-y为默认顺规,需对姿态矩阵进行等价转换,假设此旋转顺序下小天体探测器绕坐标系x轴旋转α1角,绕y轴旋转β1角,绕z轴旋转γ1角,可得新姿态矩阵为Dzxy(γ1,α1,β1)。对已知欧拉角(α,β,γ)进行角度转换,给出一个旋转矩阵N=其满足以下等价关系
利用公式等价原理求得转化后的欧拉角为(α1,β1,γ1),并将转化后各轴的旋转欧拉角代入新姿态矩阵Dzxy(γ1,α1,β1)中。
假设P为探测器上的一点,其坐标为(X,Y,Z),P1为探测器经过旋转变换后得到,变换后坐标为(X1,Y1,Z1),小天体探测器的姿态变换求取公式为P1=PDzxy(γ1,α1,β1)。
对上述姿态变化矩阵进行化简,可得探测器姿态描述为
利用旋转矩阵设置探测器姿态,旋转轴的选择可以为任意向量,避免直接使用欧拉角旋转时出现的万向节死锁现象。通过旋转矩阵法实现了对探测器姿态的设计,直观地模拟出了探测器着陆过程中的三维姿态轨迹,实现了探测器对小天体地形观测过程中的姿态变化。
Unity 3D 平台具有可视化的树状资源列表(Hierarchy),可以列出项目中的场景及文件,通过直接拖拽对象来建立对象间父子关系。在父子关系中,对父物体的运动或操作,会使其子物体发生相同动作,使得大量对象属性更改更加简便。本系统所建立的目标小天体模型导出时,进行重置变换及坐标轴转换等处理,小天体模型导入Unity3D后,模型比例、尺寸未发生变化,避免了因模型比例问题引起的子物体形变或位置显示错误。
碰撞检测技术是探测器在虚拟场景中运动,接触到天体表面时做出的反应。探测器在实际着陆运行过程中不会穿越天体表面,若场景中未设计碰撞检测,则探测器在运行中可能会出现穿越小天体现象,场景也就失去了逼真性,交互的体验感也会下降,因此需对场景中模型进行碰撞检测设计。虚拟引擎中提供了多种碰撞器,其中包含Box collider、Sphere Collider、Mesh Collider等。碰撞器组建的作用就是使用一个规则的多边形逼近该物体,检测不同物体之间的碰撞器是否相交[21]。在添加相对应碰撞检测组件后,绑定包含碰撞检测函数的脚本,通过调用事件响应函数和事件监听函数实时监听场景,实现碰撞检测并控制碰撞后行为。
深空探测器GNC系统通过收集和处理传感器的测量数据来实现导航与控制功能[22],执行姿态确定、姿态控制、轨道确定等导航与控制算法的运行。GNC系统分为3部分:姿态控制系统、自主导航系统、轨道制动系统。GNC系统软件包含多种函数分别输出相应数据信息,在执行对日捕获/定向时,通过太阳敏感器给出太阳方向矢量信息。在探测器接近目标天体光学导航过程中,探测器通过星敏感器与陀螺联合定资,得到探测器相对惯性空间的姿态信息,此信息传送给轨道确定系统,轨道确定系统利用导航相机拍摄天体光心信息和加速度计测得探测器上控制加速度,确定探测器相对目标小天体的位置信息。
系统软件通过接口协议与GNC 系统相连接,GNC系统给出探测器着陆过程中太阳光照矢量信息、探测器位置信息和姿态信息数据文本,实现了Unity3D直接读取GNC系统给定数据信息,确保系统数据的准确性,避免因数据传递引起的系统仿真误差,本文部分仿真数据如表3所示。
表3 仿真数据Table 3 Simulation data
通过读取GNC系统所给实时仿真数据,结合本文中小天体探测器三维姿态算法,成功模拟出的探测器运行轨迹如图9所示,探测器姿态描述如图10所示。
图9 探测器运行轨迹Fig.9 Detector trajectory
图10 探测器姿态描述Fig.10 Detector attitude description
模拟的探测器着陆段部分运行轨迹如图图9所示,z-y-x探测器运行路线从a点运行到b点,逐步逼近目标天体,表3仿真数据对应的探测器姿态及运行终点处探测器的姿态描述如图10所示,仿真运行时能够清楚地观察到小天体着陆段探测器姿态变化及着陆运行轨迹。
在Unity3D中,以世界坐标系为参考坐标系,小天体固连坐标系轴向与世界坐标系轴向一致且平行,软件运行得到探测器姿态轨迹虚拟仿真,其中Unity3D世界坐标系中红色轴代表X轴,绿色轴代表Y轴,蓝色轴代表Z轴,Z轴垂直于X轴和Y轴,构成左手坐标系,模拟探测器部分着陆段运行轨迹如图11所示,运行轨迹自下向上运行,逐渐逼近目标小天体,探测器的姿态虚拟仿真结果如图12所示,其中(a)为小天体固连坐标系,(b)为终点位置处探测器姿态描述。基于旋转矩阵设计的姿态算法,能够使得探测器虚拟相机视角指向目标小天体,更加快速地、直观地实现了对小天体表面特征的动态观测。
图11 探测器轨迹虚拟仿真Fig.11 Virtual simulation of detector trajectory
图12 探测器姿态虚拟仿真Fig.12 Virtual simulation of detector attitude
系统软件实现了探测器对Itokawa地形形貌的观测,对探测器虚拟相机设计图像获取功能,可按实际任务需求设置获取图像的分辨率、图像数量、张角角度及获取时间,仿真图像分辨率高、图像有序、具有较强真实感,小天体探测器图像获取流程如图13所示。视景仿真系统中包含了虚拟视景搭建与渲染优化,探测器姿态设计及场景物体辅助功能设计,软件具有界面操作简洁、实时响应速度快和系统稳定性较高等特点,在探测器着陆段运行过程中,系统能够快速响应,探测器可以按照预期位置、姿态运行,虚拟相机能够实时观测到天体地形特征并存储。
图13 探测器图像获取Fig.13 Detector image acquisition
软件运行得到了探测器位于不同位置和姿态处的Itokawa小天体着陆序列图像,探测器获取的部分着陆图像如图14所示。通过探测器虚拟相机所得高分辨率图像可以实现对小天体地形特征的观察,模拟了小天体探测器着陆段的动态运行过程,为后续小天体着陆段相关算法仿真验证提供了实验基础。
图14 部分序列图像Fig.14 Partial sequence image
恶劣深空环境及着陆探测过程的复杂性,使得深空探测器对目标天体着陆段动态观察与地形图像获取成为一项艰巨的任务。为降低探测任务运行成本、提高任务成功率,本文设计了基于虚拟现实技术的小天体地形动态模拟与着陆视景仿真软件。该系统软件通过对三维建模软件的运用,并结合加权最小二乘法及图像纹理插值算法,最终实现了目标天体模型的建模及优化。借助Unity3D成功开发了小天体着陆段动态虚拟仿真系统,并在GNC仿真系统数据研究的基础上,合理规划设计了模型对象间的父子关系及场景碰撞检测等功能,实现了探测器动作及序列图像获取。本文采用的姿态描述方法,避免了探测器姿态设计过程中出现的角度误差及欧拉角转换误差,提高了系统精确度与稳定性。在准确读取仿真数据基础上实现了小天体探测器对着陆段序列图像的获取,获取图像真实、纹理丰富、重叠率小,为探测器着陆段光学图像导航制导、小天体柔性附着及着陆段图像特征快速提取等着陆算法的研究提供了仿真实验平台。