我,爆肝 17 天用 600 行代码拍到 400 公里之外的国际空间站

如何在 400 公里开外,拍摄这样一张空间站照片?

作为太空中最大人造物体,国际空间站一直是无数天文爱好者心中梦寐以求的拍摄对象。

而大多数人采用的方法,是根据自己所在的经纬度,算好空间站过境的时间(几秒到几分钟不等),然后配合手机或微单进行拍摄,然后啪 —— 得到这样一张小光点:

稍微进阶一点的,则会采用“凌日凌月”拍摄法,即在空间站飞过太阳或者月亮之前,以这两个天体为背景源,确定一个范围更小的区域。

然后等在中心线上,把持着几公斤到几十公斤重的大口径、长焦距望远镜进行长时间的稳定跟踪,直到空间站过月或过日的 1 秒之内,按下快门拍摄。

这种拍摄效果会更加清晰,但致命的问题仍然存在:

空间站平均每 90 分钟就能绕地球一圈。用知名的星空观测模拟工具 Stellarium 对比一下,相比空间站,金星和火星简直如同“静物”(实时模拟,没有加速):

简言之,就是空间站跑得太快了。

因此,不仅 1 秒内拍摄的帧数有限(无法用多帧叠加克服大气抖动)、只能拍到轮廓剪影,甚至很可能因为计算错误而错过拍摄的机会。

要是还想拍出更高精度的照片,不仅得有非比寻常的耐心,还要有深厚老练的手动操控技术。

例如一旦遇到大风,拍出来的效果就容易“糊成一团”:

▲ 图源王卓骁,已授权

于是这时,有人就灵光一动:

没有麒麟臂,用代码让望远镜自己动起来不就好了?

说干就干,这位“业余程序员”当即爆肝 17 天,搞出了一套自动跟踪系统。

在这套自动跟踪系统的加持下,望远镜不再是只能在特定几秒钟拍摄几张静态图像,而是持续不断地跟了空间站 2 分钟

最终,多张图像叠加和后期处理,便合成了一张高精度的立体 GIF 图像:

(也就是我们开头的那张图)

就是这么一张图像,让网友发出了“直接开启人造天体跟踪摄影的时代”的感叹。

于是,我们找到这位开发者本人,北大天文校友、天体物理博士刘博洋聊了聊。

拍摄高精度空间站,到底难在哪?

首先,需要简单了解一下拍摄空间站的“时机”。

虽然空间站移动速度极快,平均每 90 分钟就能绕地球一圈,而且高度平均距离地球也就 400 公里左右,属于肉眼可见的范围,但我们并不能随时观测到它。

主要有两个限制条件:视野范围和观测时间。

视野范围指空间站飞到我们视野可见的范围内,也就是恰好“过境”这段时间;

观测时间指我们能观测到空间站的时机。空间站自身不会发光,只有在每天日落后两小时、或日出前两小时以内,空间站反射的太阳光最亮,才最适合拍摄。

只有这两个条件同时满足,我们才有机会在地面观测并拍摄到空间站,但效果也还受天气等因素影响(如图中就是遇到了多云天气):

▲ 图源朱一静 & 徐成城,已授权

然而,目前已有的几种常见天体拍摄方法,对于拍摄更高精度的空间站照片,其实都不适合。

第一种方法,是直接通过“手摇”望远镜拍摄,也就是推着望远镜跟踪天体。

这种方法有一个缺陷,没办法拍摄非常高清的空间站。由于拍摄时必须靠人工跟踪,因此不能用长焦镜头直接找,否则就像是用显微镜去捕捉一只高速移动的蚂蚁,空间站一不留神就消失在镜头外了。

第二种方法,是像“守株待兔”一样,架好各种高清晰度的镜头和设备,在原地等待空间站“路过”。

这种方法不需要移动镜头,而是反过来等空间站自己“经过”。但它又面临一些新的问题,例如空间站“路过”的时间很短,有时候往往只有几秒钟的时间,很可能抓拍不到;即使抓拍到的镜头,由于无法调整角度等原因,效果也无法保证。

所以,为什么不用望远镜自带的追踪功能拍摄?

