开源夏令营《基于HackRF开发GPS信号仿真模拟器》工作总结(二)
来源:互联网 发布:网络层的功能 编辑:程序博客网 时间:2024/05/21 10:45
2014.07.14——2014.07.20,开源夏令营的第二周。
这周主要解决的问题:
- 坐标系转换:
WGS-84是地心地固坐标系的一种(地心直角坐标系),也是GPS系统定位结果输出中所采用的坐标系。它以地心作为坐标原点,Z轴指向地球北极,X轴指向格林尼治子午线与地球赤道的交点。
LLA是另一种地心地固坐标系(地心大地坐标系),它以纬度、经度和高度来标识地球上的一个点。纬度即过当前点的椭球面法线与赤道面的夹角,在-90°~90°之间的,北为正,南为负;经度是过当前点的子午面与格林尼治子午面之间的的夹角,在-180°~180°之间,东为正,西为负。高度为当前点到基准椭球面的法线距离,球面以外为正,以内为负。它与常规意义上的海拔高度不同,原因在于海拔高度基于的是大地水准面,所以它们之间的差距也就取决于大地水准面与基准椭球面之间的差值。
ENU即东北天坐标系,是一种相对的直角坐标系,它以当前点为坐标原点,三个坐标轴则是东向、北向和天向。在得到三个方向的分量后,我们就可以得到坐标系内任意一点对于原点的方位以及仰角。方位角为北向坐标轴顺时针转到观测点与原点的连线矢量在EN平面内投影方向时的角度;仰角则是观测点与原点的连线矢量以EN平面的角度。
GPS中定位结果中,一般采用的就是在WGS-84坐标系中的坐标,有时我们需要转化为更加熟悉的LLA坐标;同时在模拟器中,我们自定义了用户(接收机)的位置(用纬度、经度和高度),又需要转化到WGS-84坐标系中,因此两个坐标系的相互转化是经常用到的。除此之外,对于同在WGS-84坐标系中的用户和卫星而言,我们需要知道二者的相对位置关系,即卫星在用户的什么方位以及仰角信息,这时就要将坐标转化为ENU坐标系中。因此现阶段编写了三个坐标转化函数:WGS2LLA、LLA2WGS以及WGS2ENU。 - 卫星可见星判断:
此模块主要功能是判断当前仿真时刻卫星对于用户(接收机)是否是可见的。这首先要知道用户和卫星各自的位置,其中用户位置给出的是纬经高,卫星位置则由GetSatState函数通过星历计算得到的在WGS-84中的坐标。这需要将用户位置转化到与卫星位置同一个坐标系下,然后就可以计算得到卫星对于用户的方位角alpha和仰角theta。其实这也就是WGS2ENU所完成的任务,theta在5°以上即可认为卫星是可见的。 - GPS L1 C/A码的产生:
C/A码是一种Gold码,含有1023个码片。根据GPS的ICD介绍,首先由特征多项式g1(x)=1+x^3+x^10产生G1序列,由特征多项式g2(x)=1+x^2+x^3+x^6+x^8+x^9+x^10产生G2序列,然后对于G2进行平移(由PRN决定),将平移后的序列与G1进行异或便可以得到相应PRN对应的C/A码序列。对于产生的码,可以用文件中给出的各个C/A码的前10个码片值进行比对检查正确性。function cacode = GenCACode(PRN)g2s = [ 5, 6, 7, 8, 17, 18, 139, 140, 141, 251, ... 252, 254, 255, 256, 257, 258, 469, 470, 471, 472, ... 473, 474, 509, 512, 513, 514, 515, 516, 859, 860, ... 861, 862];g2shift = g2s(PRN);%产生G1序列g1 = zeros(1, 1023);reg = -1*ones(1, 10);for i=1:1023 g1(i) = reg(10); tempBit = reg(3)*reg(10); reg(2:10) = reg(1:9); reg(1) = tempBit;end%产生G2序列g2 = zeros(1, 1023);reg = -1*ones(1, 10);for i=1:1023 g2(i) = reg(10); tempBit = reg(2)*reg(3)*reg(6)*reg(8)*reg(9)*reg(10); reg(2:10) = reg(1:9); reg(1) = tempBit;end%G2序列移位g2 = [g2(1023-g2shift+1 : 1023), g2(1 : 1023-g2shift)];%产生CA码cacode = g1 .* g2;
总结:
本周的工作主要是是在GPS的坐标系统的学习、可见星判断,其中可见星的判断综合用到了卫星位置的计算以及坐标转化等函数。
————————————————
以下是有关项目要求和工作进展的信息——
项目要求:基于HackRF开发GPS信号仿真模拟器
项目在csdn code上的地址:https://code.csdn.net/sywcxx/gps-sim-hackrf
0 0
- 开源夏令营《基于HackRF开发GPS信号仿真模拟器》工作总结(二)
- 开源夏令营《基于HackRF开发GPS信号仿真模拟器》工作总结(一)
- 开源夏令营《基于HackRF开发GPS信号仿真模拟器》工作总结(三)
- 开源夏令营《基于HackRF开发GPS信号仿真模拟器》工作总结(五)
- 开源夏令营《基于HackRF开发GPS信号仿真模拟器》开题报告
- 开源夏令营《基于HackRF开发GPS信号仿真模拟器》终期汇报
- android模拟器GPS信号设置
- 开源夏令营中期总结及第四周工作总结
- GPS卫星信号(二):导航电文
- 【CSDN开源夏令营】 基于Web的SSH客户端,实现跨平台的云服务管理(二)环境搭配
- 开源夏令营Memcached哈希性能优化(二)
- [开源夏令营][二] Docker 环境搭建
- 通信信号与系统分析(四 基于simulink仿真)
- 开源夏令营(1)
- 开源夏令营(2)
- 开源夏令营(3)
- 开源夏令营(5)
- 开源夏令营(6)
- opencv——convertTo
- Url传汉字编码解码
- UVA-1339 - Ancient Cipher
- java学习-算法3--费式数列和卡巴斯三角形
- uva 815 - Flooded!(点名要做的思路题~我觉得方法挺好)
- 开源夏令营《基于HackRF开发GPS信号仿真模拟器》工作总结(二)
- Linux下socket最大连接数 ulimit -n 最大值修改
- 关于arcmap的VBA不能使用解决办法
- Activity正真的活动生存期
- hdu 4379The More The Better
- scp无密码传输
- 黑马程序员---技术博客日记(1)
- 使用集成的ADT bundle来搭建android开发环境
- poj 2352 Stars