开源空间
在我撰写本文时,NASA 刚刚在向开源社区发布其成果方面迈出了又一个里程碑。一份新闻稿宣布于 2014 年 4 月 10 日发布新的 NASA 软件目录,该目录以开源形式提供。这个新目录既包括以前可用的旧软件,也包括首次发布的新软件。可用的项目类型包括项目管理系统、设计工具、数据处理和图像处理。在本文中,我将快速浏览一些可用的酷代码。
主要网站是 http://technology.nasa.gov。这个主页是访问所有可转移给公众的技术的中心门户。这包括专利和软件。

图 1. 主要技术转移站点是一个门户,提供对 NASA 所提供一切的访问。
作为快速入门,页面中央下部区域有一个主题云,可以为您搜索几个不同的关键词。不幸的是,这只是所有产品的目录,在详细信息方面还不够完整。因此,例如,如果您点击“Command Control”(指挥控制),您将被带到一个结果页面,其中包含诸如“Rendezvous and Proximity Operations Program (RPOP)”(交会和近距离操作程序 (RPOP))之类的项目。如果您点击该项目,您将被带到一个基本上是空白的详细信息页面。假设这将随着时间的推移在未来被填写。但是,它确实为您提供了一个可用项目列表,这已经成功了一半。

图 2. 搜索结果页面将为您提供来自 NASA 的可用软件和专利列表。
停留在结果列表页面上,您应该注意到每行右侧都有一个 NASA 中心的名称。这是给定专利或软件条目的实际来源。一旦您找到感兴趣的内容,您可以访问各个中心的网站以查找有关它的更多详细信息。在 NASA 技术站点主页的右下角部分,您可以找到指向每个中心技术部分的直接链接。每个中心提供的信息量各不相同,但您应该能够找到更多详细信息。一些站点有直接下载链接,因此您可以获取您感兴趣的软件。在其他情况下,站点仅提供您需要联系以获取问题软件副本的人员的联系方式。主技术站点的主页上还提供 PDF 目录。在这里,您可以获得一个 172 页的目录,其中包含所有可用的软件,分为 15 个类别,供离线访问。
一个很快就会显现的问题是,并非所有人都可以访问所有可用的软件。一些发布的软件仅对美国居民可用,而另一些软件甚至更受限制,仅限于美国政府的某些部门。那么,对于国际社会来说,是否有更简单的选择呢?在首页上,左下角有一组其他有用的 NASA 链接。标有“NASA Open Source Software”(NASA 开源软件)(http://code.nasa.gov)的链接将带您到一个姊妹站点,该站点提供对更集中的开源软件存储库的访问。它以 WordPress 博客中的可用代码列表形式布局,看起来正在定期更新。因此,值得关注该站点以获取未来的版本。

图 3. 以开源形式发布的软件可在这个博客上获取。
到目前为止,我还没有看过 NASA 技术交流中心提供的软件类型,那里有相当广泛的集合可供使用。我在这里看到的第一个是 Mission Control Technologies (MCT)(任务控制技术 (MCT))。这个软件包托管在 GitHub 上,提供了一个实时监控和可视化平台,该平台是在 Ames Research Center(艾姆斯研究中心)开发的,用于航天飞行任务操作。它基于可配置的组件,因此您可以使用它来构建自己的应用程序来监控几乎任何东西。

图 4. 使用 MCT,您可以构建自己的应用程序来监控几乎任何东西。
如果您想构建自己的航天器进行监控,您将需要某种方法来控制其飞行。输入 Core Flight Executive (cFE)(核心飞行执行程序 (cFE)),这是一个便携式、平台独立的嵌入式系统框架,由 Goddard Space Flight Center(戈达德太空飞行中心)开发。它用于卫星数据系统和仪器的飞行软件,但您也可以将其用于其他嵌入式系统。它由子系统构建而成,包括执行服务、时间服务、事件服务、表格服务和软件总线。Python 程序员可以下载 SunPy,这是一个用于处理您在进行太阳科学时遇到的几个任务的库。

图 5. 您可以使用 SunPy 进行各种太阳科学研究。
对于许多科学应用,您需要使用机器集群。NASA 也不例外。为了处理复杂性,有几个软件包可用。为了处理文件,有 Multi-Thread Multi-Node Utilities (Mutil)(多线程多节点实用程序 (Mutil))。Mutil 提供了 mcp 和 msum,它们允许并行访问文件以在集群中移动。如果您有一个可通过 SSH 访问的机器集群,您可以将它们与 Mesh (Middleware Using Existing SSH Hosts)(Mesh(使用现有 SSH 主机的中间件))一起使用。Mesh 提供了一个轻量级网格中间件,可以将您的集群主机分组到执行单元中。然后您可以发出一个命令,Mesh 将处理转到您组中的可用主机之一并运行此命令。如果您需要交互式会话,则可以使用 Ballast (Balancing Load Access Systems)(Ballast(负载均衡访问系统))。使用 Ballast,当您尝试 SSH 进入您的集群时,您实际上最终会被自动分流到集群内的可用主机上。
我想看的最后一个软件包是任务分析。有 General Mission Analysis Tool (GMAT)(通用任务分析工具 (GMAT)),它旨在帮助您规划下一次火星之旅。您可以使用 GMAT 来建模、优化和估计航天器轨迹。您可以创建旅程所需的物理资源,例如航天器、推进器、储罐、地面站等等,并模拟旅程的展开方式。还有分析模型资源,包括微分校正器、传播器和优化器,以定义模型的细节。《用户指南》描述了众多可用选项。还有一系列教程,包括模拟轨道、进行简单的轨道转移,甚至使用多重拍摄规划最佳月球飞越,这些教程将更详细地引导您了解如何使用 GMAT。

图 6. GMAT 可以帮助您在舒适的客厅里规划您的下一次深空任务。
现在您已经看过 NASA 新发布的一些代码,希望您已经足够感兴趣去探索那里提供的 1,000 多个其他代码片段。您永远不知道会发现什么。如果您发现任何真正有趣的东西,请与我们其他人分享!