「科普」揭秘卫星星历及误差
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了「科普」揭秘卫星星历及误差相关的知识,希望对你有一定的参考价值。
参考技术A一.什么是卫星星历,星历误差,及其定义与分类
卫星星历 :又称为两行轨道数据(TLE,Two-Line Orbital Element),由美国celestrak发明创立。
卫星星历是用于描述太空飞行体位置和速度的表达式———两行式轨道数据系统。卫星、航天器或飞行体一旦进入太空,即被列入NORAD卫星星历编号目录。列入NORAD卫星星历编号目录的太空飞行体将被终生跟踪。卫星、火箭残骸等飞行体成为太空垃圾时,仍被列入NORAD卫星编号目录,直到目标消失。卫星星历以开普勒定律的6 个轨道参数之间的数学关系确定飞行体的时间、坐标、方位、速度等各项参数,具有极高的精度。卫星星历能精确计算、预测、描绘、跟踪卫星、飞行体的时间、位置、速度等运行状态;能表达天体、卫星、航天器、导弹、太空垃圾等飞行体的精确参数;能将飞行体置于三维的空间;用时间立体描绘天体的过去、现在和将来。卫星星历的时间按世界标准时间(UTC)计算。卫星星历定时更新。
卫星星历可应用于军事、天文、航天、航天器的预测、定位、轨道、跟踪、测量和太空垃圾的计算、预测、描绘、跟踪。
卫星星历误差 :由星历所计算得到的卫星的空间位置与实际位置之差称为卫星星历误差。
卫星星历是由地面监控站跟踪监测卫星求定的。由于卫星运行中要受到多种摄动力的复杂影响,而通过地面监控站又难以充分可靠地测定这些作用力或掌握其作用规律,因此在星历预报时会产生较大的误差。在一个观测时间段内,星历误差属于系统误差,是一种起算数据误差。它不仅严重影响单点定位的精度,也是精密相对定位的重要误差来源。
星历误差可以近似地认为基线的相对精度近似地等于星历的相对精度(星历误差与高度 20200km之比).但严格而言,星历误差对基线的影响与卫星和基线的相对几何分布有关,很难具体估计其大小,当观测卫星数多于4颗时,星历误差的影响将大大地减小。
广播星历和精密星历卫星星历是GPS卫星定位中的重要数据。由卫星星历所给出的卫星位置与卫星的实际位置之差称为卫星星历误差。GPS卫星的广播星历是由全球定位系统的地面控制部分所确定和提供的,经GPS卫星向全球所有用户公开播发的一种预报星历,其精度较差。SA政策取消后,广播星历所给出的卫星的点位中误差为5~7m。
二.GPS卫星的广播星历及其误差
广播星历是定位卫星发播的无线电信号上载有预报一定时间内卫星根数的电文信息。
广播星历的精度是极不稳定的,它受星历年龄、轨道是否调整、是否处于地球和月亮的阴影区等很多对用户而言是偶然因素的影响,即使设有SA政策,广播星历也可能会差于 1(Xhn,多观测一些卫星能提高精度。在求解CPS卫星轨道时,广播星历只起确定初值的作用,lOOm的精度完全足够了。但卫星运动力模型的误差将引起定出轨道的周期误差,在长距离定位时一般应采用精密星历或同时定轨。
广播星历误差是当前GPS定位的重要误差来源之一。美国SA政策取消后,GPS卫星的广播星历误差对GPS单点以及对事后载波相位差分GPS数据精度的影响程度究竟如何,在缺乏数据的情况下只能依据相关资料所提供的估计值,通过理论分析和事后数据处理的方法对广播星历误差影响GPS单点及事后载波相位双差定位精度的程度展开研究。
三.精密星历
精密星历供卫星精密定位所使用的卫星轨道信息。精密星历是由若干卫星跟踪站的观测数据,经事后处理算得的供卫星精密定位等使用的卫星轨道信息。
精密星历是为满足大地测量、地球动力学研究等精密应用领域的需要而研制、生产的一种高精度的事后星历。目前的GPS精密星历主要有两种:由美国国防制图局(DMA)生产的精密星历以及由国际GPS服务IGS(International GPS Serv-ice)生产的精密星历。前者的星历精度约为2cm,后者的星历精度约为5cm。采用精密星历时应该注意,各个 GPS资料处理中心提供的精密星历尽管在数值上很接近,但由于各自采用的卫星运动力模 型不一致,可能会对基线解算产生系统性的差异。
四.有关星历误差分析及其改正
GPS广播星历的轨道误差分析
卫星星历是卫星定位的前提和基础,其轨道精度的好坏将直接影响定位的精度和结果。GPS广播星历虽然精度较精密星历低,但因为其具有实时、易获取的特点,已被众多实时导航和定位用户所广泛使用。David L.M. Warren、John F. Raquet对1993年到2002年期间的GPS广播星历的轨道精度情况进行了分析,得到了一些有益的结论。
2002年,为了提高GPS的定位精度,NGA(National Geospatial-Intelligence Agency)将AII的一些改进成果应用到主控站上,由NGA与JPO支持的这项计划最终成功实行,即L-AII(Legacy Accuracy Improvement Initiative)计划,它主要包括[4]:①将NGA观测站对GPS卫星进行跟踪观测的数据添加到卫星定轨、预报过程中,并且加入的观测站数目会不断增加,由开始6个站到最后11个站,使得所有的GPS卫星在任意时刻至少有一个地面跟踪站对其进行观测。而此前对GPS进行跟踪观测的只有OCS的5个监测站。②对卫星定轨/推估过程中所使用的动力学模型的改进,以及单区(single partition)定轨策略的实行。
在各机构的努力下,特别是L-AII计划的实施,广播星历的轨道精度有了很大的提高,从长期趋势中可以看到在三个方向上的偏差的日平均值都接近于0;对定位精度影响最大的径向误差的日均方根差由2002年的0.8m左右降低到了2006年的0.6m左右,径向误差以及法向误差也分别由2002年的4m、2.5m左右降低到了2006年的1.5m、0.9m左右;且在不考虑钟差的情况下,SISRE也由1m左右降低到接近于0.7m;到2006年底几乎所有卫星的三维偏差的RMS都达到了2m左右。可以期待的是在相关机构的进一步努力下,以及性能更为优异的新卫星的陆续升空,GPS的广播星历的轨道精度将会得到更进一步的提高。
GPS广播星历误差对单点定位的影响
在单点定位中,卫星星历误差对解箅结果影响较大.普通单点定位及精密单点定位的数学模型,通过广播星历及精密星历数据的解算,分析星历精度对单点定位的影响.计算结果表明,使用超快星历代替最终精密进行精密单点定位是可行的.
IGS精密星历的误差分析
采用高精度的ITRF2000全球参考框架、新的地球物理模型和误差改正模型、统一的卫星轨道参量和地球自转模型、统一的数据处理策略,重新处理了IGS全球跟踪站数据以求解1994—2004年的GPS卫星轨道。通过轨道比较评估了IGS精密星历的系统偏差和随机误差,发现IGS精密星历标称精度和实际精度存在差异,特别是早期结果。IGS精密星历在不同时期存在不同的系统偏差,主要由其在不同时期采用的不同ITRF序列参考框架之间的差异引起,IERS公布的转换参数不能完全表征ITRF序列间的差异。相对于重解精确轨道,IGS精密星历随机误差随时间逐渐减小,1994年为15—20cm,1998年逐渐减小到6 8cm,1998年以后小于5cm。
结语:本文通过对一些GPS基本知识的理解和相关文献的查找整理得出以上叙述,其中列举了较新的分析误差的理论方法及个人的观点,加深了对GPS相关误差的理解。
卫语句
1.使用卫语句取代嵌套表达式
函数中的条件逻辑使人难以看清正常的执行途径。使用卫语句表现所有特殊情况。
动机:条件表达式通常有2种表现形式。第一:所有分支都属于正常行为。第二:条件表达式提供的答案中只有一种是正常行为,其他都是不常见的情况。
这2类条件表达式有不同的用途。如果2条分支都是正常行为,就应该使用形如if…..else…..的条件表达式;如果某个条件极其罕见,就应该单独检查该条件,并在该条件为真时立刻从函数中返回。这样的单独检查常常被称为“卫语句”。
Replace Nested Conditional with Guard Clauses (以卫语句取代嵌套条件表达式)的精髓是:给某个分支以特别的重视。它告诉阅读者:这种情况很罕见,如果它真的发生了,请做一些必要的整理工作,然后退出。
“每个函数只能有一个入口和一个出口”的观念,根深蒂固于某些程序员的脑海里。现今的编程语言都会强制保证每个函数只有一个入口,至于“单一出口”规则,其实不是那么有用。保持代码清晰才是最关键的:如果单一出口能使这个函数更清晰易读,那么就使用单一出口;否则就不必这么做。
做法:1、对于每个检查,放进一个卫语句。卫语句要不就从函数返回,要不就抛出一个异常。
2、每次将条件检查替换成卫语句后,编译并测试。如果所有卫语句都导致相同的结果,请使用 Consolidate Conditional Expression (合并条件表达式)。
2.卫语句就是把复杂的条件表达式拆分成多个条件表达式,比如一个很复杂的表达式,嵌套了好几层的if - then-else语句,转换为多个if语句,实现它的逻辑,这多条的if语句就是卫语句.
3有时候条件式可能出现在嵌套n次才能真正执行,其他分支只是简单报错返回的情况,对于这种情况,应该单独检查报错返回的分支,当条件为真时立即返回,这样的单独检查就是卫语句(guard clauses).卫语句可以把我们的视线从异常处理中解放出来,集中精力到正常处理的代码中。
例如下列代码:
void func(void)
if(IsWorkDay())
printf("Error,is work day");
else
if(IsWorkTime())
printf("Error ,is work time");
else
rest();
使用卫语句替换以后
void func()
if(IsWorkDay())
printf("Error,is work day");
return;
if(IsWorkTime())
printf("Error,is work time");
return ;
rest();
以上是关于「科普」揭秘卫星星历及误差的主要内容,如果未能解决你的问题,请参考以下文章