首页
社区
课程
招聘
[翻译]玩上天了——用GNSS-SDR(全球导航卫星系统软件接收端)追踪火箭
发表于: 2017-5-7 01:18 13337

[翻译]玩上天了——用GNSS-SDR(全球导航卫星系统软件接收端)追踪火箭

2017-5-7 01:18
13337

GNSS-SDR全球导航卫星系统软件接收端)追踪火箭

我一直喜欢无线电。在我还是一个孩子的时候,我遇到过一位无线电业余爱好者,他带着一个让我极其好奇的移动发射架。当时,我也想像他一样,成为一个业余无线电,可是,我很难想象一个安静的、不喜欢与人交往的人会在无线电的一端与另一端相互呼叫长达数小时。我住在一个边远的农村,根本没有什么学习资料,只能收听当地的短波电台一遍又一遍的重播节目。直到有一天,我发现SoftRock基于软件定义的无线电套装。我立刻购买了一份,却发现我的焊接技术达不到要求。为此,我的兴趣随之一起一落直到RTL-SDR的出现。BINGO!作为一个有着坚实编程基础的工程师,通过编写代码来摆弄无线电,实在是很有吸引力。于是,我开始玩GNU Radio(开源无线电),听HAM电台…….无聊。我没有动力,没有目标,只是在玩弄而已。言归正传。

直到我结识了Paul,我是通过线上邮件认识的,他在Twitter上发布寻求基于Intel计算棒的GPS解决方案的消息。认识他后,我了解到他在搞火箭。现在,我有了动力及专研的理由了!我回复Paul后,他寄给我一个包裹,里面是一个RTL-SDR,一个Intel计算棒和天线以及其他几样有趣的玩意儿。我用GNSS-SDRLIBRTKLIB--长期以来我博客上最主要的话题给他做了一个实时演示:

Video


视频地址:http://weibo.com/5663299028/F1V50soC2

尽管这些代码是为了快速演示而编译连接的,但是质量确实达到了无可挑剔的地步(从读者回复的数目可以看出),所以改进的空间极小。我还是继续努力使其更加健壮。最初的构想是:在火箭飞行前以及飞行途中用RTL-SDRIntel计算棒记录射频数据,然后下载射频基带数据到台式机并进一步分析其轨迹。我们可以离线测试该项能力,我用一个脚本来创建唯一的文件名,调用RTL-SDR来记录射频数据。下载好文件后,我用GNSS—SDR,一个基于GNU Radio的开源GNSS接收器。测试几组天线和低噪声放大器组合后,我们到飞行器上实测。Paul为火箭设计了GPS有效负载,就是下面图片展示的。蓝色框中的是6自由度(译者注:根据机械原理,机构具有确定运动时所必须给定的独立运动参数的数目(亦即为了使机构的位置得以确定,必须给定的独立的广义坐标的数目),称为机构自由度(degree of freedom of mechanism),其数目常以F表示。)惯性测量装置,橙色框中的是LNA4ALL低噪声放大器。板子反面橙色的是2S锂离子电池,绿色的是铝盒装着的Noelec 0.5PPM TXCO ,其右侧的蓝色框中的是运行UnbuntuIntel计算棒,黄色不规则形状的是接收GPS信号的天线。

【图】

【图】

这个有效部件放置在火箭圆锥筒里。从下面的图片可以看到,火箭安放在水平放置的发射架上,这样的方向有利于火箭的检查。发射前2分钟,Paul通过WIFI与火箭内部的Intel计算棒建立安全的SSH连接,为触发脚本调用内部L1频率为2.048HzRTL-SDR2分钟已经足够GPS定位到发射架上的火箭。

【图】

烟雾和火焰腾空而起

【图】

201626号进行的飞行测试

