贝尔面瘫

注册

 

发新话题 回复该主题

从嫦娥五号看数字化进程对于航天事业的贡献 [复制链接]

1#

北京时间年11月24日凌晨4时30分,海南文昌发射场,搭载着“嫦娥五号”探测器的长征五号遥五运载火箭成功点火发射。

「可上九天揽月,可下五洋捉鳖。」

自年我国航天科技工作者首次对“探月的必要性”进行探讨,到年探月工程正式立项实施。“嫦娥五号”作为中国探月工程三期的收官之作,将刷新人类无人月球采样返回任务的新纪录。

与之前一到四号的嫦娥系列相比,此次发射的复杂程度堪比中国航天史之最。

从软件技术突破的角度来说,嫦娥五号所采用的的分布式综合电子技术以及装配的CMOS相机为此次我国揽月梦想的实现提供了关键支持。

嫦娥五号探测器由返回器、轨道器、着陆器和上升器组成。其中着陆器上有5台工程参数测量分系统相机。它们分别是钻取机构监视相机、采样过程监视相机A/B/C和分离上升监视相机。

出于对相机重量的考量,硬件工程师提出了“一拖五”的集成思路,于是相对应的也给软件工程师抛出了一大难题。

在此之前,软件项目团队已经将相机的像素由原本的万提高到了万。然而硬件集成之后,多路数据同时传输的效果是之前数据量的10倍。

另一边,执行太空任务时,数据传输的特点便是通道窄且码率低,这意味着只有将数据压缩到足够小,才能满足需求。

「如何将一座大山放进一栋楼里?」

H.压缩编码技术的引入帮助软件工程师们在严苛的成像质量条件下获得了更优异的图像。这是该技术首次出现在我国的深空探测领域。

通过抓取像素件的相关性并加以这个,算法团队极大的减少了视频图像数据的传输量,并实现了:1的H.视频图像压缩比,以及面向静态图像的宽压缩比范围的JPEG算法。

此次软件研制团队的第二大创新之举体现在提出了分区域管理的分布式综合电子单机的设计思想。

综合电子软硬件平台通过信息的集中管理和分类处理,能够整合航天器中姿轨控、热控、能源控制、导航、有效载荷数据处理、数据管理、测控与数传等分系统电子设备的功能,最大限度地实现软硬件的重用,减少系统间的接口和硬件资源的消耗,实现系统的模块化和简约化。

针对嫦娥五号轨道器的分舱段设计,如果按照传统的模式,那么就需要大量的跨舱段电缆进行有关配电、热控等的信息交互。

而分布式体系结构主要是利用总线结构进行信息交互,使用一条公共的数据总线连接所有的处理器单元,和集中式体系结构相比,具有模块性好,易于扩展,容错性好等特点,目前广泛应用于中大型航天器综合电子系统中。

除了此次嫦娥五号的标志性发射,其实早在“下一代卫星”的定义被创建以来,软件创新便开始用算法和代码更改航天业的传统面貌,转而描绘出了一副更加智能化的蓝图。

上周,SpaceX实现了历史上第一艘由商业公司发送进入太空的载人飞船发射。仅仅花费了传统商业发射公司十分之一的成本,马斯克在数字世界重构了整个研发体系,完成了从试错到修改的仿真过程。此外,SpaceX的载人龙飞船使用的是基于Linux、LabView和MatLab的操作系统。主要软件编写语言则是C++,少部分采用Python。

从0到1,软件工程始终跟随着人类探索宇宙的进程。那么回望过去,数字化技术究竟在以一种什么样的姿态完成人类对于航天发展的期盼?而展望未来,软件开发又会在什么领域实现新的突破?

01安全性是航天业的主要考量

由于嵌入式系统开发的普遍性,人们会第一时间想起C,Java,Python,C++以及R语言在当下互联网的盛行。

IEEESpectrum年度编程语言排行榜

然而航天领域由于其独特的行业属性,将安全标准放在了优先级的第一位。也就是说,安全关键代码在很大程度上影响了语言选择的决策。

比如说,加拿大的航空电子系统严格遵守DO-标准,该标准规定所开发的代码应具有确定性,即可再现且可预测的结果。

然而目前计算机语言中的某些特点,如多态性、过度使用指针、继承以及无用单元收集会导致整个程序的不稳定性。因此,当前许多流行语言在航天领域的应有都不理想。

此外,软件工程师在选择语言时要考虑的其他因素还包括如何进行错误检测,语言与硬件或实时系统对接的能力,以及语言可移植性。

同时,成本也是一大难题。为了配合大型航天器的硬件要求,编写相应软件的语言不但要有可靠的语言编译器,链接器和调试器以便于测试,更需要一个相对低廉的价格去控制成本。

因此,今天向大家介绍的用于航天任务的语言中将会出现一些较为陌生的面孔。

02航天事业中的数字化进程

年前后,第一代计算机问世,汇编语言成为跟计算机对话的第一代语言。在其诞生之前,早期的程序设计使用的是机器语言,程序员们将数字0,1编成的程序代码打在纸带或卡片上,然后输入计算机进行运算。

