卫星跟踪辅助程序http-predict
novakon2016/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编号和观察者的经纬度,实时计算卫星的轨道。

项目是开源的,源代码在这里:XXXXXXXXXXXXXXXXXX/ctmakro/http-predict

以下为配置方式(假定你熟悉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计算结果吻合。

[修改于 8年1个月前 - 2016/11/15 01:17:00]

来自:计算机科学 / 软件综合
4
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
novakon 作者
8年1个月前 修改于 8年1个月前 IP:广东
827647
我将http-predict映射到了论坛计算工具目录下,可以用XXXXXXXXXXXXXXXXXXXXXXXX/static/tracker/ 访问。

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

要获得当天内的过境预测,可以访问
XXXXXXXXXXXXXXXXXXXXXXXX/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)
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
novakon作者
8年1个月前 修改于 8年1个月前 IP:广东
827672
为了方便自动接收,增加了计算相对速度和多普勒因子的功能。
blob.png
效果:
blob.png

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


attachment icon http-predict.zip 5.53MB ZIP 80次下载
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
novakon
学者 机友 笔友
文章
1256
回复
8386
学术分
16
2008/03/29注册,2年10个月前活动

已走,勿送

主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}