火星任务

火星任务

作者:雪候鸟
email:xu_xinyu@tom.com

    今年,人类的火星探测器登上了火星,它给人类发回了大量的关于火星高清晰度的照片和其他的大量信息。使人类对火星的认识有了质的飞跃。在这个火星任务中Java发挥了巨大的作用。关于Java的这个应用被James Gosling称为“有史以来最酷的Java应用”。

    本人认为作为中国的程序员也应该关注一下一些这样的应用,但是很难找到关于这方面的资料,于是本人翻译了这样一篇文章,让大家也可以了解一下这方面的信息。本人的英语也不是很好,翻译的时候没有完全直译,很多都是根据本人对原文的理解写的,可能表达的也不是很清楚。英文好的朋友可以参看原文http://www.sun.com/aboutsun/media/features/mars.html。不知道有没有对这个问题感兴趣的朋友,实际上我很希望我们也能够为我国的太空探索事业做出自己的贡献。

    本篇文章是一个对James Gosling的访谈。在这个访谈中,James Gosling介绍了java在火星探测器任务中的作用和角色。

问:在火星漫步者项目中,java到底扮演了什么样的角色?

答:目前在这个项目中,NASA的科学家使用java的地方全部在地面一端。他们创造的这个协作的指挥与控制系统叫做 Maestro。这个系统将下面的一些工作组合到一起,包括:数据的可视化,协作,命令和控制。它使科学家们可以查看图片,创建地形的3D复原图形,使不同的工作者可以研究当地的景观和地形学,浏览图片数据库,参与到他们想要参加的工作中。而且,可以通过一个远程的,分布式的,协作的方式来完成这些工作。这样就可以使全世界的科学家参与进来,他们不只在寻找数据,同时可以协作决定下一步任务进行的方式。JPL 的人们所做的最好的一件事就是:他们开发了一版普通人可以使用的应用程序,叫做Maestro。

问:Java是如何帮助科学家们在地面上控制火星探测器的?

答:有一个Java的Api叫做Java Advanced Imaging,用于捕获全景照相机的照片,可以产生拥有极为详细的细节的图片。这些全景照片由火星探测器上的两个不同的照相机拍摄的照片组合而成。所以,通过两个镜头就得到了两个图片,就像你有两个眼球一样。这样你的大脑就可以产生立体的效果,知道看到的东西离你有多远。因为他们可以得到这些立体的图像,这样就可以进行一个叫做立体图像关联的处理过程。这样就可以计算出图像上的每一个象素,知道图像上的东西的实际位置和距离。

通过这些信息,JPL的科学家可以计算出每块石头相距多远,每个图片的元素,在这些图片上的百万象素。你可以得到在每一点上的深度。这些就是立体照相机所带给你的。当你得到了深度的信息,你就可以实际的创建一个3D模型,地形的实际模型。你就可以将图片映射到模型上。这样你所得到的就是一个色彩丰富的,三维模型的世界。

问:他们用Java来实际指挥火星探测器吗?

答:对于命令和控制系统,很大一部分都是这样的大型的Java应用程序。有很多部分包括在这个系统中。火星探测器上也有一个计算机,目前在那个计算机中还没有Java。但是在地面一端,有很大一部分的工作都由Java来做,组成了整个命令与控制链来控制探测器。并不是每一个子系统都基于Java代码。但是大部分是Java的,特别是数据的可视化,前端用户界面和很大一部分数据库工作。

问:公共版本的Maestro应用程序是如何工作的?