这个功能通常只适用于用于追踪日月、行星、恒星等天体由于地球自转而产生的东升西落,毕竟它们移动的速度不快,基本与地球自转同步。但对于像空间站这种高速移动的天体,望远镜自己就追不上了。

因此,最终还是得靠程序辅助,来实现高精度空间站的跟踪拍摄。

第三种方法,是利用轨道根数(即轨道参数)跟踪,也就是利用在各种天文网站上(如 Heavens-Above 等)找到的天体信息,来调整望远镜的跟踪路径,并进行手动修正:

目前,大部分天文爱好者都是通过这种方法实现跟踪 + 微调,网上也已经有一些相对成熟的程序,例如这是用电动经纬仪根据轨道参数跟踪空间站的效果:

▲ 图源王卓骁,已授权

BUT,你永远不知道这些天文网站更新到底及不及时。有时候空间站临时调整了轨道、但网站没有更新的话,你的程序也就失效了。

利用光学识别,误差控制在 4 像素以内

上述的所有问题,作为老天文迷的刘博洋不可能不懂。

他一开始的想法,是通过现有的一些软件寻找镜头中的“光点”,基于光学识别方法对目标实施识别和跟踪。

然而他在查找合适的程序时却发现,这些程序不是没维护(连 Windows 版都太古早没法用)、就是更新不及时且系统复杂,或者干脆就是闭源收费。

所以,刘博洋最终决定自己上手,写一个光学识别的自动跟踪脚本,手动找到空间站后基于 PID 控制跟踪。

他的计划一共分为两步:

第一步,编写程序实现望远镜自动识别并跟踪空间站,耗时 5 天完成

值得一提的是,光学识别并不是刘博洋的“第一手选择”。

他确实想过用参数 + 手动微调的方式进行跟踪,包括用摇杆无级控制赤道仪转速,以及用轨道根数进行粗跟、结合游戏手柄无级微调等,但试拍效果并不理想(微调时手不够稳)。

于是,他基于 PID 控制原理,编写了一种光学跟踪的方法。这是一种非常经典的控制算法,PID 分别指比例、积分和微分单元,像让 2 轮机器小车保持平衡,用的就是这种算法。

刘博洋之前并没有学过这一知识,但是为了建立一个稳定的自动控制系统,他自然地引入了比例单元(P)和积分单元(I),以使系统的误差减少。

刘博洋的望远镜分为视野较大的寻星镜和视野较小的主镜两部分。这套算法的基本目标,就是根据当前空间站在寻星镜中的位置,计算出它偏离主镜视场的幅度,从而调整望远镜跟踪速度,以改正存在的偏离,使空间站落到主镜视场中。

利用这个程序,就能让寻星镜快速跟随移动的空间站“光源”,使得空间站总是保持在视野中央。刘博洋试着用激光笔在自己家墙上造了一个匀速移动的亮点,模拟空间站的运动,效果还不错:

程序本身,基于一个叫做 ASCOM 的平台开发。

它能将天文设备的所有配置,比如控制望远镜的对焦器、滤光片的转动、相机的开合都集成在一个单独的软件上,是在天文领域运用非常广泛的软件接口标准:

硬件准备上,除了笔记本电脑之外,还包括:

11 英寸口径,焦比 f / 10,折反射式的星特朗 EdgeHD 望远镜,配套有 CGEM 赤道仪

佳能 EOS R5 相机

QHY5III462c 相机,作为导星相机

图马思特 T16000M 游戏手柄

其中,望远镜大约 4 万元,佳能 EOS R5 相机租借了两周花费 2200 元(市价 2.5 万元),462c 相机不到 1000 元,手柄则是和朋友以物换物拿到的(市价 500 多元)。

整个成本算下来不到 4.5 万元,据刘博洋表示,对精度要求没那么高的话,整套不到 1 万元就能搞定。

接下来进入第二步,现场实拍并成功用设备拍摄到高精度的空间站照片

但没想到的是,实际拍摄反而要比想象中更难,期间刘博洋“一直在反复试错修 bug”。

他一开始的目标,是捕捉中国空间站,然而接连两次出 bug,导致错过了两次观测的最佳时机。

