《基于北斗卫星导航的无人驾驶列车自动定位系统设计》13000字(论文)_第1页
《基于北斗卫星导航的无人驾驶列车自动定位系统设计》13000字(论文)_第2页
《基于北斗卫星导航的无人驾驶列车自动定位系统设计》13000字(论文)_第3页
《基于北斗卫星导航的无人驾驶列车自动定位系统设计》13000字(论文)_第4页
《基于北斗卫星导航的无人驾驶列车自动定位系统设计》13000字(论文)_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

--1--PAGE2-引言我国铁路的历史由来已久,早在19世纪,我国就有了第一条营运铁路,在中华民国修建了连通全国的三条主要干线,新中国成立后,为了休养生息,整顿战争废墟,修建美好家园,我国铁路有了长足的发展。随着经济全球化的进一步加深,我国作为负责任的大国,必须坚持多边主义和深化改革,促进全球贸易的发展,高速列车作为贸易的强大载体,是不可缺少的,而且随着我国的发展加快,居民的出行更加频繁,无论是旅游、办公、上学,高速列车带给人们越来越多的便利,所以人们对于高速列车稳、准、快及安全性的要求越来越高。无人驾驶被认为是未来交通出行的不二选择,无人驾驶正快速融入人们的日常生活,正逐步改变人们对世界的认识,不仅体现在交通出行上,更体现在生活的方方面面,对我国人民追求高质量生活和发展具有不可估量的经济价值。在有关进行无人驾驶的研究中,准确的车辆定位是绝对不可或缺的。目前,无人驾驶车辆广泛采用以卫星定位为主,和其他辅助方案相融合的定位方案,可以保证不同行驶条件下准确的定位。1.绪论1.1无人驾驶列车自动定位方法的研究背景及意义对于一个国家的进步和发展来说,铁路的完善是举足轻重的,它不但是基础设施,更是国之重器、利器,对于我国的经济的又稳又快发展,人文交流和国家安全战略具有举足轻重的作用。"十三五"期间铁路系统不断完善。“四纵四横”高速铁路的主要框架按照预定计划完成,“八纵八横”高速铁路和普通速度干线铁路整装待发,市间铁路作为关键急速发展。我国继续优化全国公路网络布局,提高铁路网络质量,不断完善中西部地区公路网络,不断加强运输枢纽及其相应基础设施。到2021年,中国铁路的总营业距离超过139000公里,包括高铁35000公里。在第十三个五年规划结束之前,将基本形成更加合理的布局,更广、更整齐、更安全、更高效的铁路网络。为了应对铁路运输产业需求的增加,积极实施铁路供给侧的结构改革,持续提高运输供给能力、服务质量和安全性。全面推进中国铁路建设,不仅大大提高了铁路网络布局、服务水平和运载优势,还为经济增长、结构调整和人民生活质量做出了巨大贡献。从2020年开始受到新的冠状肺炎的影响。铁路实施以了“六个稳定”和“六个保证”政策的中心,在所有方面努力促进正常工作,克服一切困难和危险,确保铁路建设各个方面的有序发展,提供国内外的双重周期战略。并切实推进铁路建设的全面推进,带动铁路投资。铁路建设井然有序,科学合理。由于科学技术的发展日新月异,在高铁上采用无人驾驶技术指日可待,无人驾驶列车的核心系统就是定位系统,它主要对列车大空间位置和小空间位置进行定位,再结合其它一些辅助系统可以实现安全无人驾驶。中国已进入高铁时代,缩短了列车运行时间,以确保列车的正确配置,不仅从行车安全的角度来看,确定列车的位置可以及时准确地确定列车在目前线路上的位置,准确地确认铁路是否科学、合理、整齐,保证其效率和最佳服务。传统的列车布置方式昂贵,运行不好。因此,研究创新性的、绿色环保的、便宜的、可靠的列车定位是我国铁路系统的重中之重。其中,全球导航卫星系统(GNSS)能提供连续的导航和定位,且更准确,成本也较低。采用GNSS系统定位,能降低其他必要的辅助设备的数量,完全降低定位成本,而且准确性也不低。随着GNSS定位的不断深化和发展,GNSS定位技术已经成为列车的主要定位方法。1.2国内外列车定位技术研究现状在列车的自主定位过程中,单个定位系统不能随时跟踪和显示列车的运行状态。因此,为了保证列车定位结果可靠,保证定位范围广,必须采用各种定位方法。如今采用以卫星导航为主,以其他定位技术为辅助的方法,有着广阔的前景。1.2.1基于多传感器信息融合的列车定位技术对于列车的准确定位,单凭某一个系统来实现是远远不够的,此时需要多种定位系统协调、协同来实现。当列车高速运行在复杂的环境或者极端天气中时,卫星所传输的信号容易被打断,因此由卫星所确定的位置信息容易被干扰而产生波动,甚至会产生一定的错误和丢失,这在列车的正常行驶中是非常严重的,数据丢失或者发生错误会导致列车不能持续地、准确地接收此时此刻它的位置信息[1]。因此为了确保列车能够获得实时准确的位置信息,以防当卫星信号等与列车定位直接相关的信息遭受干扰而丢失或者发生错误时,可以采用用多个传感器信息相互融合的技术。将北斗卫星导航系统作为为主要系统,其他定位系统作为辅助系统,可以北斗定位系统的优势和性能发挥的淋漓尽致,而且除此之外,通过刻苦钻研,改良各个定位系统间的结构和算法,确保不同的定位系统的好处,并提高其可行性和可靠性。简而言之,减少传感器的系统故障,改良各个定位系统间的结构和算法,降低定位费用是技术设计的重点。1.2.2基于电子地图匹配算法的列车定位技术电子地图具有轨道特性,从电子地图中可以确定列车每时每刻的位置,并通过显示器监控行车。电子地图大幅度提高了列车位置的精度,因此可以修正北斗卫星的航行方法和位置信息的偏差[1]。近年来,随着技术的进步,地图匹配算法得到了很大的发展,获得了良好的定位成果。在将来,减少所需要匹配时间、数据间的重复、定位数据的误差是电子地图匹配方法优化的重点。1.2.3基于无线传感器网络的辅助列车定位技术由于低成本、小布局、小维护、多自由,基于无线传感器网络的无线定位对列车的跟踪和定位有很大的好处,且由技术人员来随时革新。传统上,轨道电路和应答器的定位模式不仅成本高,而且只可以在接地和车辆之间单向地传递信息。随着以我国华为公司为领头羊的5G技术的光速发展,无线传感定位技术已经日渐完善、成熟,而且有能力自我修正。各种无线定位的基本算法和抗干扰措施将是以后大力研究的方向。1.2.4基于启发式算法优化的列车定位方法启发式算法和最优化算法是相呼应的,涉及生活中的各种学科及前沿理论、最具优势的理论模型和方法。比如神经网络算法,它可以反映非线性映射关系,这是极其难以研究的,具有强稳定性和高耐故障性,并且可以进行许多复杂的操作[2]。使用优秀的算法,可以改进许多缺点,可以使事故的可能性最小化,例如偶发冲突、过密化后碰撞。最近这些年以来,在神经网络算法、无线电定位技术的配合方面,取得了很高的造诣。1.3本文主要研究内容由于科学技术的发展日新月异,在高速列车上采用无人驾驶技术指日可待,无人驾驶列车的核心系统就是自动定位系统,它主要对列车大空间位置和小空间位置进行定位,再结合其它一些辅助系统可以实现安全无人驾驶。2.无人驾驶列车自动定位系统2.1研究背景目前,中国的铁路交通安全主要由列车传感器感应、机车信号和自动停止装置保证。其基本原理是避免由地面和机车的信号设备相互冲突引起的交通事故。但是,在严重的自然灾害、地上信号消失、无线通信装置失效等极端情况下,容易形成点播命令盲区,导致列车运行中缺乏必要的保护。卫星定位的使用可以解决上述问题。现在,在铁路的列车运行和灾害监视的重要领域,GPS一般用于程序产品中,包括卫星导航系统的应用程序技术。然而,GPS系统完全由其他国家控制,即使使用常规GPS、其他卫星定位和地面无线通信技术,也存在人的干扰,因此在严重自然灾害的情况下,信息不能有效地反馈到控制中心。目前,北斗卫星导航系统已应用于我国独立研发的国家生活的各个方面。除了导航的基本功能外,还具有短消息通信功能。它可以通过卫星和终端通过地面命令形成完整的命令系统。2.2全球卫星导航系统全球卫星导航系统是由多个卫星系统融合而成,它允许用户获得24小时,三维坐标,速度,时间信息,独立的全球导航卫星系统在提供所有动态实时信息方面起着重要作用。时间与时间和空间定位,知识工具和对象。它是国防和军事发展的关键,是经济发展和公共安全及服务的保障,是国家整体实力和国际竞争优势的重要标志和现代力量。2.3北斗卫星导航系统2.3.1北斗卫星导航系统的发展历程2020年7月31日,我国的北斗系统正式建成,建成即开通,中国人民的付出得到了应有的回报,体现了中国特色,其意义不亚于我国上世纪的“两弹一星”。北斗卫星导航系统是我国最重要的基础设施之一,并且为全球用户提供所有天候、所有时间,以及定位、导航和时序服务的。在北斗系统的建设和服务容量的开发中,有关产品已大量应用于交通运输、海洋水利研究、天气服务、能源电力、远程教育、短时通讯、警务、民航、5G前沿领域,慢慢和人民的生产生活息息相关,为经济的全球化、人类命运共同体、社会的前进注入一剂强心针。如图2.1所示。本文主要研究在交通运输方面的应用。在交通领域,北斗系统广泛用于运输路径监视、保证道路基础设施的安全、管理港口、确定设施位置。截至2018年12月,在36个中心城市,约80000辆公共汽车,基本上所有在导航领域都用上了北斗,通过北斗卫星导航系统我国将建立世界上最大的动态监测系统来驾驶车辆,有效提高监控效率和公路交通安全水平。据统计,2017年主要道路交通事故数量、死亡人数、失踪人数与2011年相比减少了50%。北斗系统应用领域如图2.1所示。图2.1北斗导航应用领域北斗卫星导航系统由空间段、地面段和用户段三部分组成,可在全球范围内全天候、全天时为各类用户提供高精度、高可靠定位、导航服务,除此之外,北斗还有一个“特色功能”,就是地面短信通讯,就是即使没有信号,只要有北斗终端,就可以发消息。定位精度已经达到分米、厘米级别[3]。北斗系统事关我国命脉,党中央高度重视,稳步推进北斗系统的建设分三步走:第一步,建设北斗一号系统。在党中央的领导下,在1994年启动“九·五计划”,开始一步步建设北斗的征程,但是道路是曲折的,在首先集中力量解决了“快捕精”的技术难题后,在2000年,发射2颗卫星,采用有源定位体制,对中国国家主要部门提供服务;2003年发射第3颗卫星,优化性能。北斗一号如图2.2所示。图2.2北斗一号系统第二步,建设北斗二号系统。北斗一号的成功建设,为我国继续研制北斗二号探明的前路,在2005年,我国着手北斗二号建设,但道路并不平坦,“原子钟”作为北斗的心脏是一个巨大的挑战,因为准确的时间的准确定位的前提,但任何困难都难不倒伟大的中国人民,经过齐心协力,“原子钟”问题顺利解决;2007-2012年,我国成功发射14颗卫星,补齐北斗二号无源系统。为亚太地区提供服务,在2008北京奥运会和汶川地震中发挥了巨大作用,不愧为国之重器。北斗二号如图2.3所示。图2.3北斗二号系统第三步,建设北斗三号系统。英勇的北斗人并没有停止探索的脚步,2009年,北斗三号的建设开始启动,但困难也伴随而来,美国和欧洲并不同意我们在他们的地区建设地面站,没办法,英雄的北斗团队经过刻苦攻关,终得突破,“墨间链路”横空出世;2020年,我国将55颗卫星发射组网,全面建成北斗三号系统,向全球提供服务。至此,我国北斗工程圆满成功!北斗三号如图2.4所示。图2.4北斗三号系统2021再起航,北斗人努力奋进,到2035年,中国将建设完善从室内到天空,从九天到五洋,全方位,广领域的北斗体系,为人类探索未知世界,奔向星辰大海做出中国贡献。2.3.2北斗卫星导航系统的结构北斗卫星导航系统由三大部分组成:空间部分、地面控制部分和用户终端部分。地面控制部分由主控站、注入站和监测站三部分组成。主控制站是控制中心,其主要任务是收集观测站的原始数据、协调系统、预测卫星小时误差,注入站受主控制站控制,进行卫星导航通信,协调信息,并在广泛的范围内输入微分信息。此外,注入站应向主控制点发送信号,并随时报告其工作情况。监测站配备精密铯表及设备,其主要任务是确保连续跟踪、观察、接收和传递导航信号,为主控制站提供观测数据。用户终端部分可通过卫星信号接收器履行具体职能。但北斗系统没有完整的用户终端产品生产线和高品质的市场链。因此,改进中国科研机构和大学用户终端的高精度解决算法和相关技术的研究是非常重要的。2.3.3北斗卫星导航系统的定位原理北斗卫星导航系统通过测量卫星至用户接收机的伪距,利用三球交汇的几何原理实现定位。如图所示,N1,N2,N3分别是北斗卫星,用户终端在地面上,那么可以假设,用户终端与卫星N1通过测量,他们之间相距X1,则用户终端肯定在球面M1上,M1半径为X1,中心为卫星,即N1;以此类推,如果用户终端与卫星N2之间相距X2,则用户终端肯定在球M2上,M2半径为X2,中心为卫星,即N2;以此类推,如果用户终端与卫星N3之间相距X3,则用户终端肯定在球M3上,M3半径为X3,中心为卫星,即N3。若用户终端同时在球面M1上、M2上,则其必在MI和M2的交线B1上。同理,若用户终端与球面M2、M3相关,则其必在M2和M3的交线B2上。根据三球交汇原理,如果用户终端和M1、M2、M3都相关,那么它就是B1和B2的交点上[2]。根掘三颗卫星的位置坐标,就可以推算出用户终端的位置坐标,如图2.5所示。图2.5北斗卫星定位原理图2.3.4北斗卫星导航系统的优势及前景展望(1)北斗应用的优势:它具有定位和通信功能,不需要其他通信系统的支持,而全球定位系统只能起到定位作用;北斗系统覆盖了中国及其邻国和地区,将北斗导航定位系统和卫星增强系统这两个资源整合在一起,特别适合北斗导航、定位系统和用户数据传输,不仅对中国,而且对邻近国家也有贡献,它适用于独立型、安全、可靠性、稳定、强大的保密性和关键部门,可用于丰富其应用程序。(2)北斗系统的功能特点:快速定位,确保用户在服务区24小时和实时定位,定位精度符合全球定位系统;短报文沟通,可同时传送至120个汉语信息;精密度很高,可以提高到20ns。