答:假如你来到Maestro的网站(http://mars.telascience.org),你会发现两个类别的下载。一个就是Maestro应用程序本身,另外一部分是从火星传来的数据。针对不同的平台有不同的版本。有Solaris版,Linux版,也有针对Windows的版本等等。这样就是展示Java的可移植性是多么的强大,跨平台是如何实现的。实际上所有版本的程序都是一样的,只不过打包不同而已。

所以,当你下载了第一部分的数据。就有一些脚本运行来让你可以看到这些数据。使用已经创建好的3D模型,使用你的鼠标,你可以实际的操作这个3D模型,你可以得到一个景象,好像你远离登陆地点,却可以在探测器的后面看着它。你可以实际的在登陆点的周围转一转。你可以看见岩石。你可以看见一个气囊并没有完全放完气。所有的这些3D的,可以控制其运动的可视化的效果都是使用标准的Java API来完成的,例如Java 3-D API,Java Advanced Imaging API,Java networking APIs 和用户界面的APIs。

通过使用他们分发的Maestro程序,你不只可以看见地形的3D模型,你也可以看见一个探测器的3D模型。你可以在这个虚拟的地形上驾驶探测器。它使这个“视频游戏”更加真实。除了你在一个地形的模型上驾驶火星探测器之外,都是真实的。那是真实的火星数据来构造这个地形。它并不像打“沙丘”游戏,在那里你完全处于一个虚拟的迷宫中。

问:在这个项目中,它是如何和JPL的科学家一起工作的呢?

答:我曾经花了很多时间和JPL的人们在一起,不仅和他们一些人进行交流,而且我还是他们的顾问团的一员。由于在这里集中了非常多的天才,每平方米的IQ值也是非常高的,这里是一个令人惊异的地方。他们在这里做的事情被一般人看来是科学幻想。很多人都读到过在火星上驾驶火星车的科幻故事。而这里的人在实现这样一个梦想。他们知道如何在星际间飞行。我曾经和那些做星际旅行导航的人聊过,他们都是一些非常怪异的人。你实际上必须注意相对论,时间不是常量的事实 - 你去越快,事情越慢。他们在相对论实际上重要的一个世界起作用(不明白)。

JPL是一个可以使你的思想部分的扩展的地方,他们因为他们所做的事情而充满能量。他们是一群生活在梦中的人。他们所做的事情是这样的超前,如此的不可思议。他们所做的事情是非常英勇的,高尚的,冒险的和令人兴奋的。他们是美国政府唯一的一部分能让人激动的团体。 NASA拥有了这样一个顶级的公共程序,因为他们知道他们所爱的事情,而且知道这是一个巨大的公共服务。他们和学校有很多合作。事实上,他们将这个精简版的Maestro公开是一个令人惊叹的公开范围扩展(不明白)。

问:对于这样的应用,Java是凭借什么来吸引他们的?

答:答案是不只有一个原因,而是有很多的原因。一个非常重要的方面就是Java可以运行在很多不同的平台上。如果你在JPL参观过,你会发现,他们有Solaris,Linux,Windows,Apple,他们在所有的这些平台上工作。假如你看一看Sun提供的标准的API库,你会发现有大量的工具可供使用。例如3D模型的APIs,高级图形APIs,还有所有的用户界面API和网络API。JPL的人们使用了所有的这些工具。他们能调控所有这些标准工具。

另外,有很多可以考量的关于Java的经验,比如说开发效率。例如:你可以比较使用Java,C/C++开发软件所使用的时间的对比,事实上,所有的测试方法都显示使用Java的效率是C/C++的大约两倍。所以如果一个团队要用10个月来用C++做一些事情的话,那么使用Java则只需要5个月。对于JPL这样一个设备齐全的团体来说,做任何的事情也需要仔细的计划和预算,意味着你可以将工作压缩到5个月,或者还是10个月,但是可以只使用一半的人来做工作。

关于Java还有其他一些方面,主要是可以创建可靠的应用。创建可靠的系统变的更加容易。在Java中有很大一部分是关于安全的问题。建造更安全的系统通常是很容易的,被毁坏的情况也很少发生,所以你不必担心你的计算机会被炸成粉碎。所以当你看到某些东西例如他们的大型数据库时,你会发现完整性是他们需要仔细考虑的问题-安全是非常重要的。所以这些就是所有的关于这个问题的答案。无论什么时候,你和Java开发者谈论时,关于“为什么使用Java?”的问题,你都会得到不同的答案。尽管这是一个常问的问题。

问:这是第一次把Java用在这样一种类型的应用中吗-用在宇宙太空中?

答:实际上,我并不这样认为。我曾经谈到过人们在卫星的地面控制站中使用Java,还有控制巨大的天文望远镜的控制系统。人们做了很多像这样的关于太空的应用。关于这个JPL的项目之所以被人们津津乐道,是由于听起来非常酷。

注:文中提到的Maestro应用可以下载,本人已经下载了一个看了看。简单的使用了一下,感觉还是很有意思的。感兴趣的朋友可以下载来玩一玩。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值