GNSS仿真测试之三种常用坐标系与转换

作者介绍

在当今的全球导航卫星系统(GNSS)技术领域,仿真测试是评估和验证GNSS接收机性能的关键环节,全球导航卫星系统(GNSS)仿真测试是确保GNSS接收机和导航解决方案在实际部署前能够正确、可靠地工作的关键步骤。无论是为了确保定位精度、测试信号干扰的影响,还是评估在复杂环境下的导航可靠性,掌握正确的坐标系知识对于进行有效的仿真测试至关重要。

在GNSS仿真测试的领域,三种关键的坐标系构成了我们工作的核心:地心地固坐标系(ECEF)、地理坐标系(LLA,包括纬度、经度和海拔高度)以及本地水平坐标系(ENU,即东-北-上)。

本文不仅将详细介绍这三种坐标系的概念和特点,还将探讨它们在GNSS仿真测试中的具体应用。我们将学习如何在实际的仿真环境中使用这些坐标系,以及如何在不同坐标系之间进行精确的转换。这些转换对于确保仿真测试的准确性至关重要,因为它们允许我们将卫星的全球位置与接收机的局部视角相匹配。掌握这些坐标系的转换技能都将极大地提升您在GNSS仿真测试中的工作效率和成果的质量。

一、坐标系介绍

1.ECFF(Earth-Centered, Earth-Fixed)

ECEF坐标系是一个笛卡尔坐标系,一般中文叫做地心地固坐标系,其原点位于地球质心,X轴通过本初子午面和赤道的交点,Y轴位于赤道面上,通过东经90度,Z轴指向北极点。这个坐标系随着地球一起旋转,因此它固定在地球上。比如,鸟巢的ECEF坐标约为(-2175804.26,4383129.27,4077167.07),单位为米(m)。

在ECEF坐标系中,地球上的任何点都可以用三个坐标值(X, Y, Z)来表示,分别表示该点相对于地球质心的位置。这个坐标系对于全球定位系统(GPS)和其他GNSS系统尤其重要,因为卫星的位置通常以ECEF坐标来表示,经常被用来精确描述卫星的位置和计算卫星与接收机之间的距离。

2.LLA(Latitude, Longitude, Altitude)

LLA坐标系是一个球面坐标系,一般称为地理坐标系,或根据三轴命名为纬经高坐标系,用于描述地球上某一点的位置。它由三个参数组成:

● 纬度(Latitude):指从赤道(0度纬度)到北极(90度北纬)或南极(90度南纬)的角度测量,它确定了地球表面上一个点的东西位置,范围为-90°~90°,

● 经度(Longitude):指从本初子午线(0度经度,通过格林尼治天文台)到东经或西经的角度测量,它确定了地球表面上一个点的南北位置,范围为-180°~180°(或0~360°),

● 海拔高度(Altitude):指从地球表面(通常是平均海平面)到某一点的垂直距离。这个高度可以是从参考椭球体(如WGS84椭球体)的表面计算出的几何高度,也可以是从平均海平面计算出的正高或从大地水准面计算出的正常高。

比如,鸟巢的LLA坐标为(39.99°,116.40°,50m)。

LLA坐标系是我们在日常生活中最常接触到的坐标系,如地图制作、导航和地理信息系统(GIS)中广泛使用,或用于将地球表面的位置转换为其他坐标系。在GNSS仿真测试中,LLA坐标系常用于定义接收机的初始位置和移动路径。

3.ENU(East-North-Up)

ENU坐标系是一个笛卡尔坐标系,是一个局部的本地水平坐标系,也称为东北天(东北上)坐标系。其原点位于地球表面上的一个特定点,通常与接收机的位置相对应。在ENU坐标系中,东轴(East)指向当地的东方向,北轴(North)指向当地的北方向,上轴(Up)垂直于水平面,指向天空。本地原点由大地坐标( lat0、lon0、h0 )描述。请注意,原点不一定位于椭球体的表面上。

若以鸟巢本身为原点,那么他的ENU坐标为(0,0,0),单位为m。

ENU坐标系常用于描述接收机附近的物体运动,如车辆的行驶轨迹或无人机的飞行路径,因为它提供了一个与接收机位置直接相关的坐标系。

4.三个坐标系的对比

