Key-word:
integer ambiguity resolution :整周模糊度解算 navigation:导航 Kinematic:动态,RTK的K rover:漫游 validation:验证 antena:天线 phase:相位 Augmentation:曾广 carrier-base:基于载波 code-based:基于测距码(伪距) raw binary:原始二进制 receiver:接收者(接收机) ephemeris:星历
on-the-fly(OTF):即使生成/高速运行(计算机术语)
phase center variation(PCV):相位中心变化
pseudo random noise(PRN):伪随机噪声 *还记得pseudo inverse吗
signal to noise ratio(SNR):信噪比(信号是波,噪声也是波,应该怎么比呢)
Satellite-Based Augmentation System(SBAS):广域差分增强系统(星基增强系统,'基站增强')
Differential GPS(DGPS):SBAS的一种
DGNSS:SBAS的一种
Radio Technical Commission for Maritime services(RTCM):国际海运事业无线电技术委员会 ,也代表一种GNSS差分信号格式
National Marine Electronics Association (NMEA):美国国家海洋电子协会,也代表GPS导航设备统一的RTCM标准协议
Networked Transport of RTCM via Internet Protocol(NTRIP):基于互联网转发RTCM
RTKLib的库简介:
1. 处理矩阵和向量函数
2. 处理时间和字符串函数
3. 处理坐标转换和水准面函数
4. 导航函数
5. 提供定位模型(电离层,对流层,天线PCV)
6. 使用DGPS或DGNSS两个广域差分增强系统进行改正
7. 单点定位
8. 基于载波或基准于测距码的相对定位
9. OTF整周模糊度解算
10. 接收机原始二进制数据输入
11. 定位解算以NMEA格式输入输出
12. RINEX观测数据、导航信息输入输出
13. 精确星历输入
14. 数据流通讯库(猜测是TCPC/TCPS/FILE等流)
15 基于互联网转发RTCM库
16. RTK(实时动态)的GPS、GNSS定位服务器
17. RTCM 2.3/3.0/3.1/3.2格式处理
18. downloader functions
Windows + Visual studio下编译:https://www.cnblogs.com/DKSoft/p/4677381.html
*使用前当然要#include "rtklib.h"了
函数介绍:
rtkcmn.c
卫星和卫星系统部分:
satno():将卫星系统和伪随机噪声编号,转为卫星编号
satsys():卫星编号转卫星系统
satid2no() :卫星ID转卫星编号 对应 satno2id():卫星编号转卫星ID
obs2code() :观测类型(字符串)转观测类型(数字值) 对应 code2obs():观测类型(数字值)转观测类型(字符串)
satexclude():(返回0或1)测试排除卫星(猜测是在开始处理数据的时候用的)
testsnr() :(返回1:masked,0:unmasked)测试信噪比,猜测应该是信号是否能覆盖噪音(换句话说噪声的振幅很少,或者频域很窄?)
setcodepri() :设置代码优先级(这是针对多个卫星系统的)
getcodepri() :获取代码优先级
*有sat开头都和卫星有关的
矩阵和向量部分:
mat():创建一个矩阵,返回的是double*,使用堆空间(要自己释放)。由此可见,rtklib是用double来存储矩阵,不是用类/结构体,所以行列数要时刻传入传出。
imat():创建int型矩阵
zeros() :创建0矩阵,返回的是double*(用这个代替mat(),起码会将元素初始化为0)
eye():创建单位矩阵
dot():向量点乘(点积),向量也是double*型。a.b,几何意义是,b在a方向上的长度,乘以a的长度。
norm():欧几里得范数,说白了,就是同一个向量点乘后开方,求向量长度
cross3() :三维向量外积(叉积)(x1,y1,z1)×(x2,y2,z2)=(y1z2-y2z1,z1x2-z2x1,x1y2-x2y1);新向量长度|z|=|x||y|*sin<x,y>,几何意义就是求垂直于xy方向上的向
(看《线性代数的几何意义》)