2. 中国空间技术研究院北京卫星制造厂, 北京, 100094
2. Beijing Spacecraft, China Academy of Space Technology, Beijing, 100094, China
航天器上配置光学敏感器、测控天线、雷达、摄像机等设备,用于姿态测量、通信、测距、拍摄等,这些设备要求指定方向的一定角度范围不能有其他物体遮挡,否则会影响航天器的正常工作。对这类设备进行视场满足情况分析,是航天器的构型布局设计的重要组成部分[1]。
随着航天器的复杂度越来越高,不仅仅需要考虑单个航天器内的敏感器静态视场、机构类运动部件对视场的影响,还要考虑大型航天器的在轨建造阶段、组合体运行、在轨维护的整个过程中,是否存在敏感器视场遮挡的情况。
文献[2]给出了在基于SolidWorks平台开发的一套卫星光学敏感器视场有效性分析工具,使用包围盒干涉检查算法判断视场锥与敏感器视锥有无干涉,对于有干涉的物体,建立遮挡物体投影图,并使用视场蒙版剪裁获取有效视场区域,使用像素比对的方法计算遮挡率,并给出了软件实现结果,实现了视场分析的电算化。
文献[3-5]给出了常用的三维模型碰撞检测算法,这类碰撞检测算法要求设备的包围盒为实体模型,具备规整的边缘区域信息。
目前航天器的三维设计是基于ProE(新版的改称为Creo)等三维设计软件进行的。航天器整星/船/器的三维模型由各分系统提交的模型集成而成,分系统及单机单位提交的设备模型均是简化模型,大部分设备模型是由面片构成,而非实体,总体集成后的整舱、组合体的模型量非常大。三维CAD软件自带的碰撞模块无法对敏感器的视场锥与其他设备的面片模型进行碰撞分析,而且在大模型中计算效率非常低,软件崩溃时常发生。
目前航天器敏感器视场遮挡分析工作,依靠设计师采用静态的三维模型分析方法,在三维设计软件中装配航天器的舱体模型和设备模型,加载设备的视锥模型,该视锥模型要足够大,能够覆盖到整个航天器的边缘,典型的视场分析模型如图 1所示。
![]() |
图 1 某航天器视场分析模型(局部) Figure 1 Analysis model of spacecraft's field of view (part) |
由设计师依靠视觉的观察,人工判断视场视锥模型与其他设备的干涉情况。这种方法主要有以下缺点:依靠设计师视觉判断,在分析单个设备视场时,需要将其他设备的视锥模型隐藏,每个视场均需要设计师做大量的转动、缩放模型操作,从各个角度观察干涉情况,并手动截图记录,效率低,无法做到批量、自动化的分析工作,该方法无法给出视场被遮挡的准确区域和被遮挡率的比例。
对于空间站类型的大型航天器,由多个航天器组合而成,每个航天器的视场设备数量多,组合体构型多,每种新的组合体构型都需要重新分析所有设备视场的满足情况,人工分析的工作量大、效率低、出错率高。
综上所述,急需一种方法,实现航天器设备视场遮挡自动化地快速分析与计算。
1 第一视角视场遮挡分析方法 1.1 射线碰撞检测算法敏感器视场范围的延长线均可汇聚于一点,该点即为视场主点,从视场主点发射碰撞检测射线,按照各敏感器的视角范围配置检测射线投射的密度和区域,并记录射线的方位角度及碰撞检测结果,在发生射线碰撞的区域即为视场遮挡区域,典型的锥形视场遮挡检测示例如图 2所示。
![]() |
图 2 射线碰撞检测算法原理 Figure 2 Principle of ray collision detection algorithm |
射线碰撞检测算法遮挡率R的计算公式为
$ R=\frac{{{N}_{\text{发生碰撞射线数目}}}}{{{N}_{\text{射线发射数目}}}} $ | (1) |
射线碰撞检测算法在静态视场分析时有足够的时间资源去计算碰撞是否发生,但当航天器敏感器视场范围内存在运动部件时,这种碰撞检测算法无法实时记录视场遮挡状态,给出的碰撞检测结果是一个时间范围内的运动部件对敏感器视场遮挡影响的总和,不利于按时间精细分析视场遮挡情况。
当发射的射线密度足够高时,图 2所示的射线碰撞检测结果能够表达遮挡物的轮廓,无法表达出具体的遮挡物体。
1.2 摄像机模拟法在敏感器视场主点架设模拟摄像机,通过设置第一视角摄像机蒙版及图像映射模拟圆锥形、方锥形、球形等不同可视角度、不同类型的视场范围,各类不同的视场与摄像机映射关系分别如图 3—5所示。
![]() |
图 3 方锥形视场与摄像机映射关系 Figure 3 Mapping relation between square conical field of view and camera |
![]() |
图 4 圆锥形视场与摄像机映射关系 Figure 4 Mapping relation between conical field of view and camera |
![]() |
图 5 球形视场与摄像机映射关系[6] Figure 5 Relation between hemispherical field of view and camera |
将第一视角模拟摄像机的图像采集并保存,使用逐个像素点比对的方式进行遮挡率R的计算,遮挡率计算公式为
$ R=\frac{{{N}_{\text{图像像素}}}-{{N}_{\text{蒙版像素}}}-{{N}_{\text{背景像素}}}}{{{N}_{\text{图像素数}}}-{{N}_{\text{蒙版像素}}}} $ | (2) |
蒙版和背景颜色分别用不同的颜色值区分。摄像机运动法在获取第一视角图像的时候,无需视场遮挡分析模型保持静止,可以按帧获取图像,并在后台并行进行遮挡率的计算。所以该方法不仅适用于静态视场遮挡分析,也适用于视场范围内存在运动部件时的动态遮挡分析。
摄像机模拟法相对于射线碰撞检测法使用范围更广,本文使用摄像机模拟法建立基于第一视角的视场遮挡分析系统。由于ProE没有第一视角的摄像机模块,需要选用其他三维渲染引擎来完成第一视角的图像采集工作。
2 基于第一视角的视场遮挡分析系统设计 2.1 软件选型三维渲染引擎需要具备第一视角摄像机功能,并且能够自定义摄像机蒙版、摄像机映射,支持多个摄像机图像的采集和保存,方便用户自定义物体运动。本文采用Unity3D为三维渲染引擎。
采集后的图像像素提取比对有成熟的第三方工具openCV,使用Python模块下的NumPy(用于数值计算)、tkinter(用于用户界面开发)等扩展库,快速实现视场遮挡率计算功能,实现Unity3D视场图像截取、后台遮挡率计算并行运行。
2.2 实施步骤基于第一视角的视场遮挡分析流程如图 6所示。
![]() |
图 6 基于第一视角的视场遮挡分析流程 Figure 6 Process of field of view occlusion analysis based on the first view |
具体实施步骤如下:
(1) 将ProE模型转换为obj格式的文件并导入至Unity3D[7]中,建立视场分析基础模型,该模型只保留三维设计模型的外形信息,导入后,确认ProE三维设计模型与Unity3D场景下的模型一致,保证仿真场景的正确性。
(2) 三维设计模型中,需要预先标识设备视场主点坐标系的名称,例如“CSYS_SC_”+设备编号,通过ProE二次开发的方式,批量导出三维设计模型设备视场主点坐标系相对于舱体原点坐标系的转换关系,每个设备视场主点位置信息由3个浮点数定义,每个设备视场主点姿态信息由9个浮点数(3×3矩阵)定义。
(3) 在Unity3D中建立Camera,根据设备视场的可视范围,定义Camera的可视角度,对于非矩形视场,需要给Camera配置遮罩及映射关系[8],以满足个性化的视场定义需求,将配置好的Camera转换为Unity3D的预制体,预制体的名称与视场设备的名称一一对应。
(4) 在Unity3D中根据第(2)步提取的坐标系信息,将第(3)步中准备好的视场模型装配至第(1)步的视场分析基础模型中,完成视场仿真模型的建立。
(5) 在Unity3D中设置视场摄像机第一视角图像的输出文件夹,并输出所有视场摄像机第一视角的图像,输出的图像以设备名称命名。
(6) 使用OpenCV等第三方工具[9-12],对第(5)步输出的图像,进行逐像素点的分析,遮罩部分的像素点不计入统计计算,背景色设置为黑色,非黑色部分区域即为被遮挡区域,纯黑色部分区域为非遮挡区域,使用像素点数量比值计算视场被遮挡率。
(7) 在Unity3D中,设置机构类的设备运动方式,并设定相关设备视场摄像机的采样步长,可以分析机构类设备运动过程中对设备视场的动态影响过程。
3 功能验证依据2.2的实施步骤,进行了敏感器视场遮挡分析系统的开发,并用于空间站视场遮挡分析。软件主界面如图 7所示。
![]() |
图 7 软件主界面 Figure 7 Software main interface |
将ProE模型导入至分析软件中并建立仿真分析场景,ProE设计模型与Unity3D分析模型状态比对如图 8所示,模型一致性良好。
![]() |
图 8 ProE模型与导入至Unity3D模型对比 Figure 8 Comparison of ProE model and imported Unity3D model |
分析模型中,各类第一视角摄像机所获取的图像如图 9所示,通过设置摄像机可视角参数、蒙版及图像映射规则能够准确反映摄像机视角范围。
![]() |
图 9 第一视角图像采集示例 Figure 9 Image acquisition from the first angle of view |
对太阳翼转动过程对某星敏感器动态影像进行了分析,太阳翼会周期性地进入某星敏感器,分析结果如图 10所示。遮挡的快速计算结果如图 11所示。
![]() |
图 10 机构类设备运动过程对设备视场的影响示例 Figure 10 Example of effect of movement process of mechanism equipment on field of view of equipment |
![]() |
图 11 视场遮挡快速分析结果 Figure 11 Fast analysis results of field occlusion |
4 结束语
对于复杂航天器的敏感器视场遮挡静态、动态分析,本文利用Unity3D及OpenCV等工具,给出了一种视场遮挡分析方法及其实现,按照这种方法,可以自动、快速地进行敏感器视场遮挡分析计算,计算的结果包含遮挡率和遮挡区域。文中给出的仿真实例证明了该方法的有效性。
[1] |
王希季, 李大耀.
卫星设计学[M]. 上海: 上海科学技术出版社, 1997.
|
[2] |
何恒, 邓家褆, 胡凌云.
卫星光学敏感器视场遮挡分析工具设计[J]. 北京航空航天大学学报, 2008, 34(1): 100–103.
HE Heng, DENG Jiati, HU Lingyun. Design of blinding analysis tool for satellite optical sensors[J]. Journal of Beijing University of Aeronautics and Astronautics, 2008, 34(1): 100–103. |
[3] |
朱元峰, 孟军.
一种基于混合包围盒结构的实时碰撞检测的有效方法[J]. 系统仿真学报, 2008, 20(19): 5099–5104.
ZHU Yuanfeng, MENG Jun. Efficient approach based on hybrid bounding volume hierarchy for real-time collision detection[J]. Journal of System Simulation, 2008, 20(19): 5099–5104. |
[4] |
陈学文, 丑武胜, 刘静华, 等.
基于包围盒的碰撞检测算法研究[J]. 计算机工程与应用, 2005, 41(5): 46–50.
DOI:10.3321/j.issn:1002-8331.2005.05.017 CHEN Xuewen, CHOU Wusheng, LIU Jinghua, et al. Efficient approach based on hybrid bounding volume hierarchy for real-time collision detection[J]. Computer Engineering and Applications, 2005, 41(5): 46–50. DOI:10.3321/j.issn:1002-8331.2005.05.017 |
[5] |
郑延斌, 郭凌云, 刘晶晶.
混合包围盒碰撞检测算法研究[J]. 计算机工程, 2012, 38(13): 257–259.
ZHENG Yanbin, GUO Lingyun, LIU Jingjing. Study of hybrid bounding box collision detection algorithm[J]. Computer Engineering, 2012, 38(13): 257–259. |
[6] |
PAUL B. Creating fisheye views with the Unity3D engine.[EB/OL]. (2011) [2018]. http://paulbourke.net/dome/unity3d. |
[7] |
Unity Technologies.
Unity 5.X从入门到精通[M]. 北京: 中国铁道出版社, 2016.
|
[8] |
冯乐乐.
Unity Shader入门精要[M]. 北京: 人民邮电出版社, 2016.
|
[9] |
埃里克·马瑟斯. Python编程从入门到实践[M].袁国忠, 译.北京: 人民邮电出版社, 2016.
|
[10] |
乔·米尼奇诺, 约瑟夫·豪斯. OpenCV 3计算机视觉: Python语言实现[M].刘波, 苗贝贝, 史斌, 译.北京: 机械工业出版社, 2016.
|
[11] |
Ivan Idris. Python数据分析基础教程: NumPy学习指南[M].张奴宇, 译.北京: 人民邮电出版社, 2014.
|
[12] |
李佳宇.
零基础入门学习Python[M]. 北京: 清华大学出版社, 2016.
|