然而机器指令的最大缺点便是难以记忆并容易产生错误,因此汇编语言应运而生,可以看做是机器指令的书写格式。

由于其“机器指令”的前身,汇编语言保持了机器语言的一致性,能够做到直接访问所有能够被访问到的软、硬件资源。而人们目前常用到的高级语言程序再被机器执行之前都需要先被翻译成机器语言。

因此,汇编语言凭借其“简易性”和“直接性”在航天技术领域中十分可取,可以做到弥补高级语言在硬件控制方面的不足。

但同时,汇编语言直接面向机器,因此其编译的程序无法在不同的处理器上执行,缺乏了可移植性,这就表明还需要更完善的语言来进行功能的升级。

年末,约翰·W·巴克斯(JohnW.Backus)向他的IBM上司提交了一份提案,以开发一种更实用的语言来替代汇编语言对IBM大型机进行编程,Fortran由此诞生。

Fortran始于简洁忠于高效,将生成程序所需的时间减少了多个数量级,其在数值处理上所表现出的优异性受到航空软件人的青睐。

虽然时至今日,这款古老的语言仍旧服务于更新迭代的宇宙探索进程之中。但是其最后一个稳定的版本早在年之后就已经停止更新。

目前,Fortran在主流领域已经逐渐淡化了编码功能,更多的是体现在数学分析方面。因此,软件工程师们还需要开发出一个更加灵活也更加便宜的语言。

贝尔实验室曾经是地球上最伟大的实验室,它致力于数学、物理学、材料科学、计算机编程、电信技术等各方面的研究,真正意义上做到了“以平方丈量世界”。

年,DennisRitchie在贝尔实验室中创造了C语言。C语言经常被称为操作系统的“标准语言”,并广泛应用于各种系统软件编程中。它因其高性能(特别是在输入的数量或大小较大时),灵活性和廉价的编译器而受到重视。

话题回归,软件与硬件的相互扶持告诉航空工程师的一个最简明的道理就是,语言的使用同样受到成有限的制约,因此C语言的诞生解决了其燃眉之急。

无论是在哪个行业,模拟与测试都是质量保证最为重要的一环。而始终强调安全性与精确性的航天业更是如此,因此航模的建立与仿真开发尤为关键。

之前提到的Fortran虽然可取,但仍具有其局限性,那么有没有一种更好的选择帮助航天器在数字世界中实现重建呢?

年代后期,CleveMoler开始开发MATLAB。与Fortran相似,MatLab也适用于各种数值计算。而它的优点则是从根本上提升了整个进程的效率,并且在对统计数据和飞行数据的深度分析方面也有卓越的表现。

丹麦计算机科学家BjarneStroustrup于年在贝尔实验室开发了C++,作为C语言的扩展。他的目的是向C语言中添加面向对象的编程功能。

虽然C++的一些特性会阻碍检验的进程,但这些可以通过在开发过程中采用某些编码标准来避免。没有人真正理解C++,作为毋庸置疑的高级语言,它在现代航天软件的编程中提供了最多的支持。

最后一种应用于航天领域的编程语言被称为Ada。它的诞生源于美国*方的一个计划,旨在整合美*事系统中运行着上百种不同的程序设计语言,可以追溯到年。其中,Ada这名称的由来为了纪念世界上第一位程序员AdaLovelace。

脱离土地,甚至脱离地球,未知的环境没有给工程师任何试错的余地,这就要求其使用的代码应必须具备确定性。Ada语言恰好了迎合了这一点,它的语法偏爱单词而非符号,从而减少了通过错字造成错误的风险并提高了可读性。

年,AI算法与航天工程师们开始双向奔赴,期待在彼此的领域中实现新的突破。

截止目前,AI算法最主要的两类用途,一类是参与航天器的预防性维护来提高整体的运营效率。主要思路是将软件集成到现有的数据收集传感器系统进行数据点遥测,之后通过大量的数据训练以得出机身的某部分会在什么时候损坏,以及需要多长的维修时间。

第二类则是威胁检测,即通过机器视觉和深度神经网络识别物体,避免障碍,从而实现自主导航。据悉,NASA在其航天器的研发进程中,已经采用了该技术。

03未来,航天不再遥不可及

彼时我们仰望星空,未知成就了人类对于浩瀚宇宙最原始的渴望。

如今,国外的一个网站Ambasat用一句“你想建立自己的航天器并将其发射到太空中吗?”的标语就将普通人与卫星的距离瞬间拉近。

只需要一台电脑,一串并不复杂的C/C++语言编码,任何人都可以参与到航天事业中去。

年11月,中国科学院软件研究所牵头的软件定义卫星技术正式投入试验。

该卫星的中心思想是“以计算为核心,硬件最小化、软件最大化、实现智能航天”。这款卫星以功能为导向,像是一台运行在太空的开放型智能计算机。

传统的卫星曾经为一次任务量身定制,智能航天未来的目标便是实现通过远程遥控,如同我们在手机中更新一款APP一般,实时更新卫星的功能。

星辰为大海,代码写舟桨。智能航天的未来将与软件工程相互成就,踏上一条不同于以往的新的征程。

分享 转发
TOP
发新话题 回复该主题