现在,数据在手,接下来便是极其有趣的部分了---为何可以通过台架测试而不是飞行数据重建轨迹。发射前,我可以定位到火箭的位置,但是只要火箭发动机一点火,在接下来的30秒内,我都无法获得有效的GPS信号(30秒过后,降落伞打开,GPS天线将会在斜槽上上下摆动,这样射频信号就可以捕获,正如我们在卫星定位中看到的一样。稍作处理,我便得到了火箭飞行的最高点,与Paul 电路板上的商业GPS记录仪的数据完美的吻合。

到这里,你或许会问:既然Paul 有商业GPS记录仪,为什么还要这么麻烦呢?这是因为商业设备必须遵守所谓的COCOM限制,将商业GPS操作限制在马赫数<1,高度<59,000英尺。大多数商业设备甚至比这还更严格电路板上的GPS记录器,像我目前的RF解决方案,发射时完全失效,并且在到到达斜槽之前不能重新获得定位信号。

我陷入了死胡同,于是,在Reddit上,我公开了我的数据,并寻求为什么无法在飞行器上解码GPS的解答。一个叫用户名叫jddes 的人发现在火箭发射150 秒的时候存在明显的干扰。用红外光谱检测射频,可以确定是有通断状态的切换:

【图】

Paul 确认:

【图】

现在有线索了,我用带通滤波器来滤除噪声。尽管也丧失了一些有用信号,但是噪声去除了,这样我就可以进行分析了:

【图】

在火箭发射前,GPS追踪仪与GNSS-SDR的输出一致,而GNSS-SDR还覆盖了飞行器打开降落伞前15秒的有效定位。红色的GPS追踪信号给出了飞行器斜道和垂直下降的定位。

大体上就是这样了。此时,我已深知继续挖掘GNSS-SDR 的漏洞已经没意义了,因此,我将注意力转向之前丢弃和优化的代码-SoftGNSS。这是独立的连续运行(每获取一次卫星信号,迭代循环射频信号一次)在Matlab上的代码块,因此在每个周期内,会有两次间歇。参考《一个软件定义的GPS Galileo 接收器:单频率实现》这本书,审查这段代码将相当简单。代码中存在许多bug (我在github上维护了一个修复版),不过,我最终还是实现了从地面到最高点的全程追踪,如下图所示。红的的轨迹是GPS 的追踪,黑色的是GNSS-SDR 的输出,黄色的是SoftGNSS 的。

【图】

好了,我还想用GNSS -SDR实现实时的端到端追踪,作为最终目标。考虑到,Intel 计算棒有些力不从心,我改用树莓派3。

 

如果你对这些感兴趣,我极力推荐你关注我的博客sdrgps.blogspot.com,我在也研究GPS模拟和火箭运行轨道模拟。如果你对GPS感兴趣的话,我也推荐你去看一看《一个软件定义的GPSGalileo接收器:单频率实现》。对于学习SDRBalint SeeberMichael OssmanSDR with HackRF系列的任何内容都是我用于学习GNU Radio的绝佳资源。

 

 


POSTED BY

Philip Hahn 西雅图航空航天工程师,喜欢搏斗机器人,帆船运动和软件无线电。

 

 

原文:https://www.gnuradio.org/blog/tracking-rockets-gnss-sdr/

 

 

                                                                                                                                                      / 看雪翻译小组 StrokMitream

 



[课程]Linux pwn 探索篇!

收藏
免费 1
支持
分享
打赏 + 1.00雪花
打赏次数 1 雪花 + 1.00
 
赞赏  kanxue   +1.00 2017/05/07
最新回复 (3)
雪    币: 24
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
外国人的思维就是跳脱,中国封建主义思维拍马难及!
2017-5-7 08:06
0
雪    币: 2575
活跃值: (487)
能力值: ( LV2,RANK:85 )
在线值:
发帖
回帖
粉丝
3
这个也能行?
2017-5-7 10:58
0
雪    币: 2734
活跃值: (796)
能力值: ( LV9,RANK:310 )
在线值:
发帖
回帖
粉丝
4
感谢坛主的赞赏,@kanxue
2017-5-7 22:48
0
游客
登录 | 注册 方可回帖
返回
//