美国猎户座gn&c系统开发—基于模型的开发实践(一)
术语
arinc = 美国航空无线电公司(aeronautical radio, incorporated)
gn&c =制导、导航与控制(guidance navigation and control)
cc = 循环复杂度(cyclomatic complexity)
gui =图形用户界面(graphical user interface)
cdr = 关键性设计审查(critical design review)
mbd = 基于模型的设计(model based design)
csu = 计算机软件单元(computer software unit)
pa-1 = 逃逸测试一号(pad abort one)
eba = 空箱架构(empty box architecture)
pdr = 初步设计评审(preliminary design review)
eml = 嵌入式matlab(embedded matlab)
pil = 处理器在环(processor in the loop)
eft-1 = 探索飞行测试一号(exploration flight test one)
sdp = 软件开发计划(software development plan)
fsw = 飞行软件(flight software)
sil =软件在环(software in the loop)
一、概述
猎户座的制导、导航与控制团队负责开发首次太空测试飞行飞船(eft-1)的gn&c算法。gn&c团队是一个联合小组,由主要承包商(lockheed martin)、美国国家航空航天局(nasa)人员和其他承包商组成。在算法开发早期,团队选择matlab/simulink作为gn&c算法开发工具并使用mathworks公司的自动代码生成工具将gn&c算法转化成飞行软件(fsw)代码。本文从猎户座gn&c开发人员、集成人员、fsw工程师和管理的角度描述了gn&c团队的成功经验和遇到的问题。文章中评价了整个开发流程中该团队完成的主要工作,包括仿真工具、标准化的开发流程和自动代码生成方法等。
猎户座的制导、导航与控制(gn&c)团队使用mbd流程完成飞行软件的开发,包括在simulink图形化设计环境中开发算法、自动生成c++代码并集成到无线电系统中。猎户座gn&c系统庞大、复杂,而且它是由一个不同地区的团队合作完成,所以有许多经验和教训,不仅适用于航空航天,也适应于其他行业的项目。
后续章节提供了猎户座项目的相关背景以及在初步设计评审(pdr)前阶段、关键设计审查(cdr)前阶段和后cdr产品阶段的设计中遇到的问题与成功的经验。文章结尾部分总结了该项目的经验教训并为以后的mbd项目开发提供了建议。
二、项目背景
猎户座项目使用mbd的流程存在三个问题:应用程序的大小和复杂性、gn&c团队组成和地理分布、传统的工具和基础设施。本章提供了上述三方面的背景以便使读者更好的理解和评估过程决策和经验教训。
应用程序的大小和复杂性
猎户座飞船是美国宇航局探索低地轨道之外地方的载人航天器,飞船由三个主要部分组成:乘员舱(cm)、服务舱(sm)和发射中止系统(las)。乘员舱含有gn&c子系统,如图1所示:
图1 猎户座飞船gn&c子系统
gn&c子系统的中心是gn&c飞行软件中心(fsw),运行在飞船管理计算机(vmc)中。该软件从导航传感器和飞行员控制器接收输入、显示和指挥cm,sm和las上的受动器完成任务目标。
猎户座gn&c软件运行在不同的任务阶段,包括发射前,上升,地球轨道,转移轨道,游荡,交会,对接,进入和多种任务终止等情形。在这些阶段,gn&c负责cm和sm的传感器通信、指挥cm、sm和las的受动器。该软件必须具备手动和自动模式,而且必须能处理机组人员和地面指令。另外,软件必须同时能够在进入、上升中止和轨道机动的高机动情形下执行复杂的制导和导航控制算法。由此产生的算法驱动一个多速率架构以满足cpu使用分配问题。
猎户座计划自启动以来已经进行了改进。起初,gn&c软件飞行任务包括所有三个组件(cm,sm和las)并要求可以在软件的整个能力带宽内执行,然而,载人航天计划和预算的变化使得出现了包含对增加性能进行飞行测试的分阶段开发方法。
猎户座cm的首飞将是仅测试cm的试飞,使用商业的助推器将其发射到椭圆轨道完成高速进入以测试cm的热防护系统。被称为“首次探索飞行试验”(eft-1),该试飞在与助推器分离的预发射阶段,g&nc仅用于导航,随后在进入大气和降落伞着陆阶段引导太空舱落入海中(图2),对于eft-1,las只是一个质量模拟器,所以在eft-1中不需要gn&c中止算法。这种阶段性的飞行试验方法,意味着gn&c软件的部分设计已经完成并进行测试以及实现与猎户座的航空电子设备的集成,而其他的组件和算法依然在后pdr设计阶段完成。
图2 eft-1任务概况
gn&c团队
猎户座gn&c团队是一个庞大的、地域分散的团队,包括不同经验和背景的人员,gn&c架构和算法工程师包括得克萨斯州的约翰逊航天中心nasa公务人员,在休斯敦和丹佛的洛克希德马丁员工,还有霍尼韦尔,德雷珀以及其他在佛罗里达州、马萨诸塞州、明尼苏达州和其他州的二级供应商的人员。团队人员在航天飞机、国际空间站、行星探测项目以及商业卫星开发等均有项目经验,gn&c团队的软件开发经验从“经典的”使用详细需求文档和手写代码的开发流程到部分或全部的使用自动代码生成的自动开发流程。另外,团队人员对mbd的理解由于个人专业领域的不同也不尽相同。导航制导的开发人员通常更喜欢基于文本的算法描述,而控制人员和架构工程师则比较喜欢像simulink这样的mbd工具,地域的差别和经验的不同均对mbd有一定的影响,不管是好的还是不好的。
继承工具
在选择主要的供应商之前,nasa团队已经开发了一系列的使用c的仿真工具和gn&c控制算法原型,仿真模型和gn&c算法均集成在jsc的“trick”仿真环境中,这种仿真被称为nasa探索研究的高级技术架构(antares)。pdr之前的大多数算法开发和性能分析均在antares中完成,洛克希德马丁开发了一个独立的基于“trick”的仿真环境称为“osiris”,osiris可以将gn&c飞行软件作为一个独立的程序运行,这样就可以在osiris和antares中共享gn&c算法,pdr之后,osiris作为开发和测试gn&c算法的仿真工具。
在pdr阶段,gn&c算法使用c代码(75%)和simulink算法生成的c代码集成到原型的c中,在算法从原型到成品软件的移植过程中也考虑了多种因素,最后决定在mbd流程中使用simulink用于飞行软件的开发,同时保留c代码仿真。因此决定创建一个开发环境包括c仿真并与simulink过程进行通讯(下节介绍),主要原因如下:
1)主要供应商的飞行软件团队在gn&c算法使用自动代码生成开发方式假设下工作,因此没有足够的资源完成将详细的手写需求转化为手写算法代码的过程;
2)matlab/simulink允许在本地的mbd环境中进行算法开发和调试;
3)已有的c代码仿真经过全面的功能验证,使用simulink仿真并没有必要,且比较耗时;
4)pad abort one(pa-1)飞行测试曾使用类似的软件开发流程。
后续文章将比较猎户座mbd开发过程与传统的手写代码开发过程的优点和缺点。这里的重点是列举和解释mbd开发过程中的技术、经验教训和工具使用问题。
三、pdr前阶段分析、设计和流程开发
pdr之前,团队主要关注生成和验证gn&c的需求和开发初步算法,大部分工作使用antares和osiris完成。
在pdr阶段,计划转到mbd开发流程。包括以下关键新工具和技术:
1、matlab仿真接口允许在simulink中进行算法开发并使用c中已有代码;
2、包含gn&c算法的空的simulink框架模型;
3、unix和matlab脚本用于执行trick和simulink 联合仿真。
pdr之前,团队开始利用如图3所示的工具和流程进行开发,首先,算法在simulink中开发,通常他们基于在c中已有的原型算法,因此,有段时间是用来翻译已有的原型c代码,将其在simulink中实现;
图3 开发周期内猎户座gn&c开发工具
simulink算法被称为simulink计算机软件单元(csu),在很多项目中csu用于定义低层的可测试单元,但是在猎户座中,csu在大小和复杂度上变化较大,并且大部分具有可测试的子模块。
然后,算法集成到simulink框架中与6自由度模型进行集成,simulink框架被称为“matlab simulink快速算法工程仿真”(ramses),包括所有的gn&c算法以及运行算法需要的其他飞行软件。
ramses被已有的6自由度c代码仿真驱动,由于大部分人员比较熟悉c代码,能够发挥已有能力的优势,所以没有创建simulink模型来驱动,然而,这个决定为开发流程增加了难度,这种方法的利弊会在下面介绍。
开发人员在本地ramses的simulink环境中进行大部分的开发、调试和集成工作,对于分析工作,ramses会生成c代码在unix中以一个进程来运行仿真。这样可以加快如蒙特卡洛分析和某些调试的仿真速度,在matlab中运行时被称为ramses—m(m代表matlab),生成代码执行被称为ramses—a(a代表自动代码)。
图4设计和生产循环过程
图4显示了上述工具如何在设计过程中使用,在左上方,初始原型、需求验证和前pdr设计阶段,主要使用c代码的算法和仿真,在后pdr设计阶段,图3的工具用来将c代码翻译成simulink csu代码。ramses—m算法开发的迭代过程和ramses—a的性能测试即为设计循环,是后pdr阶段的主要工作。进入后pdr阶段,将csu自动生成代码交给gn&c飞行软件团队集成到gn&c 分区。gn&c 分区的测试不仅在处理器的软件模拟环境中进行,也在实际的猎户座处理器中进行,这个测试过程的迭代被称为生产循环,有时候需要修改simulinkcsu,所以设计变更请求被反馈到设计团队使用ramses做修改。gn&c设计和飞行软件团队需要密切合作,因此对设计变更请求的响应非常迅速。在ramses中的全面测试意味着在simulink模型中有非常少的错误,遇到的大部分问题都是执行效率不够(后面章节详细介绍)。下面主要介绍在pdr到cdr设计和后cdr阶段产品设计流程中得到的经验教训。