加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁德站长网 (https://www.0593zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 动态 > 正文

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

发布时间:2022-04-11 14:11:09 所属栏目:动态 来源:互联网
导读:个限制条件:视野范围和观测时间。 视野范围指空间站飞到我们视野可见的范围内,也就是恰好过境这段时间; 观测时间指我们能观测到空间站的时机。空间站自身不会发光,只有在每天日落后两小时、或日出前两小时以内,空间站反射的太阳光最亮,才最适合拍摄
  个限制条件:视野范围和观测时间。
 
  视野范围指空间站飞到我们视野可见的范围内,也就是恰好“过境”这段时间;
 
  观测时间指我们能观测到空间站的时机。空间站自身不会发光,只有在每天日落后两小时、或日出前两小时以内,空间站反射的太阳光最亮,才最适合拍摄。
 
  只有这两个条件同时满足,我们才有机会在地面观测并拍摄到空间站,但效果也还受天气等因素影响(如图中就是遇到了多云天气):
 
  爆肝17天 600行代码拍到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月27日,由于寻星镜视场只有3°左右,过小的视野导致初步捕获失败,再次没能进入自动跟踪流程。
 
  此时距离中国空间站下次可见过境还有很久。因此,在修复操作问题后(将寻星镜视场增大到15°),刘博洋决定,先用即将迎来几次绝佳过境的国际空间站“练练手”。
 
  于是,在将自动跟踪程序中的“抓捕”改为手动触发后,刘博洋成功在4月2日验证了程序功能。
 
  虽然还是有不完美的地方,例如软件崩溃导致寻星镜和主镜的位置校准数据丢失,针对这个问题刘博洋又增加了校准数据记录功能。
 
  这个时候,代码已经从最初的400多行变成了600行。
 
  终于,4月3日晚上,在紧急修复bug后,刘博洋成功抓拍到了国际空间站。
 
  具体来说,望远镜对空间站的抓捕分为x和y两个轴,在按下catch后,y轴很快就稳稳跟上了目标,x轴则略慢了10秒。
 
  在30秒左右时,两个轴都保持在了一个稳定的误差范围内(四个像素左右),这种高精度跟踪持续了一共120秒,完整记录了国际空间站从接近到远离的全流程:

  最初得到的原始画面大约是100多像素,最终,在经过多帧叠加的超采样处理后,图片的像素提高到了200多像素。
 
  最后经过处理,成功输出了一系列300 x 300像素的图像(合成GIF图):
 
  而这,是刘博洋开始做这一项目的第17天。
 
  之后还要发射小火箭
 
  在谈到整个项目中最难的一个阶段时,刘博洋印象最深刻的,就是如何让望远镜被Python代码调用:
 
  对于我这样一个编程很差的人,开发最初完全就是一个黑箱。
 
  刘博洋本科、博士分别就读于北京大学、西澳大学,都是天体物理学专业。
 
  这个专业要求掌握基本的编程技能,但是刘博洋大学时的相关课程,比如计算机概论、数据结构都是低分飘过或者缓考的。
 
  到了博士阶段,多了大量需要用脚本完成的数据处理工作,他才开始深入地学习编程语言。
 
  这次之所以选择自编代码操控望远镜,除了没有找到现成可用的软件之外,也是想要继续锻炼自己的编程能力。
 
  那么这套代码会开源吗?
 
  在我们这样问时,刘博洋表示:
 
  至少要在自己能调试的范围,将代码优化到一个自己满意的程度,才会考虑下一步。
 
  他目前最近期的一个目标,是两周后的中国空间站的再一次过境。
 
  在成功拿国际空间站”练了手“后,刘博洋充满了信心,还在考虑是否要在接下来的捕捉中适当缩小视场,进而提高拍摄的精度。
 
  中国空间站的拍摄如果顺利,将在4月21号之前结束,之后,他就要立刻赶往青海,开展新项目:发射一枚装着自己相机的小火箭。
 
  再远一些,刘博洋还提到了今年下半年可能会有的神舟系列的火箭、以及实验舱的发射,他到时候会拿着自己的这套跟踪空间站的程序,再去跟拍大火箭。
 
  如此硬核的“备战”计划,妥妥一位狂热的航天爱好者无疑了。
 
  刘博洋最后这样说:
 
  天文的兴趣从小就有,也因此本硕博都读的天体物理学。
 
  不过随着为国内的航天任务越来越多,我能接触到相关活动的机会也就越来越多,于是航天方面的兴趣也就逐渐发展了起来,到现在已经发展成主要的业余爱好了。

(编辑:宁德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!