除此之外,还有一些常用的坐标系,例如NED坐标系(东北下坐标系)、AER坐标系(方位角-仰角-范围本地坐标系)等。

二、三个坐标系的转换

ECEF(地心地固坐标系)、LLA(地理坐标系)和ENU(东-北-上坐标系)之间的转换是通过一系列数学公式实现的。以下是这些坐标系之间转换的基本方法:

1.ECEF到LLA的转换:

这种转换涉及到从笛卡尔坐标(X, Y, Z)到球面坐标(纬度, 经度, 海拔高度)的转换。

● 首先,可以通过X和Y坐标计算出经度,通过Z坐标和地球的扁率计算出纬度。

● 然后,使用地球的参考椭球模型(如WGS84)来计算海拔高度。

2.LLA到ECEF的转换:

这种转换是从球面坐标到笛卡尔坐标的转换。

● 经度和纬度可以直接用于计算ECEF坐标中的X和Y值。

● 海拔高度和地球的参考椭球模型用于计算Z值。

3.ECEF到ENU的转换:

这种转换通常需要一个参考点,该点的LLA坐标已知。

● 首先,将参考点的ECEF坐标转换为LLA坐标。

● 然后,使用参考点的LLA坐标,通过一系列旋转和平移变换,将ECEF坐标转换为ENU坐标。

4.ENU到ECEF的转换:

这是ECEF到ENU转换的逆过程。

● 首先,根据参考点的LLA坐标计算坐标点的LLA坐标

● 经度和纬度可以直接用于计算ECEF坐标中的X和Y

● 海拔高度和地球的参考椭球模型用于计算Z值。

这些转换涉及到复杂的数学计算,包括球面三角学、旋转矩阵和椭球几何学。

在实际应用中,这些转换通常通过专业的数学库或GIS软件来实现,如PROJ、GDAL或MATLAB的地理工具箱等。

德思特AutoTest自动化测试平台为用户提供三种坐标轴的快速转换工具,简单输入现有坐标点即可完成对其他两个坐标系的转换。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/14575.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【git】学习记录: 贮藏功能

Git 贮藏修改是一种临时存储工作目录中已经修改但尚未提交的更改的机制。通过贮藏修改,你可以将当前的工作目录状态保存起来,以便你可以在之后的时间点重新应用这些更改,或者在不同的分支间切换时避免冲突。 要使用 Git 贮藏修改&#xff0c…

Linux(centos)常用命令

Linux(Centos)常用命令使用说明文档 切换到/home目录下 使用cd命令切换目录,例如: cd /home列出/home目录下的所有文件 使用ls命令列出目录下的文件和子目录,例如: ls /home新建目录dir1 使用mkdir命…

头歌OpenGauss数据库-I.复杂查询第1关:获取前N名成绩

本关任务:编写函数来实现获取前N名成绩的方法。 提示:前面的实验没有提供编写自定义函数的示例,需要参考OpenGauss数据库文档学习自定义函数的使用。 score表内容如下: IdScore13.5223.6534.2343.8554.2363.65 --#请在BEGIN - END…

python windows 开发.exe程序笔记

import win32api import win32gui import win32con import time import tkinter as tk## pyinstaller --onefile t4.py 将python 代码打包为windows可执行文件 .exe ## airtext 大漠 def clickGoogle():hw win32gui.FindWindow("Chrome_WidgetWin_1", "新标…

解决Redis 缓存雪崩(过期时间不一致) 和 缓存穿透(黑名单)