3.无人驾驶列车自动定位系统的软硬件3.1硬件接收机和软件接收机硬件接收机和软件接收机的区别如图3.1所示。图3.1硬件接收机和软件接收机的区别3.2软件定位接收机3.2.1研究背景GNSS系统是由GPS(全球定位系统),Glonass,Galileo和北斗卫星导航系统,还有与之对应的强化系统组成,特点和优势很明显,比如整时性、准确度高、而且很可靠,截至2021年,已经比较全面的应用于事关我国发展、前途和命运的许多关键领域,并且凭借其良好的性能和美丽的价格深受我国人民的喜欢。卫星定位接收机可以在它的观测区域内接收到许多关键性的位置信号,位置信号是由相关系统内的卫星发出的,当几个卫星信号出现一定程度的关联时,既可以用相关的解算软件并通过解调及一系列复杂的位置运算算出结果,最终为使用者和终端提供对应的位置信息及导航。全球主要的软件定位接收机的解算软件以及处理的算法逐年不断进步,不断更新,这是因为基于北斗及其它的卫星导航系统的由卫星发出的信号也随着技术的发展不断出现新的型号,并且随着卫星信号的改进与发展,除了接收机的软件系统和算法程序以外,它的硬件系统及其设计结构也要有相应的改变,这样才能在卫星信号的发射和接收机的信号接收及其处理之间越来越默契,运算位置的结果也越来越精确,但是改变接收机的硬件系统和结构很大程度上会给技术人员、设计者以及终端用户带来一定程度的麻烦。因此,一种新型的方法和机器被发觉和探讨出来了,即接收机不改变硬件,通过更迭和升级软件实现性能升级,增强其信号接收效果,即软件接收机,这已经成为接收机现代化设计中的一个发展方向。在装备卫星定位的列车定位系统中,列车的实时位置、运行速度和其他信息可以通过将卫星接收器接收到的各种卫星信号进行调算来得出。但是卫星信号在越来越复杂的列车运行环境中越来越难以处理且不满足运行所需的稳定性和准确性,固对接收机的性能和结构要求越来越高,既要满足在较短时间内计算出列车位置,而且推算出的结果要准确可靠,这样有利于列车的安全和平稳运行。完好性指标对结果的可靠性提出更高的要求,即卫星信号的可靠性是全球导航卫星系统服务质量的一个重要标准,完好性指标意味着该系统能够及时地发出故障警报。完好性是指当卫星定位误差过大,超过了我们设置的一个最大值时,能不能探测和消除这些超过期望的误差。那么在实际定位中,我们应该怎么来评估完好性呢?最常用的办法就是评估信息是否可靠,为了准确的评估,必须改进信号处理模式、硬件结构。但改变硬件是极其不方便的,我们不能想到,优化一次接收机性能就要把接收机“大卸八块”,把硬件结构通通换掉,消耗大量人力不说,确实难以实现,所以只升级软件和算法是一个需要借鉴的方向。在列车定位系统中,使用软件接收机实行故障监测,这样的话,可以使其正常稳定运行,起到了监测火车位置信息是否正确的作用,也实现了逻辑实现动态系统调整和升级,降低整个列车系统的成本,使整个列车控制系统既灵活性又具有独立性。推动使用北斗卫星导航对未来的列车运行控制系统提出更高的要求,例如实现更安全的目标,有效和经济地控制火车运行。3.2.2发展现状我们都知道,接收机的定位性能是完全可以提高的,在提高的过程中需要使用各种各样的语言的算法来对其设计和优化,那么这就对CPU的要求非常高了,使用的CPU必须同时具备很强的运算和储存能力,基于上述对软件接收机的高规格和严要求,使得目前的大多数软件接收机多是利用强大PC机的CPU进行运算调整,这样就可以在暂时不对硬件做出高要求的情况下,直接研究软件接收器的高性能算法,并为嵌入式系统提供理论和思想基础。嵌入式系统与PC机相比而言,虽然运算能力、速度和储存容量大大不如PC机,这就使得嵌入式算法需要在算法和计算量上下功夫,需要开发出更复杂的算法和更庞大的计算量。然而,他们更灵活,成本更低,易于安装,这有助于卫星定位软件接收器的实际应用。本篇分析了目前的研究状况基于PC和嵌入式平台的程序接收器,按从国外到国内,从以前到现在的顺序排列。(1)基于PC的卫星定位接收机研究现状美国的导航系统开发早,比较成熟,上世纪90年代Cliffordkelley博士设计的GPS软件接收机为开山鼻祖;2009年丹麦GPS中心造出了能在PC或DSP上运行软件,从而实现定位的接收机;2013年JAVIER等学者研究了双星座软件接收机,并取得了成果;芬兰学者设计出了定位误差很低的北斗软件接收机;Loctronix公司的研究了GNSS软件接收机,有能力接收且处理多种GNSS信号,实现定位。2009年北京航空航天大学的JIN等开发了性能强悍,成本较低,可以在能够在奔腾的CPU上进行位置解算的接收机;2010年复旦大学的赵晋研究出了北斗二代接收机,此接收机与前者相比,更先进,实用,亲民,采用的架构基于“硬件模拟前端+FPGA+PC”;2012年电子科技大学的罗正平用C语言实现了卫星信号处理,当然,这是基于模块化的思想,模块化的思想有助于我们提高效率和准确度,稳定性高,程序开源,方便借鉴[4]。(2)嵌入式硬件结构的软件接收机研究现状那么怎么可以让软件接收机能耗低,成本低,性能较好的数字信号处理器上运行呢?在2001年,AKOS等选用一种性能较为卓越,成本较为低廉的新型芯片,即TMS320C6201DSP芯片,这是一种不错的核心处理器,由TexasInstryments公司设计并且生产,即把软件接收机代码代入到此处理器上进行定位;2006年,美国CORNELL大学设计了一台新型的软件接收机,这基于DSP平台,核心处理器芯片为TMA320C6416DSP芯片,同样由前一个公司生产,具体实现步骤为:RF前端接收信号,先对其进行处理,比如数据采样,然后由DSP芯片和软件完成最终工作。在静态环境下,可定位误差小于5m[4]。基于DSP的软件接收机如图3.2所示。DSPDSP芯片图3.2基于DSP的软件接收机结构图3.2.3软件接收机结构与原理研究人员将一种理念通过设计,设入卫星定位接收机,即“软件无线电”,在卫星定位接收机中使用ADC(analogtodigitalconverter),先把卫星所发射的特殊信号数字化,这部分在极其靠近天线的地方就可完成,然后来处理数字信号,这部分在所设计的软件中完成,最终实现位置信息转换,进而实现定位。(1)软件接收机的结构卫星定位软件接收机主要是由天线模块、射频模块以及基带信号处理模块组成[5]。其各模块关系如图3.3所示。电源天线模块电源天线模块射频模块射频模块信号处理信息处理信号处理信息处理基带单元基带单元显控单元显控单元图3.3北斗定位接收机组成①天线模块:完成终端对卫星无线信号的接收,可从货架成品中选择。②射频模块:完成接收机对接收到的信号的下变频,有成品可供选择。③基带单元:完成对卫星导航信号的捕获、解算信息、测出伪距算。基带单元可分为信号处理模块和信息处理模块。信号处理模块算得上是基带单元的基础部分,在基础部分当中,主要完成对所接受到的信号进行采样与捕捉,然后再对其进行解算,分析。信息处理单元可以说是基带单元的大脑部分,在这里完成数据的处理和交换,当然最主要的任务还是报告卫星的运行状态,由于它是以卫星历书等为前提,所以有着很高的准确性,无愧“大脑”称号;接下来它就要完成另一部分工作,即把信号处理模块输出的导航电文,进行进一步处理,求出星历,解算终端当前的位置等参数。基带单元采用AD+FPGA+DSP的架构。软件接收机平台示意图图如图3.4所示。图3.4软件接收机平台示意图基带单元架构示意图如图3.5所示。ROM晶振RROM晶振ROMDSPFDSPFPGAA/D转换北斗北斗中频SHUZISSHUZIS数字SHU接口接口图3.5基带单元硬件及功能框图AD:处理中频信号,并传送给FPGA;FPGA:对处理后的信号进行下变频、解调、同步;DSP:对六路相关数据进行读取、追踪、计算,然后算出伪距、导航电文、卫星位置、接收机位置等。(2)软件接收机的原理卫星发射L电磁波,由天线模块将电磁波转换为电信号,这部分算是处理信号的前沿部分,固信号转换的准确性也是很重要的;然后射频前端对射频信号进行放大,把信号放大有利于下变频以及后面的处理,进行信号放大算是正式处理信号的开始,必须按一定的标准进行放大;然后产生中频信号,目前大多是北斗中频,也有的是北斗和GPS中频;然后将中频信号数字化,这部分自然就要在A/D转换模块中完成,最终将数字化后的信号传给处理部分,这部分算是中转部分,起着承上启下的作用;基带数字信号处理部分计算出用户位置信息,完成这一部分,那么信号处理就算完成,处理完的数据必须准确,这就要求这几部分之间的配合精度必须非常高。软件接收机载体不同,处理器就不同,如果基于PC,一般由CPU完成;如果是基于嵌入式平台,就由主芯片完成。3.2.4软件接收机具有如下特点:(1)更好的通用性软件接收机射频前端部分使用硬件结构,其他部分功能由软件实现。由于传统的接收机的设计及使用需要很多不同规格的硬件,因此对比两者,后者比前者更通用,可以和多种类、多频率的信号相匹配。(2)更好的定位性能以前的接收机都是用硬件ASIC(applicationspecificintegratedcircuit),实现信号处理功能的,但是话说回来,由于硬件成本高,当遇到复杂的算法和程式时无法很好的处理,反之,软件接收机算法虽然复杂,但是可以通过软件来完成,这样就省去了大量的人力物力,人们可以将精力放在优化算法上、设计更完美的软件上,最终提高接收机在多信号、抗干扰等方面的性能。(3)更容易实现性能升级硬件接收机主要采用ASIC芯片,来进行接收信号和其他工作,那么需要得到高性能定位就必须对硬件进行改造,对硬件改造就只能重新改造芯片,这样的话成本高,周期长,研发慢。而软件接收机只需要改进算法,需要实现更大变化的话就改变软件,这样就提高接收机的功能。

