开源软件驱动 NASA 火星 VR 项目

还没有读者喜欢这篇文章。
Girl reaching out to the stars

Opensource.com

Parker AbercrombieNASA 喷气推进实验室的软件工程师,他在那里构建软件以支持火星科学任务。他对地理信息系统 (GIS) 特别感兴趣,并曾与 NASA 和美国能源部的团队合作开发地理可视化和数据管理系统。

Parker 拥有波士顿大学地理学硕士学位和加州大学圣巴巴拉分校创意研究理学学士学位,主修计算机科学(他发誓这比听起来更技术性)。在业余时间,Parker 喜欢烤面包和演奏爱尔兰木笛。

在加利福尼亚州帕萨迪纳举行的 SCaLE 14x 大会上,他正在演讲关于 OnSight,这是一款混合了开源和专有软件的程序,可让用户在虚拟现实中体验火星。我们与他坐下来进行了交谈,提前了解了这次演讲,并更多地了解了这个项目。

什么是 OnSight?

OnSight 允许科学家和工程师使用混合现实技术在虚拟火星上工作。用户戴上 Microsoft HoloLens 头显,头显上运行的 OnSight 软件会联系我们的火星地形服务器并下载最新的 3D 地形。科学家拥有火星的第一人称视角,就好像他们站在好奇号探测器旁边一样。这种视角让科学家和工程师对探测器周围火星地形的比例和性质有了更好的理解。真正强大之处在于,您在 OnSight 中看到的一切都以 1:1 的比例渲染——与您真的在那里时的大小相同。您无需在全景照片中纠结于岩石的大小——您只需查看它并使用我们一生都在使用的空间技能即可。我们还可以检测到用户的桌子和电脑的位置,并将它们从虚拟世界中移除,这让他们可以在探索火星的同时继续使用桌面上的常用工具。

为了实现这种沉浸式体验,OnSight 团队需要创建火星的 3D 重建模型,并随着探测器的行驶和新图像传回地球,每天生成新的场景。该团队开发了一个定制的图像处理管道,可以从好奇号探测器传回的立体图像生成 3D 场景。我们还创建了一个自动构建系统,以便在新图像可用时生成新的重建模型,动态分配云资源以处理所需的工作。一旦新图像下行链路到地球,云机器就会启动并立即投入运行,将新数据处理成 3D 场景。下次我们的用户启动 OnSight 时,他们将看到来自火星的最新信息。

这个项目有多大?它处理多少数据?

当好奇号探测器下行链路新数据时,OnSight 地形构建系统会自动构建新的火星场景。这种情况大约每天发生一次。输入数据是一组来自探测器的立体图像,我们的图像处理管道会将这些图像处理成带纹理的 3D 网格。该网格可以加载到我们在 HoloLens 上的应用程序中。

源图像的数量因地点而异。如果探测器在一个区域探索了一段时间,我们可能有数千张图像。如果这是一个探测器刚到的新地点,我们可能只有少数几张照片。典型的场景大约有 1,000 张图像,或大约 5GB 的数据。我们已经沿着好奇号的路径构建了数百个这样的场景。

正在使用哪些开源软件来处理数据?

我们使用了大量的开源软件!我们使用开源工具 MeshLabBlender 来查看和处理我们的一些 3D 模型。就此而言,我们的大部分地形管道都是用 .NET 实现的。微软在 2014 年将 .NET Core 库开源。

我们还在云构建系统中使用了一些开源工具和框架。我们使用 Jenkins 持续集成系统,既用于编译代码进行持续集成,也用于运行我们的图像处理作业。我们将关于源图像和已完成构建的元数据存储在 MySQL 数据库中,我们通过使用 LoopBack 框架构建的 REST 接口访问该数据库。我们还有一个使用 AngularJSBootstrap 构建的 Web 仪表板。我们还使用 Ansible 来帮助我们配置云机器。

为什么您选择为这样一个具有挑战性的项目使用开源软件?

在解决技术问题时,我首先会问“什么是最适合这项工作的工具?” 有很多很棒的开源软件可用,而且很多时候,最合适的工具就是开源的。

在这个项目中,您面临的最大挑战是什么?

哇,从哪里开始说起呢?这个项目令人兴奋的事情之一是它跨越了许多不同类型的技术,从在 HoloLens 上运行的图形和 UI 代码,到执行地形重建的图像处理代码,当然还有驱动整个过程的后端云基础设施。我可以花几个小时谈论在这些层中面临的挑战。

创建既美观又科学准确的地形重建模型一直是一个挑战,尤其是在尝试找到完全自动化的方法来做到这一点,而无需人工干预时。如果您正在制作游戏,您可以让一个艺术家团队创建一个令人惊叹的环境,或者您甚至可以程序化地生成环境。但我们被限制使用真实数据并尽可能少地对其进行操作。

作为一名软件工程师,我脑海中浮现的挑战是技术性的——当时完全令人困惑的错误。在云中运行地形构建的挑战之一是调试代码可能很困难。我们遇到过许多情况,其中代码在云机器上运行时的行为与在本地开发环境中运行时的行为不同。例如,表面重建过程的某些部分利用 GPU 计算来加速处理,并且让我们的软件在云实例上的 GPU 上工作非常棘手。有一次,我们试图使用支持 GPU 的云计算实例,但由于某种原因,在我们使用远程桌面连接到机器之前,GPU 在我们的云机器上无法识别。因此,我们会尝试在云上运行构建,它会失败,我们会使用远程桌面连接以查看哪里出了问题,然后 GPU 就会工作。它会继续工作,直到机器重新启动,然后又神秘地开始失败。那时我们会远程桌面登录以查看哪里出了问题,然后它又开始工作了。那是一个很难追踪的问题。

该项目处于什么阶段?

我们正处于一小群科学家的 Beta 测试阶段。我们将在未来一年内将该系统推广到更多科学家。

标签
Aleksandar Todorović
我是 OCCRP 这个很棒的调查新闻网络的科技部门的一员。我非常热衷于开源软件、人工智能和信息安全。我的开源贡献现在已合并到 reddit、elementary OS 和 Tor Project 等项目中。我正在运营一个个人博客,在那里我分享我的个人故事。

评论已关闭。

© . All rights reserved.