解决Redis 缓存雪崩(过期时间不一致) 和 缓存穿透(黑名单) public Product getdetailById(Integer id) {String key "product." id;// 查询黑名单中是否有该keyBoolean b hashOperations.hasKey(PROODUCT_DETAIL_B…

算法 Hw7

Hw 7 Graph Algorithm 1 Edge detection2 Reachability3 Bitonic shortest paths 1 Edge detection 由 Cut Property 可知:如果 e 是从某个集合 S 到补集 V−S 的开销最小的边,则 e 一定所有最小生成树中。 由 Cycle Property 可知:如果 e 是…

Gradle常见问题及总结

使用android studio开发项目,难免遇到gradle相关的错误,在此总结。 gradle插件与gradle home版本关系错误 参考更新 Gradle Gradle下载太慢 Index of /gradle/ (tencent.com) 是国内下载地址,手动下载对应版本即可 缓存不刷新 问题描述 maven发布…

jenkins插件之xunit

分析测试工具执行的结果,并图形化,比如phpunit,phpstan,可分析junit格式的结果 安装jenkins插件 搜索xunit并安装 项目配置 配置 - Build Steps 您的项目 - 配置 - Build Steps, 新增 Run with timeout 超时时间根据实际情况配置 Build…

Day38 贪心算法part05

LC435无重叠区间(未掌握) 思路:先对数组进行排序,找到非重叠的区间的个数,然后区间的总数减去非重叠区间的个数即是需要移除的区间的个数与LC452用最少数量的箭引爆气球类似,但是不同的是[1,2]和[2,3]在此题并不是重叠区间但是在…

oracle怎么处理json格式

向数据库导入json相关jar包 loadjava -r -f -u bsuser/XXXX192.168.10.31/bsorcl json.jar 要删除的话,删除指定jar dropjava -u bsuser/XXXX192.168.10.31/bsorcl json.jar select * from user_java_classes 然后我们就可以取到json串中任意节点的值

Linux完整版命令大全(四)

2. linux系统设置命令 alias 功能说明:设置指令的别名。语  法:alias[别名][指令名称]补充说明:用户可利用alias,自定指令的别名。若仅输入alias,则可列出目前所有的别名设置。 alias的效力仅及于该次登入的操作。…

行列视(RCV)部署在互联网还是部署在企业内部?

行列视(RCV)的部署方式可以根据企业的具体需求和情况来灵活选择。它既可以部署在互联网上,也可以部署在企业内部。 对于希望实现远程访问、多地点协同工作或者与第三方服务集成等需求的企业,可以选择将行列视(RCV&…

Postgresql源码(129)JIT函数中如何使用PG的类型llvmjit_types

0 总结 llvmjit_types文件分三部分 类型定义:llvm通过变量找到对应结构体的定义,在通过结构体内的偏移量宏使用成员变量。模版函数定义: 第一:AttributeTemplate被当做一个函数属性的模板(例如nofree、nosync等clang…

SpringBoot项目中redis序列化和反序列化LocalDateTime失败

实体类中包含了LocalDateTime 类型的属性,把实体类数据存入Redis后变成这样: 此时,存入redis不会报错,但是从redis获取的时候,会报错: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Ca…

Springboot项目打包:将依赖的jar包输出到指定目录

场景 公司要对springboot项目依赖的jar包进行升级,但是遇到一个问题,项目打包之后,没办法看到他里面依赖的jar包,版本到底是不是升上去了,没办法看到。 下面是项目打的jar包 我们通过反编译工具jdgui,来…

VUE3和VUE2

VUE3和VUE2 上一篇文章中,我们对VUE3进行了一个初步的认识了解,本篇文章我们来进一步学习一下,顺便看一下VUE2的写法VUE3是否能做到兼容😀。 一、新建组件 我们在components中新建一个组件,名称为Peron,…

缓存降级

当Redis缓存出现问题或者无法正常工作时,需要有一种应对措施,避免直接访问数据库而导致整个系统瘫痪。缓存降级就是这样一种机制。 主要的缓存降级策略包括: 本地缓存降级 当Redis缓存不可用时,可以先尝试使用本地进程内缓存,如Guava Cache或Caffeine等。这样可以减少对Redis…

阴影映射(线段树)

实时阴影是电子游戏中最为重要的画面效果之一。在计算机图形学中,通常使用阴影映射方法来实现实时阴影。 游戏开发部正在开发一款 2D 游戏,同时希望能够在 2D 游戏中模仿 3D 游戏的光影效果,请帮帮游戏开发部! 给定 x-y 平面上的…

再次学习History.scrollRestoration

再次学习History.scrollRestoration 之前在react.dev的源代码中了解到了这个HIstory的属性,当时写了一篇笔记来记录我对它的理解,现在看来还是一知半解。所以今天打算重新学习一下这个属性,主要从属性以及所属对象的介绍、使用方法&#xff0…

每日一题(2)——100~200间的素数

方法一&#xff1a; public class suCount {public static void main(String[] args){int sum0;c1:for(int i100;i<200;i){for(int j2;j<i;j){if(i%j0)continue c1;//continue中断循环&#xff0c;且返回外层循环&#xff0c;进入下一次遍历else if(ji-1){System.out.pr…