4.无人驾驶列车自动定位系统与C++4.1GNSS系统的时间基准与转换在列车行驶中,尤其是未来的无人驾驶列车,绝对准确可靠的定位,导航是不可或缺的,定位和导航要可靠,那么时间系统很重要,因为时间系统是GNSS系统有效工作的准绳。从自己的国情和安全出发,当今全球卫星导航系统都有时间系统,虽然他们之间相互独立,相互之间有差异,这种差异一般是比较稳定的。北斗时间系统(BDT)采用UTC作为基准,此基准是完全可靠的,因为这是中国国家授时中心权威发布的,两者之间虽然有一定的偏差,但这种差异是极小的并且可以纠正,BDT的起始点与UTC是一致的,都起始于2006.1.1的0:00,BDT和UTC的偏差在1us以内。4.2用C++实现坐标转换截至目前,我国的北斗采用的是CGCS-2000坐标系,其以地心地固(ECCF)坐标系为基准。在此我们可以用C++实现坐标转换,即输入笛卡尔简单坐标,可转换为大地坐标和地平坐标。(1)用C++实现坐标转换的头文件代码#ifndef_坐标转换_H#define_坐标转换_H#include<beidou>//CGCS-2000北斗坐标参数constdoubleL=6378137.0;constdoublebianrate=1/298.257223563;constdouble德尔塔=0.0000001;typedefstructDikaerZuoBiaoXi{ doublex; doubley; doublez;}Dikaer;typedefDikaer*Dikaer2;//DikaerZuoBiaoXitypedefstructDadiZuoBiaoXi{ double经度; double纬度; double高;}Dadi;typedefDadi*Dadi2;//DadiZuoBiaoXitypedefstructDipingZuoBiaoXi{ double距离北; double距离东; double距离上;}Diping;typedefDiping*Diping2;//ZhanXinDiPingXianZuoBiaoXitypedefstructZhanXinDiPingXianZuoBiaoXi{ double范围; double方位角; double海拔高度;}ZhanXinDiPing;typedefZhanXinDiPing*ZhanXinDiPing2;//ZhanXinDiPingXianZuoBiaoXi//DikaerZuoBiaoToDadiZuoBiaovoidDikaerToDadi(Dadi2DM,Dikaer2ZH, doubledBanchangzhou,doubledBianrate);//DM:PointToDadi2;//ZH:PointToDikaer2;//dBanchangzhou:Banchangzhou;//dBianrate:Bianrate。//DadiZuoBiaoToDikaerZuoBiaovoidDadiToDikaer(Dikaer2ZH,Dadi2DM, doubledBanchangzhou,doubledBianrate);//ZH:PointToDikaer2;//DM:PointToDadi2;//dBanchangzhou:Banchangzhou;//dBianrate:Bianrate。//DikaerZuoBiaoToZhanxindipingZuoBiaovoidDikaerToZhanxindiping(Dadi2ZB, Dikaer2ZH, Dikaer2ZH2, doubledBanchangzhou, doubledBianrate);//ZB:PointToZhanxindiping;//DM:PointTODikaer;//ZH2:TheDikaerOfPointToZhanxin;//dBanchangzhou:Banchangzhou;//dBianrate:Bianrate。//ZhanXinDiPingZuoBiaoToZhanXinDiPing2ZuoBiaovoidZhanXinDiPingToZhanXinDiPing2(ZhanXinDiPing2ZH2,ZhanXinDiPingZB);//ZH2:PointToZhanXinDiPing2;//ZB:PointToZhanXinDiPing;//ZhanXinDiPing2ZuoBiaoToZhanXinDiPingZuoBiaovoidZhanXinDiPing2ToZhanXinDiPing(ZhanXinDiPingZB,ZhanXinDiPing2ZB2);//ZB:PointToZhanXinDiPing;//ZB2:PointToZhanXinDiPing2;#endif(2)用C++实现坐标转换的源文件代码#include"坐标转换.h"#include<zuobiao>#include<shuju>usingnamespacestd;voidDikaerToDadi(Dadi2DM,Dikaer2ZH,doubledBanchangzhou,doubledBianrate){ doublee2; e2=2*dBianrate-dBianrate*dBianrate; DM->经度=atan(ZH->y/ZH->x); doubleM,K,K1=0,P,P1; P1=atan(ZH->z/sqrt(ZH->x*ZH->x+ZH->y*ZH->y)); while(1) { M=sqrt(1-e2*sin(X1)*sin(X1)); K1=dBanchangzhou/M; P=atan((ZH->z+K1*e2*sin(X1))/sqrt(ZH->x*ZH->x+ZH->y*ZH->y)); if(fabs(X-X1)<德尔塔) break; else X1=X; } DM->纬度=X; K=dBanchangzhou/sqrt(1-e2*sin(DM->纬度)*sin(DM->纬度)); DM->高=sqrt(ZH->x*ZH->x+ZH->y*ZH->y)/cos(X)-K;}//DadiZuoBiaoToDikaerZuoBiaovoidDadiToDikaer(Dikaer2ZH,Dadi2DM,doubledBanchangzhou,doubledBianrateening){ doublee2; doubleO; e2=2*dBianrateening-dBianrateening*dBianrateening; O=dBanchangzhou/sqrt(1-e2*sin(DM->纬度)*sin(DM->纬度)); ZH->x=(O+DM->高)*cos(DM->纬度)*cos(DM->纬度); ZH->y=(O+DM->高)*cos(DM->纬度)*sin(DM->经度); ZH->z=(O*(1-e2)+DM->高)*sin(DM->纬度);}//DikaerZuoBiaoToZhanxindipingZuoBiaovoidDikaerToZhanxindiping(ZhanXinDiPing2ZB,Dikaer2ZH,Dikaer2ZHCenter,doubledBanchangzhou,doubledBianrate){ doubledx,dy,dz; dx=ZH->x-ZHCenter->x; dy=ZH->y-ZHCenter->y; dz=ZH->z-ZHCenter->z; DadiJU; JU=(Dadi2)malloc(sizeof(Dadi)); DikaerToDadi(JU,ZHCenter,dBanchangzhou,dBianrate); ZB->距离北=-sin(JU->纬度)*cos(JU->经度)*dx-sin(JU->纬度)*sin(JU->经度)*dy+cos(JU->纬度)*dz; ZB->距离东=-sin(JU->经度)*dx+cos(JU->经度)*dy; ZB->距离上=cos(JU->纬度)*cos(JU->longitude)*dx+cos(JU->纬度)*sin(JU->经度)*dy+sin(JU->纬度)*dz; free(JU);}//ZhanXinDiPingZuoBiaoToZhanXinDiPing2ZuoBiaovoidZhanXinDiPingToZhanXinDiPing2(ZhanXinDiPing2ZBp,ZhanXinDiPingZB){ ZBp->范围=sqrt(ZB->距离北*ZB->距离北+ZB->距离东*ZB->距离东+ZB->距离上*ZB->距离上); ZBp->方位角=atan(ZB->距离东/ZB->距离北); ZBp->海拔高度=asin(ZB->距离上/ZBp->范围);}//ZhanXinDiPing2ZuoBiaoToZhanXinDiPingZuoBiaovoidZhanXinDiPing2ToZhanXinDiPing(ZhanXinDiPingZB,ZhanXinDiPing2ZBp){ ZB->northing=ZBp->范围*cos(ZBp->海拔高度)*cos(ZBp->方位角); ZB->easting=ZBp->范围*cos(ZBp->海拔高度)*sin(ZBp->方位角); ZB->upping=ZBp->范围*sin(ZBp->海拔高度);(3)用C++实现坐标转换的main函数代码#include"坐标转换.h"#include<zuobiaozhuanhuan>usingnamespacestd;intmain(){//Dikaer(x,y,z)DikaerZuoBiao;DikaerZhongxinZuoBiao;//DadiZuoBiaoXiDadiZuoBiaoXiA;DadiZuoBiaoXiB;//ZhanXinDiPingC;//ZhanXinDiPing2D;//Dikaer;//BanchangzhoudoubledBanchangzhou=6378137.0;//BianratedoubledBianrate=1/298.257223563;cout<<"请输入笛卡尔坐标\n";cin>>ZuoBiao.x>>ZuoBiao.y>>ZuoBiao.z;if(ZuoBiao.x==0){ ZuoBiao.x==1e-6;}DikaerToDadi(&A,&ZuoBiao,dBanchangzhou,dBianrate);cout<<"转换为大地坐标高度:"<<A.height<<"维度:"<<A.latitude<<"经度:"<<A.longitude<<"\n";cout<<"请输入笛卡尔中心坐标\n";cin>>ZhongxinZuoBiao.x>>ZhongxinZuoBiao.y>>ZhongxinZuoBiao.z; if(ZhongxinZuoBiao.x==0){ ZhongxinZuoBiao.x==1e-6; } DikaerToZhanXinDiPing(&B,&ZuoBiao,&ZhongxinZuoBiao,dBanchangzhou,dBianrate);cout<<"转换为站心地平坐标距离北:"<<B.距离北:<<"距离东:"<<B.距离东<<"距离上:"<<B.距离上<<"\n"; system("pause"); return0;}(4)用C++实现坐标转换的运行结果如图4.1所示。图4.2用C++实现坐标转换的运行结果4.3用C++实现4颗卫星的定位4.3.1用C++实现4颗卫星定位的代码前面谈到,既然各个国家的定位系统有差异,那么所采用的时间准绳就有一定的差异,但是在全球化的今天,单凭一家的定位系统在地球上做到精准定位确实是由些吃力的,那么我们就可以考虑将不同国家的定位系统之间相互协调,相互合作,这样得到的位置信息就很全面了,但是不同国家的准绳不同,这时候用接收机协调多个系统就必须考虑这个问题。然而在接收机协调多个系统的实际操作中,并不做时间系统的转换,因为那确实有些复杂,把功夫放在转换上会消耗不必要的资源,而且转换也会有一定的误差,既然这样,那么技术人员索性直接把不同系统之间的时间差提取出来,当作未知数进行求解,命名为“接收机钟差”,用此方法不仅可以求出未知数,而且可以降低误差,真的是一举两得。(1)坐标基准与转换的C++代码如下:#include<zuobiao>#include<jizhun>#include<zhuanhuan>usingnamespacestd;#defineLIGHT_SPEED300000000voidGetInput(vector<vector<double>>&diff);doubleCalculateRes(vector<double>res,vector<double>diff);voidtrain(vector<double>&res,vector<vector<double>>diff);voidBackForward(vector<double>&res,vector<double>diff,doubleloss,doublelearningRate=5e-17);voidPrintRes(vector<double>res);voidCheck(vector<double>res,vector<vector<double>>diff);intmain(){vector<vector<double>>diff;vector<double>res={100000,-100000,400000,100000};GetInput(diff);train(res,diff);PrintRes(res);//Check(res,diff); system("PAUSE");return0;}doubleCalculateRes(vector<double>res,vector<double>diff){doublex2=(res[0]-diff[0])*(res[0]-diff[0]);doubley2=(res[1]-diff[1])*(res[1]-diff[1]);doublez2=(res[2]-diff[2])*(res[2]-diff[2]);doublet2=(res[3]-diff[3])*(res[3]-diff[3]);returnx2+y2+z2-t2;}voidGetInput(vector<vector<double>>&diff){for(inti=0;i<4;i++){vector<double>point;cout<<"请输入第"<<i+1<<"个卫星坐标:";doubletemp;cin>>temp;point.push_back(temp);cin>>temp;point.push_back(temp);cin>>temp;point.push_back(temp);cout<<"请输入第"<<i+1<<"个卫星发射时刻和接受时刻的时间间隔t:";cin>>temp;point.push_back(temp*LIGHT_SPEED);diff.push_back(point);}}voidtrain(vector<double>&res,vector<vector<double>>diff){doubleloss;inttimes=10000;for(intepoh=0;epoh<times;epoh++){for(intj=0;j<diff.size();j++){doublepredict=CalculateRes(res,diff[j]);doubleloss=predict-0;BackForward(res,diff[j],loss);//cout<<"epoh"<<epoh*4+j<<":predict="<<predict<<",loss="<<loss<<endl;}}}voidBackForward(vector<double>&res,vector<double>diff,doubleloss,doublelearningRate){for(inti=0;i<res.size();i++){//cout<<(res[i]-diff[i])*loss*learningRate<<endl;if(i!=res.size()-1)res[i]=res[i]-2*(res[i]-diff[i])*learningRate*loss;elseres[i]=res[i]+2*(res[i]-diff[i])*learningRate*loss;}}voidPrintRes(vector<double>res){printf("\n预测的用户位置:(");printf("%.3lf",res[0]);printf(",");printf("%.3lf",res[1]);printf(",");printf("%.3lf",res[2]);printf(")\n");printf("预测的时钟差是:%.3lf\n",res[3]/LIGHT_SPEED);}voidCheck(vector<double>res,vector<vector<double>>diff){printf("\n验算:\n");for(inti=0;i<diff.size();i++){doubleleft,right;left=diff[i][3];right=sqrt((diff[i][0]-res[0])*(diff[i][0]-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论