3 月 23 日,由于未能及时对焦,自动光学跟踪没能起到作用;3 月 27 日,由于寻星镜视场只有 3° 左右,过小的视野导致初步捕获失败,再次没能进入自动跟踪流程。

此时距离中国空间站下次可见过境还有很久。因此,在修复操作问题后(将寻星镜视场增大到 15°),刘博洋决定,先用即将迎来几次绝佳过境的国际空间站“练练手”。

于是,在将自动跟踪程序中的“抓捕”改为手动触发后,刘博洋成功在 4 月 2 日抓拍到了国际空间站。

虽然还是有不完美的地方,例如软件崩溃导致寻星镜和主镜的位置校准数据丢失,针对这个问题刘博洋又增加了校准数据记录功能。

这个时候,代码已经从最初的 400 多行变成了 600 行。

终于,4 月 3 日晚上,在紧急修复 bug 后,刘博洋成功抓拍到了国际空间站。

具体来说,望远镜对空间站的抓捕分为 x 和 y 两个轴,在按下 catch 后,y 轴很快就稳稳跟上了目标,x 轴则略慢了 10 秒。

在 30 秒左右时,两个轴都保持在了一个稳定的误差范围内(四个像素左右),这种高精度跟踪持续了一共 120 秒,完整记录了国际空间站从接近到远离的全流程:

最初得到的原始画面大约是 100 多像素,最终,在经过多帧叠加的超采样处理后,图片的像素提高到了 200 多像素。

最后经过处理,成功输出了一系列 300×300 像素的图像(合成 GIF 图):

而这,是刘博洋开始做这一项目的第 17 天

之后还要发射小火箭

在谈到整个项目中最难的一个阶段时,刘博洋印象最深刻的,就是如何让望远镜被 Python 代码调用:

对于我这样一个编程很差的人,开发最初完全就是一个黑箱。

刘博洋本科、博士分别就读于北京大学、西澳大学,都是天体物理学专业。

这个专业要求掌握基本的编程技能,但是刘博洋大学时的相关课程,比如计算机概论、数据结构都是低分飘过或者缓考的。

到了博士阶段,多了大量需要用脚本完成的数据处理工作,他才开始深入地学习编程语言。

这次之所以选择自编代码操控望远镜,除了没有找到现成可用的软件之外,也是想要继续锻炼自己的编程能力。

那么这套代码会开源吗?在我们这样问时,刘博洋表示:

至少要在自己能调试的范围,将代码优化到一个自己满意的程度,才会考虑下一步。

他目前最近期的一个目标,是两周后的中国空间站的再一次过境。

在成功拿国际空间站”练了手“后,刘博洋充满了信心,还在考虑是否要在接下来的捕捉中适当缩小视场,进而提高拍摄的精度。

中国空间站的拍摄如果顺利,将在 4 月 21 号之前结束,之后,他就要立刻赶往青海,开展新项目:发射一枚装着自己相机的小火箭

再远一些,刘博洋还提到了今年下半年可能会有的神舟系列的火箭、以及实验舱的发射,他到时候会拿着自己的这套跟踪空间站的程序,再去跟拍大火箭。

如此硬核的“备战”计划,妥妥一位狂热的航天爱好者无疑了。

刘博洋最后这样说:

天文的兴趣从小就有,也因此本硕博都读的天体物理学。

不过随着为国内的航天任务越来越多,我能接触到相关活动的机会也就越来越多,于是航天方面的兴趣也就逐渐发展了起来,到现在已经发展成主要的业余爱好了。

参考链接:

[1]https://weibo.com/1144755982/LmV8Cp72V

[2]https://zhuanlan.zhihu.com/p/493080686

[3]https://www.heavens-above.com/orbit.aspx?satid=25544

[4]https://mp.weixin.qq.com/s/gNueq8lDQz_86Ifuw8n6Pg#rd

广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,IT之家所有文章均包含本声明。

文章价值:
人打分
有价值还可以无价值
置顶评论
    热门评论
      文章发布时间太久,仅显示热门评论
      全部评论
      请登录后查看评论
        取消发送
        软媒旗下人气应用

        如点击保存海报无效,请长按图片进行保存分享