文号
827646
阅读
10730
回复
4
收藏
6
卫星跟踪辅助程序http-predict
2016/11/14
IP:广东

这两天看到各地朋友都为追踪KS-1Q信号付出了辛勤劳动,其中一直提到一款软件叫Orbitron.

由于卫星距地面高度只有几百公里,环绕速度又很快,因此对于每一处测控站,每天只有很短的几段时间能收到下行信号。Orbitron软件可以根据卫星轨道的TLE描述文件,计算卫星的飞行轨迹,再根据观测位置经纬度,计算出卫星过境的时间以及过境时的方向及仰角,为地面人员接收下行信号提供了有力保障。

Orbitron软件自带了联网同步TLE星历功能,并可以通过第三方软件驱动转台,令天线始终指向卫星。使用Orbitron软件,可以实现对单颗卫星的持续跟踪。

网上TLE数据的主要来源是XXXXXXXXXXXXXXX提供的API(必须登陆后使用)。Orbitron软件也支持从XXXXXXXXXXXXXXX更新数据,在Orbitron的设置界面找到space-track按钮,提供登录名和密码即可。如果没有账号可以去space-track网站直接注册一个,可以大大简化数据获取流程。

在使用过程中我也发现一些缺点,首先是没有命令行界面,其次是只能输出纯文本格式(而且缺少分段符)的预测报告,不方便其他程序利用。软件支持用好几种协议对外部设备进行控制,但是软件本身无法被其他软件控制。

除了Orbitron之外我还测试了GPredict。GPredict可以看做是升级版的Orbitron,通过hamlib实现转台控制,可以同时控制多个转台(包括通过TCP遥控),但是每个转台只能对准一颗星,需要手动切换。

我并不清楚科创航天在卫星项目上的目标是什么,只是有一次在宣传资料上看到说要通过多星系统实现全天候覆盖。这就提出了几个要求:

  1. 一个转台应可以跟踪多颗星,哪颗星过顶就自动对准哪颗,并切换到相应频率
  2. 整个追踪系统能够被其他程序控制

但是,由于GPredict和Orbitron都不支持被第三方程序控制(除非通过hack的方式),而且也没有直观的方法可以从软件中取出数据(除了手动保存文件,再读取),所以上面这些功能不太好实现。如果要实现这些功能,得修改GPredict软件,然后再重新编译。如果可以直接获得每一颗卫星当前的方向和仰角,那么我们就可以自己写一个简单的控制程序,让转台按照我们指定的规则工作。

要怎么根据TLE计算轨道呢? 搜索"Plan13 github"可以搜到一些项目,有一些爱好者将Plan13项目中用Basic写的轨道计算代码移植到了C语言,并编译到Arduino上,以实现轨道的离线计算。而目前能找到的最老的开源的轨道计算程序,叫"Perdict",是C语言实现的。最后,我找到Andrew West的PredictLib项目,他把Perdict移植到了JavaScript。配合这个库,我用Node写了一个HTTP服务器,可以直接根据卫星的NORAD编号和观察者的经纬度,实时计算卫星的轨道。

项目是开源的,源代码在这里:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

以下为配置方式(假定你熟悉nodejs):

  1. npm install 安装dependencies

  2. 运行node spaceTrackLoader.js,批量下载spacetrack数据,并保存成文件。为了成功连接spacetrack,必须在config.js(从config_example.js复制一份)中填写你的spacetrack账号。

  3. 运行node index.js,默认监听本机3000端口,浏览器访问<http://localhost:3000>就可以看到效果。按照提示在地址栏输入查询指令,就可以获得实时的卫星位置,以及一天内的过境预测。这样一来,本机上运行的所有其他程序,都可以通过http协议(所有编程语言都支持)获得任意一颗卫星的实时信息。

经验证,本软件计算结果与Orbitron计算结果吻合。

[ 修改于10年1个月前 - 2016/11/15 01:17:00 ]
novakon作者
10年1个月前修改于 10年1个月前IP:广东
827647
1楼
我将http-predict映射到了论坛计算工具目录下,可以用https://bbs.kechuang.org/static/tracker/ 访问。

例如:要获得KS-1Q(据说是2016-066E,NORAD编号41845)当前从广州观测的方向和仰角,可以访问https://bbs.kechuang.org/static/tracker/now?num=41845&lng=113&lat=23
刷新就可以观察到数据变化。

要获得当天内的过境预测,可以访问
https://bbs.kechuang.org/static/tracker/predict?num=41845&lng=113&lat=23

数据解读:
number : 1
name : OBJECT E
passNo : 4
dateTimeStart : 1479117500193 UNIX时标
peakElevation : 80 过顶仰角(度)
peakAzimuth : 81 过顶方向(度)
riseAzimuth : 163 进入方向(度)
orbitalPhase : 134
latitude : -6 卫星纬度
longitude : 121 卫星经度
peakRange : 983 最近距离(km)
riseRange : 3753
orbitNumber : 63
dateTimeEnd : 1479118522763
decayAzimuth : 350 离开方向(度)
decayRange : 3443
visibility : *
dateTimeStartHuman : 2016-11-14 17:58:20(8)
dateTimeEndHuman : 2016-11-14 18:15:22(8)
引用
评论
novakon作者
10年1个月前修改于 10年1个月前IP:广东
827672
2楼
为了方便自动接收,增加了计算相对速度和多普勒因子的功能。
blob.png
效果:
blob.png

例如,已知发射频率是433MHz,此时应把接收频率设为 433000000Hz * 1.000006296 = 433002726Hz
引用
评论
novakon作者
10年1个月前修改于 10年1个月前IP:广东
827676
3楼
国内网络环境不好,连github慢,在此特别提供打包版http-predict,内含预先下载的轨道数据,解压后双击bat即可运行。请确保计算机上装有Node.js v4或以上版本。


attachment icon http-predict.zip 5.53MB ZIP 86次下载
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的