+ 康海龙1*,范亚楠2,李斌1
(1. 中国电子科技集团公司电子科学研究院)(2. 中国科学院国家空间科学中心)
开源软件的迅速发展,逐渐改变了世界开发软件的格局。作为太空探索领域的佼佼者,美国国家航空航天局(NASA)在2017年3月发布了2017-2018软件目录[1],开源了一系列航天相关项目,包括多年使用的设计仿真工具、应用软件和代码库等,大部分可免费使用,如用于与航天器交换大文件的标准工具CCSDS CFDP文件传输协议等。以往论文研究集中在NASA的技术成果转化政策和机制方面,本文从技术角度,对NASA开源软件进行了研究,二次开发实践,并思考了开源技术对软件定义类卫星技术发展,对解决卫星智能化问题的借鉴意义。
从1964年开始,一直以尖端的科学技术领先全球的NASA通过设立技术转让计划,开始建立航天技术服务于民生的长效机制,每年都出版一期Spinoff报告,迄今为止,超过2000项技术成功转移到民用领域。NASA在履行好座右铭“我们努力奔向新的高度,为人类福祉而发现未知”的同时,其建立的技术转让计划使得众多中小企业利用NASA科研成果进行创业,使航天高科技在新的领域得到更广泛的应用。在航天领域NASA设立的技术转让计划成为运行良好、效益突出的高技术成果转化机制,加速了科技成果转化。
作为技术转让计划中的一部分,NASA在官网上发布了大量航天项目中的开源软件和工具,目前,一共有1072可用的程序软件,涵盖项目管理、数据和图像处理、电源系统、航天器设计与集成工具、自主系统等15个方面,见图1。这些代码来自NASA Ames、JPL、Jonhson、Armstrong等11个研发中心和机构。NASA的做法有两方面目的,一方面希望通过开源社区同行评审提高代码质量、加速开发,并能收获更多项目改进的建议,另一方面,最大化NASA研究的知名度和影响,同时也将技术转让给企业和个人,用于新的领域发展最新科技。
Livingstone2[2-3]由NASA Ames中心研制,是基于模型的故障诊断和恢复引擎,目的使复杂系统如航天器,不断自主化和智能化,在最少人工干预下,实现系统状态自我感知、诊断和响应非正常状态,尤其是面临硬件故障或未知事件时。
图1 软件目录分类
通过建立一组多层次的定性逻辑模型,通过对比模型预测数据和传感器实测数据来检测和诊断系统故障,实现追踪系统的状态,并根据不同状态给出建议指令实现系统继续运行,原理见图2所示。L2已经在包括X34推进系统和国际空间站等几个试验床上实施和应用,同时也在地球观测卫星1号(EO-1)上进行过飞行试验。
Trick 航天器仿真环境[4]由NASA 约翰逊空间中心研发,使用户可以对航天器研制的各个阶段建立仿真应用,包括早期设计、性能指标评估、飞行软件开发和测试,飞行过程动态分析,软件和硬件的闭环测试。目的是提供一种通用共性的仿真能力,以便各领域专家更专注在特定领域的模型,而不是仿真功能应用如任务排序、数据存储等。但是这款软件只对美国公民开放。图3为Trick蒙特卡洛高级仿真功能流程,允许用户对不同输入进行重复仿真,不断优化。
Open MCT( Open Mission Control Technologies )是下一代具有数据可视化的任务控制框架,可在桌面端和移动端分别使用,由NASA Ames中心开发,用于航天器任务分析,运行控制和规划。作为一个通用开放的基础平台,用户可在Open MCT基础上进行二次开发,针对不同航天器开发任务规划、控制和数据分析等应用。系统效果图见图4。
系统用于监视卫星平台健康状态,目前包括但不限于CPU温度、GPU温度、CPU使用率、RAM使用率、ROM使用率、姿态测量参数(如加速度传感器XYZ,磁强计XYZ等)等信息,将健康状态信息(SOH: State Of Health)以CCSDS数据包格式封装,通过无线射频链路发送到地面站系统,以图表形式进行显示信息。
系统利用Raspberry PI+PC构建验证原型系统,RPI作为卫星端,运行Linux系统和飞控系统软件,应用软件SOH,PC端作为地面端,运行Linux系统及地面站软件,通过WiFi无线链路连接,系统运行后,可进行遥测遥控功能。系统架构图,见图5。
图2 L2诊断原理
图3 Trick的蒙特卡洛功能流程
图4 Open MCT系统效果
系统集成开源软件的技术优势,并结合需求进行定制化改进,经过三个月测试,软件工作正常,系统运行稳定,实现了简单的健康状态监视功能。下一步可通过总线集成更多部件,进行对应功能软件开发,丰富完善。地面系统运行图,见图6
图5 系统架构
图6 地面系统运行图
在航天软件领域,NASA开源了从航天器仿真、设计工具、星载软件、地面任务控制、结构材料设计工具等各类应用软件、代码库和工具。开源动机是希望通过开源社区同行的使用提高软件质量,但从某种程度上讲,使用这些代码尤其是二次开发会让技术实力稍弱的企业依赖NASA的基础级代码,影响自主创新能力。
航天软件对太空资产的重要性不言而喻,尤其是基础的核心软件。在操作系统方面,VxWorks 操作系统依然是国内大部分航天项目主流选择,开源化研究操作系统,值得思考。另一方面,人工智能技术共性的系统是Linux,许多机器学习算法基于Linux开发,卫星智能化发展是选择开源的路线,集智发展,抑或是传统领域吸收成熟智能算法融合发展,这也是一个值得探讨的研究方向。
开源软件具有开放、共享、自由等特性,企业可避免重复造轮子,使用最少的人力、物力、财力就能很快构建一个系统,在开源软件基础上定制灵活,通过社区的力量,软件也更稳定、安全性更高,可及时发现和修复安全漏洞。一个非常成功的例子是,Android 2007年以开源形式发布后,阵营呈现爆炸式增长,成为份额第一的移动操作系统[6]。
更稳定、更安全、更可靠的追求促使航天软件开发测试成本更高,由于追求高可靠和责任重大,导致软件发展已慢于互联网软件行业发展。商业航天的发展,结合开源技术,在软件质量、软件成本方面,有望改变这一局面。
NASA开源的项目软件,部分代码每天迭代更新,提高了软件的质量,进一步降低了应用在航天类项目中的风险,这对于软件定义类卫星技术发展有着很大借鉴意义。
[1]NASA Open Source Software[EB/OL]http://code.nasa.gov.
[2]LivingStone2[EB/OL]https://github.com/nasa.
[3]陈治佐,刘兴钊,吕高焕. Livingstone 用于航天器推进系统故障诊断[J]. 太赫兹科学与电子信息学报,2013,11(5):770-774.CHEN Zhi-zuo,LIU Xing-zhao,LV Gao-huan. Fault diagnosis of spacecraft propulsion system by using Livingstone[J]. Journal of Terahertz Science and Electronic Information Technology,2013,11(5):770-774.
[4]Trick [EB/OL] https://www.nasa.gov/centers/ames/research.
[5]Open MCT [EB/OL] https://github.com/nasa/openmct.
[6]https://www.idc.com/promo/smartphone-market-share