伪距单点定位
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
伪距单点定位 学习汇报
目录
定位 原理
算法 实现
定位 结果
存在 问题
定位原理
伪距观测方程
定位原理
伪距观测方程线性化
定位原理
伪距观测方程线性化
定位原理
伪距单点定位
定位原理
伪距单点定位
算法实现
1、读取N文件
public struct NavDataHeader //导航电文文件头 { public string Version; public string DataType; //RENIX格式的版本号 //文件类型
2
3
End!
定位结果
1、各历元定位结果
定位结果
2、中误差
定位结果
3、GDOP
定位结果
4、与已知坐标比较
解算坐标 X(m) 4097218.07141455 已知坐标 4097217.731933006 误差Δ 0.339
Y(m)
Z(m)
4429125.64424231
-2065776.03338743
4429118.352011596
④ 循环步骤②、③计算单历元定位结果
⑤ 循环进行各个历元的定位解算 ⑥ 删除计算定位中明显错误的结果 ⑦ 求定位平均值
算法实现
4、结果输出
public struct Result //结构体用来存储每一个观测历元的平差结果
{
public CoordCartesian RecPos; public double m0; public double mPos; public double RecClo; public double GDOP; } # 定位结果可另存为文本文档方便查看 public double mX, mY, mZ, mRC; //一个观测历元计算出的接收机位置 //方向中误差,接收机钟差中误差 //单位权中误差 //点位误差 //接收机钟差 //几何精度因子
//本历元的卫星数
//一个观测历元的卫星列表 //卫星列表
public string[] DataRec;
public double[,] Obsfakedata; }
//对应的本历元卫星的观测数据
//数组记录一个观测历元的伪距观wk.baidu.com值
算法实现
3、定位解算
① 用广播星历参数计算卫星位置 ② 计算间接平差中的B,l ③ 计算接收机坐标、钟差改正数
算法实现
2、读取O文件
public struct ObsDataHeader //观测数据文件头信息 { public double Version; //RENIX格式的版本号 public string DataType; //文件类型 public string MarkerName; //天线标志的名称 public string MarkerNumber; //天线标志编号 public string[] AntInfo; //天线序列号及类型 public double[] AppoxPosXYZ; //标志的近似位置 public double AntHeight; //天线高 public int ObsDataTypeNum; //观测数据类型数 public string[] ObsDataType; //观测数据类型 public double Interval; //历元间隔 public string TimeOfFirstObs; //第一个观测记录的时刻 }
算法实现
2、读取O文件
public struct ObsDataInfo //观测数据文件信息 { public CalTime ObsDate; public int Tag; //该记录的历元时刻 //历元标志
public int NumOfSate;
public int[] PRN; public string Satellite;
-2065770.737160930
7.292
-5.296
定位误差:9.019(m)
存在问题
1
O 文件读取模块没有通用性。例如 RINEX 版 本不同,对应的 P1 、 P2 、 C1在 O 文件里的位置也 不同,造成读取数据错误。 定位解算模块运行原理模糊,理论知识薄弱。 例如不清楚如何计算卫星位置,另外对最小二乘 平差方法需要重点复习。 代码内部逻辑关系仍需完善。在分析中发现 当有的观测数据不全时,程序对数据的处理有误, 需要完善。
public string[] CreateDataInfo;
}
//创建本数据文件的相关信息
算法实现
1、读取N文件
public struct NavDataObs //导航电文文件数据 { public int PRN; //卫星的PRN号 public CalTime NavDate; //历元 public double ClockDeviation; //卫星钟的偏差(s) public double ClockDrifting; //卫星钟的漂移(s/s) public double ClockDriftVelocity; //卫星钟的漂移速度(s/s2) public double[] BroTrack_1; //广播轨道1数据 public double[] BroTrack_2; //广播轨道2数据 public double[] BroTrack_3; //广播轨道3数据 public double[] BroTrack_4; //广播轨道4数据 public double[] BroTrack_5; //广播轨道5数据 public double[] BroTrack_6; //广播轨道6数据 public double[] BroTrack_7; //广播轨道7数据 }
目录
定位 原理
算法 实现
定位 结果
存在 问题
定位原理
伪距观测方程
定位原理
伪距观测方程线性化
定位原理
伪距观测方程线性化
定位原理
伪距单点定位
定位原理
伪距单点定位
算法实现
1、读取N文件
public struct NavDataHeader //导航电文文件头 { public string Version; public string DataType; //RENIX格式的版本号 //文件类型
2
3
End!
定位结果
1、各历元定位结果
定位结果
2、中误差
定位结果
3、GDOP
定位结果
4、与已知坐标比较
解算坐标 X(m) 4097218.07141455 已知坐标 4097217.731933006 误差Δ 0.339
Y(m)
Z(m)
4429125.64424231
-2065776.03338743
4429118.352011596
④ 循环步骤②、③计算单历元定位结果
⑤ 循环进行各个历元的定位解算 ⑥ 删除计算定位中明显错误的结果 ⑦ 求定位平均值
算法实现
4、结果输出
public struct Result //结构体用来存储每一个观测历元的平差结果
{
public CoordCartesian RecPos; public double m0; public double mPos; public double RecClo; public double GDOP; } # 定位结果可另存为文本文档方便查看 public double mX, mY, mZ, mRC; //一个观测历元计算出的接收机位置 //方向中误差,接收机钟差中误差 //单位权中误差 //点位误差 //接收机钟差 //几何精度因子
//本历元的卫星数
//一个观测历元的卫星列表 //卫星列表
public string[] DataRec;
public double[,] Obsfakedata; }
//对应的本历元卫星的观测数据
//数组记录一个观测历元的伪距观wk.baidu.com值
算法实现
3、定位解算
① 用广播星历参数计算卫星位置 ② 计算间接平差中的B,l ③ 计算接收机坐标、钟差改正数
算法实现
2、读取O文件
public struct ObsDataHeader //观测数据文件头信息 { public double Version; //RENIX格式的版本号 public string DataType; //文件类型 public string MarkerName; //天线标志的名称 public string MarkerNumber; //天线标志编号 public string[] AntInfo; //天线序列号及类型 public double[] AppoxPosXYZ; //标志的近似位置 public double AntHeight; //天线高 public int ObsDataTypeNum; //观测数据类型数 public string[] ObsDataType; //观测数据类型 public double Interval; //历元间隔 public string TimeOfFirstObs; //第一个观测记录的时刻 }
算法实现
2、读取O文件
public struct ObsDataInfo //观测数据文件信息 { public CalTime ObsDate; public int Tag; //该记录的历元时刻 //历元标志
public int NumOfSate;
public int[] PRN; public string Satellite;
-2065770.737160930
7.292
-5.296
定位误差:9.019(m)
存在问题
1
O 文件读取模块没有通用性。例如 RINEX 版 本不同,对应的 P1 、 P2 、 C1在 O 文件里的位置也 不同,造成读取数据错误。 定位解算模块运行原理模糊,理论知识薄弱。 例如不清楚如何计算卫星位置,另外对最小二乘 平差方法需要重点复习。 代码内部逻辑关系仍需完善。在分析中发现 当有的观测数据不全时,程序对数据的处理有误, 需要完善。
public string[] CreateDataInfo;
}
//创建本数据文件的相关信息
算法实现
1、读取N文件
public struct NavDataObs //导航电文文件数据 { public int PRN; //卫星的PRN号 public CalTime NavDate; //历元 public double ClockDeviation; //卫星钟的偏差(s) public double ClockDrifting; //卫星钟的漂移(s/s) public double ClockDriftVelocity; //卫星钟的漂移速度(s/s2) public double[] BroTrack_1; //广播轨道1数据 public double[] BroTrack_2; //广播轨道2数据 public double[] BroTrack_3; //广播轨道3数据 public double[] BroTrack_4; //广播轨道4数据 public double[] BroTrack_5; //广播轨道5数据 public double[] BroTrack_6; //广播轨道6数据 public double[] BroTrack_7; //广播轨道7数据 }