2014.07.14——2014.07.20,开源夏令营的第二周。

这周主要解决的问题:

  1. 坐标系转换:
    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。
  2. 卫星可见星判断:
    此模块主要功能是判断当前仿真时刻卫星对于用户(接收机)是否是可见的。这首先要知道用户和卫星各自的位置,其中用户位置给出的是纬经高,卫星位置则由GetSatState函数通过星历计算得到的在WGS-84中的坐标。这需要将用户位置转化到与卫星位置同一个坐标系下,然后就可以计算得到卫星对于用户的方位角alpha和仰角theta。其实这也就是WGS2ENU所完成的任务,theta在5°以上即可认为卫星是可见的。
  3. 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:1023g1(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:1023g2(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

开源夏令营《基于HackRF开发GPS信号仿真模拟器》工作总结(二)相关推荐

  1. 开源夏令营《基于HackRF开发GPS信号仿真模拟器》工作总结(一)

    2014.07.07收到导师的邮件,通知由自己来做开源夏令营的<基于HackRF开发GPS信号仿真模拟器>项目,很开心能够得到这个机会,也很感谢导师的信任.在整理材料后,向导师汇报了自己的 ...

  2. 开源夏令营《基于HackRF开发GPS信号仿真模拟器》开题报告

    基于HackRF开发GPS信号仿真模拟器 1. 研究意义 随着GPS卫星导航定位系统在现在社会得到越来越广泛的应用,一个能够定量评估.可以模拟不同环境.并具有足够精度的卫星信号仿真模拟器为GPS终端设 ...

  3. 开源夏令营《基于HackRF开发GPS信号仿真模拟器》工作总结(三)

    2014.07.21-2014.07.27,项目已经开展三周了,接下来就要面对中期检查了.实验室已经放假了,现在只剩下为数不多的几个人了,其中包括我. 这周主要解决的问题 这周主要解决的问题分为三个方 ...

  4. 开源夏令营《基于HackRF开发GPS信号仿真模拟器》终期汇报

    目前的项目进展能够实现的功能有: 1.在Matlab中完整运行数据生成部分功能,产生中频数据 在Matlab中,依次读取某天的全部卫星星历.确定用户的状态(位置.速度和加速度).依据时间计算卫星的状态 ...

  5. 开源夏令营《基于HackRF开发GPS信号仿真模拟器》工作总结(五)

    这周(08.04-08.10)主要是在学习GNURadio的使用,在GRC中试验了几个例子,用HackRF接收了WBFM信号,并利用octave来分析从GNURadio中获得的数据. 这周主要解决的问 ...

  6. 基于matlab的gps信号仿真123,MATLABGPS信号仿真完整源代码.doc

    配套毕业设计论文见百度文库 请搜索 <基于MATLAB的GPS信号仿真123> 附录 仿真程序代码 数据码的产生 function datacode=data(x) y=rand(1,x) ...

  7. matlab gps 卫星导航信号,基于MATLAB的GPS信号仿真123.doc

    <基于MATLAB的GPS信号仿真完整源代码123> 摘 要 . 关键词::MATLAB: Abstract As the new generation of the satellite ...

  8. gps 捕获 matlab,基于FFT的GPS信号快速捕获方法

    基于FFT的GPS信号快速捕获方法 李继忠 李巍 (北京遥感设备研究所,北京100039) 摘要:设计在高动态环境下工作的GPS接收机,其难点之一便在于对卫星伪码的快速捕获. 针对缩短GPS接收机捕获 ...

  9. 基于osgearth开发的三维仿真与态势软件系统源代码

    基于osgearth开发的三维仿真与态势软件系统源代码. 功能如下: 1.新建方案.打开方案.保存方案: 2.导入影像.高程.矢量.模型数据: 3.灯光控制.雨.雪.雾特效: 4.通视分析.距离测量. ...

最新文章

  1. 云计算的认识和看法_【云计算】如何理解云计算才是正确的?
  2. 【OpenGL】十、OpenGL 绘制点 ( 初始化 OpenGL 矩阵 | 设置投影矩阵 | 设置模型视图矩阵 | 绘制点 | 清除缓冲区 | 设置当前颜色值 | 设置点大小 | 绘制点 )
  3. CKPT进程工作机制
  4. ytu 1057: 输入两个整数,求他们相除的余数(带参的宏 + 模板函数 练习)
  5. String类split方法
  6. Python教程:序列的增量赋值
  7. android 基本知识
  8. [译]1-Key-Value Coding Programming Guide 官方文档第一部分
  9. unzip直接覆盖解压
  10. tomcat java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListen
  11. 如何判定选择的日期与当前日期的前后关系
  12. HTML 上标题栏把右标题栏遮挡,如何编辑组件的样式(编辑样式)?
  13. 顺时针 vs 逆时针
  14. JS 生成英文字母 A-Z
  15. linux 查看IP地址
  16. licode erizo pipleline 1 : handlercontext
  17. 新司机的黑裙战斗机 篇四:新司机的黑群晖指北—软件篇(下)
  18. 有源滤波器: 基于UAF42的50Hz陷波器仿真
  19. @Caching和@CacheConfig使用示例
  20. conversion function

热门文章

  1. 锂电池容量电压对照表_雾化器低温锂电池生产厂家报价
  2. 静态时序分析 第三章 标准单元库
  3. 施耐德140系列PLC模块140NOM25200C Modicon Quantum140XBP00600 140XBP01000 140XBP01600 140CPS11100 140CPS11420
  4. Error: Current license file does not support the EP4CE6E22C8 device问题解决
  5. Nonbsp;beannbsp;namednbsp;#039;/mlogin#039;nbsp;isnbsp;defin…
  6. android剪切板权限,android剪切板一些简单实用方法
  7. 想知道自己的某个内存的小视频总时长?那这篇CSDN很适合你,快来看看Python如何实现求MP4时长吧(包含os模块和moviepy模块的全套基础操作)
  8. 基于Adjustable Parameters的Style Transfer系列论文
  9. 阿里P7 java架构师 springcloud、jvm、netty 、redis、数据结构、分布式高并发 视频 下载分享
  10. 太赫兹无线信道的测量、建模和分析