自动驾驶中使用到的坐标转换

2023-05-16


一、简介


1.1 地心地固直角坐标系(ECEF)


  也叫地心地固直角坐标系。其原点为地球的质心,x轴延伸通过本初子午线(0度经度)和赤道(0deglatitude)的交点。 z轴延伸通过的北极(即,与地球旋转轴重合)。 y轴完成右手坐标系,穿过赤道和90度经度。

在这里插入图片描述
1.2 WGS-84坐标(LLA)

        也就是也叫经纬高坐标系(经度(longitude),纬度(latitude)和高度(altitude)LLA坐标系)。,全球地理坐标系、大地坐标系。可以说是最为广泛应用的一个地球坐标系,它给出一点的大地纬度、大地经度和大地高程而更加直观地告诉我们该点在地球中的位置,故又被称作纬经高坐标系。WGS-84坐标系的X轴指向BIH(国际时间服务机构)1984.0定义的零子午面(Greenwich)和协议地球极(CTP)赤道的交点。Z轴指向CTP方向。Y轴与X、Z轴构成右手坐标系。

  一句话解释就是:把前面提到的ECEF坐标系用在GPS中,就是WGS-84坐标系。
其中:
(1):大地纬度是过用户点P的基准椭球面法线与赤道面的夹角。纬度值在-90°到+90°之间。北半球为正,南半球为负。

(2):大地经度是过用户点P的子午面与本初子午线之间的夹角。经度值在-180°到+180°之间。

(3):大地高度h是过用户点P到基准椭球面的法线距离,基准椭球面以内为负,以外为正。

在这里插入图片描述

1.3 东北天坐标系(ENU)

        也叫站心坐标系以用户所在位置P为坐标原点。

  坐标系定义为: X轴:指向东边 Y轴:指向北边 Z轴:指向天顶

  ENU局部坐标系采用三维直角坐标系来描述地球表面,实际应用较为困难,因此一般使用简化后的二维投影坐标系来描述。在众多二维投影坐标系中,统一横轴墨卡托(The Universal Transverse Mercator ,UTM)坐标系是一种应用较为广泛的一种。UTM 坐标系统使用基于网格的方法表示坐标,它将地球分为 60 个经度区,每个区包含6度的经度范围,每个区内的坐标均基于横轴墨卡托投影,如下图所示:

1.4 车身坐标系—右-前-天坐标(RFU)

        车身坐标系—右-前-天坐标(RFU)的定义如下:

        X轴:面向车辆前方,右手所指方向

        Y轴:车辆前进方向

        Z轴:与地面垂直,指向车顶方向
        注意:车辆参考点为后轴中心。该坐标系一般用于感知模块。

如下图所示:

1.5 车身坐标系—前-左-天坐标(FLU)

        车身坐标系—前-左-天坐标(FLU)的定义如下:

        X轴:车辆前进方向
        Y轴:面向车辆前方,左手所指方向
        Z轴:与地面垂直,指向车顶方向
        注意:车辆参考点为后轴中心。该坐标系常用于实时相对地图模块。将RFU坐标系向左旋转90度即可得到FLU坐标系。

车身坐标系

1.6 Frenet坐标系

Frenet坐标系又称Frenet–Serret公式,Apollo项目文档未提及,但在规划模块中广泛使用。Frenet–Serret公式用于描述粒子在三维欧氏空间 R 3 ℝ^3 R3内沿一条连续可微曲线的运动学特征,如下图所示:

二、坐标系间的转换

在这里插入图片描述
2.1 LLA坐标系转ECEF坐标系

(1)LLA坐标系下的(lon,lat,alt)转换为ECEF坐标系下点(X,Y,Z)

 在这里插入图片描述

(2)其中e为椭球偏心率,N为基准椭球体的曲率半径

在这里插入图片描述

(3)由于WGS-84下极扁率,偏心率e和极扁率f之间的关系:

在这里插入图片描述

(4) 坐标转换公式也可以为

在这里插入图片描述
2.2 ECEF坐标系转LLA坐标系

ECEF坐标系下点(X,Y,Z)转换为LLA坐标系下的(lon,lat,alt)
一开始lon是未知的,可以假设为0,经过几次迭代之后就能收敛

 在这里插入图片描述

2.3 ECEF坐标系转ENU坐标系

在这里插入图片描述
2.4 ENU坐标系转ECEF坐标系

 在这里插入图片描述

 
2.5 LLA坐标系直接转ENU坐标系

        上述可以看到,从LLA坐标系转换到enu坐标系有较多计算量,在考虑地球偏心率e ee很小的前提下,可以做一定的近似公式计算

在这里插入图片描述

2.6 Frenet坐标系与笛卡尔坐标系的转换公式

        为什么要将笛卡尔坐标系转换为Frenet坐标系?因为可以这样可以将车辆的二维运动问题解耦合为两个一维运动问题。显然,一维问题比二维问题容易求解,这就是笛卡尔坐标系转换为Frenet坐标系的必要性。

        Apollo项目中Frenet坐标系与笛卡尔坐标系转换代码:函数声明文件planning/math/frame_conversion/cartesian_frenet_conversion.h

原文链接:https://blog.csdn.net/davidhopper/article/details/79162385

2.7 LLA坐标系转局部笛卡尔积坐标系

可使用C++库: GeographicLib download | SourceForge.net  中的GeographicLib::LocalCartesion::Forward(double lat, double lon, double h, double &x, double &y, double &z);

2.8 大地坐标转换到车辆坐标系

        通过高精地图或V2X接收到的消息或通过定位模块输入的一系列坐标为WGS84坐标点,而感知融合模块输出的障碍物数据,以及前视摄像头识别的车道线信息,都基于车辆坐标系,因此需要将高精地图的车道数据转换为车辆坐标系下的轨迹点进行进一步处理。

        车辆坐标系以车辆后轴中心为原点,沿车身纵轴向向前为x正,垂直于车身纵轴向左为y正,向上为z正,为右手系。

        从大地坐标系转换到车辆坐标系可以分成两步。第一步是将数据点从大地坐标系转换到空间直角坐标系。其中:大地坐标表示顺序为:纬度B、经度L、海拔H,空间直角坐标表示方法:X、Y、Z,第二步是将空间坐标系转换到车辆坐标。

大地坐标系下BLH与XYZ相互转换的方法如下:(同2.1)

        转换公式如下:

        式中(B,L)为目标点的经纬度坐标,(X,Y,Z)为转换后的平面坐标,坐标原点为零纬线零经线(格林威治子午线), k 为纬度B处的卯酉圈曲率半径,  ,  a为地球长轴半径,H为相对椭球面的高度,e为椭球第一偏心率。

        计算时,由于计算的是目标点以车辆为原点的平面坐标,将车辆经度线作为经线参考线,则上式中cosL项可近似为1;所规划的为2D路径,因此高度H可以椭球0高面统一计算,H=0。

空间直角坐标系到车辆坐标系的转换

        空间直角坐标系到车辆坐标系的转换,主要是将空间坐标系的X,Y轴转换车辆坐标系。转换起点在空间坐标系的坐标值为X0,Y0,起点位置的车辆航向为θ ,待转换点的空间直角坐标为XT,YT。通过坐标旋转可以得到,待转换点在车辆坐标下的坐标为:

参考:

https://blog.csdn.net/qq_34213260/article/details/109133847 https://blog.csdn.net/davidhopper/article/details/79162385

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自动驾驶中使用到的坐标转换 的相关文章

  • Pixhawk—添加一个自定义传感器—超声波(串口方式)

    xfeff xfeff 版权声明 xff1a 本文为博主 原创 文章 xff0c 未经博主允许可以转载 xff0c 注明博客出处 xff1a http blog csdn net FreeApe 目录 43 Pixhawk添加一个自定义传感
  • parson例说

    例说 以JSON中国网站的例子 xff0c 测试代码 include 34 parson h 34 include lt stdio h gt include lt stdlib h gt void test write void void
  • IAR编译优化

    IAREWARM编译器和其他厂家的C编译器相比非常高效 但是当程序里面包含对时序要求比较严格的代码的时候 IAR常常会把这些代码过渡优化 破坏了时序的要求 造成程序错误 在程序代码比较紧的时候又必须优化 可以在要求比较严格的代码的函数前面
  • 在树莓派上使用GPS模块

    GPSD介绍 GPSD是一个Linux下的一个守护进程 xff0c 用以侦听来自GPS接收器的位置等信息 xff0c 并将这些位置信息转换成一种简化的格式 GPSD支持二十多种不同GPS输出格式的GPS接收机 xff0c 例如NMEA As
  • 用两片74HC138组合成4/16译码器

    译码器很多 xff0c 常见的有2路译码器 xff08 74HC139D 2路2 4译码器 多路复用器 xff09 xff0c 3 8译码器 xff08 74HC138D 三八译码器 解码器 xff09 和4 16译码器 xff08 74H
  • virtual method but non-virtual destructor

    有虚函数 xff08 纯虚函数 xff09 就应该有虚析构函数 class Base public virtual void func 61 0 virtual Base 注意 xff0c 有 实现 class Child public B
  • STM32使用C标准库time.h里面的时间时钟函数

    标准C里面已经定义好时间日期库time h xff0c 在嵌入式里面并没有被限制使用 下面我们看一下怎样在IAR中使用time h库 有四个与时间相关的类型 xff1a clock t time t size t 和 tm 类型 clock
  • ros 学习之计算机视觉资料总结

    ros 学习之计算机视觉 ros高效编程Visual ServoingAugmented Reality xff08 AR xff09 Perception and object recognitionvisual odometry 古月居
  • 数字信号处理 离散时间信号

    1 时域离散信号 xff1a 对模拟信号进行等间隔采样 xff0c 即得到时域离散信号 xff08 时间离散 xff0c 但是幅度没有量化 xff0c 离散 xff09 1 xff09 例如 对连续信号Xa t 以等间隔T对其进行采样 xf
  • 复指数函数

    复指数信号 百度百科 复指数信号是指数信号的指数因子是复数时 xff0c 称之为复指数信号 复指数信号在物理上是不可实现的 xff0c 但是它概括了多种情况 利用复指数信号可以表示常见的普通信号 xff0c 如直流信号 指数信号 正弦信号等
  • Make 详解

    1 windows的IDE中自带Makefile 但是unix和linux需要自己写 2 makefile除了指定文件的编译顺序和规则以外 xff0c 也可以执行操作系统的命令 3 make 是一个命令工具 xff0c 是一个解释makef
  • 四旋翼无人机飞行控制算法H∞控制

    PID控制之所以被广泛应用 xff0c 就是因为它是一个无模型控制器 也就是说 xff0c 不管控制对象是什么 xff0c PID控制器的公式都是现成的 xff0c 然后你去修改三个参数试凑就行了 这对理论基础较差的工程技术人员来说用起来是
  • 【无标题】

    linux常用的压缩格式为 xff1a zip tar gz tar tar bz2等 xff0c 不同的方式消耗的时间和压缩比差异比较大 1 zip zip r test zip test r 表示当前test是个目录 2 解压命令 xf
  • 【无标题】

    如下是读取16bit音频raw文件的程序 xff0c 其中的short就是为了16bit准备的 xff0c 一般的固定频率的单频 xff08 1khz之类 xff09 的音频文件是固定的循环 xff0c 比如1khz是每8个点循环一次 xf
  • select 的使用

    select是在指定时间内 xff08 最后一个参数指定的时间 xff09 轮询指定fd集合的接口 1 需要包含的头文件 include lt sys time h gt select是在指定时间内轮询 xff0c 所以有时间相关的参数 i
  • KEIL修改背景色

    本篇文章借鉴 于旺园先生的 平时在用keil软件比较多 xff0c 看白色背景比较多有点伤眼睛 xff0c 现在我们来设置一下keil的背景 xff0c 来保护我们的眼睛吧 效果图 xff1a 1 打开配置界面 color amp font
  • QT表格的实现

    本文章复制于别人的博客 xff0c 是因为我怕原创者把原著删掉 xff0c 所以就复制下来了 xff0c 如有冒犯 xff0c 请多见谅 xff01 一 简介 QTableWidget是QT对话框设计中常用的显示数据表格的控件 xff0c
  • QT 表格

    在公司公示Qt开发一段时间 xff0c 表格用到不少 xff0c 所以 xff0c 今天在这做个总结 xff0c 防止以后忘记 下面为个人模拟Windows资源管理器的一个表单 xff08 写的比較粗糙 xff0c 谅解一下 xff09 一
  • 格力空调红外编码

    格力空调遥控器红外编码透析 xff08 长码 xff09 2016年11月04日 13 13 19 阅读数 xff1a 5516 格力空调遥控器 xff08 YB0F2 xff09 红外码组成如下 xff0c 按解码顺序排列 起始码 xff

随机推荐

  • android相机Camera.Parameters所有的参数值

    最近两天一直在看android相机的参数设置 xff0c Camera Parameters中属性值非常的多 xff0c 我索性就把就调用的flatten 方法 xff0c 将设置的参数值都打印出来了 xff0c 方便以后查看 xff0c
  • 酒店管理项目

    数据库介绍 user表 xff1a 这是一个管理员的表 xff0c 用于存储可对后台进行操作的人员信息表 xff0c 其中重要的字段包括包括主键ID xff0c 与权限等级 xff0c 密码 room表 xff1a 作为存储房间信息的表 x
  • 无人机——电池、电机、螺旋桨搭配

    1 电机 1 xff09 电机KV值 KV值是每1V的电压下电机每分钟空转的转速 例如KV800 在1V的电压下空转转速是800转每分钟 那么10V的电压下是8000转每分钟的空转转速 KV值越小 xff0c 同等电压下转速越低 xff0c
  • 姿态和位置,四旋翼的控制流程

    xfeff xfeff 姿态和位置计算 xff1a EKF 位置控制 xff1a PID 姿态控制 xff1a 姿态环是直接P控制 xff0c 姿态率是PID控制 主要是滤波算法和姿态算法还有PID算法 滤波算法主要是将获取到的陀螺仪和加速
  • Jetson nano 通过 vnc 实现远程桌面控制(已在nano实现)

    目录 一 linux环境 xff1a Ubuntu 18 04 二 nano设置VNC服务 三 设置开机自启动 四 设置静态IP 一 linux环境 xff1a Ubuntu 18 04 jetson nano用的是ubuntu18 04的
  • make px4_sitl_default gazebo出错

    出现错误时候 xff0c 可以在固件文件夹下先更新下 make clean sudo apt get update sudo apt get upgrade 错误1 xff1a 编译make px4 sitl default gazebo
  • PX4 与 MAVROS 实现offboard

    目录 一 虚拟机仿真环境 1 创建工作空间 2 创建ROS节点功能包 3 运行PX4的gazebo仿真 4 启动PX4与Mavros之间的连接 二 真机控制 1 硬件连接 2 软件设置 3 出现问题 Ubuntu xff1a 20 04 x
  • AprilTag_ros的使用

    目录 前言 一 usb摄像头的安装和使用 二 AprilTag ros包的安装 三 单目摄像机的标定 四 AprilTag ros的使用 五 其他 前言 平台 xff1a VM虚拟机 ROS版本 xff1a noetic Ubuntu xf
  • make px4_sitl_default gazebo 建立PX4仿真环境的各种坑

    前言 xff1a 平台 xff1a VM 虚拟机 Ubuntu18 04 gazebo9 一 执行组件更新总是各种中断 git submodule update init recursive 众所周知这是墙墙的故事 xff0c 所以进行了机
  • Jetson nano刷机安装系统

    1 下载系统镜像 可以到官网上下载镜像 xff0c 英伟达官网 在上面选择合适的镜像文件下载 2 格式化内存卡 需要下载格式化tf卡的工具SD Memory Card Formatter xff0c 读者可以也自行下载 格式化时候就像下图
  • 继电器的使用

    继电器使用 继电器基本说明 继电器就相当于一个开关 xff0c 接在任意线上 xff0c 通过控制信号下控制通断 xff1b 一般是断开状态 xff0c 此时线就断开了 xff0c 没导通 xff1b 在控制信号作用下继电器闭合 xff0c
  • 在树莓派上使用火焰,声音,震动,光敏传感器

    作为一个软件工程专业的学生 xff0c 对传感器等硬件的使用一直不太顺手 xff0c 而在树莓派使用Python的RPi GPIO xff0c 进行传感器等硬件的使用却是非常方便 而且使用树莓派这个网络功能强大的控制中心 xff0c 其在物
  • UCOSIII---信号量

    UCOSIII 信号量 概述PV原语函数接口创建信号量等待信号量释放信号量 例程注意 优先级反转概述解决方案注意事项 概述 信号量常用于任务的同步 xff0c 通过该信号 xff0c 就能够控制某个任务的执行 xff0c 这个信号具有计数值
  • 十分钟读懂『卡尔曼滤波算法』

    我是勤劳的搬运工 xff0c 转自 xff1a 1 http blog csdn net karen99 article details 7771743 2 http blog csdn net tudouniurou article de
  • Pixhawk基于Radio地面站发送指令

    xfeff xfeff px4原生固件提供offboard飞行模式 xff0c Offboard模式是使用外部电脑 xff08 软件 xff09 与pixhawk相连 xff0c 并进行控制 在室内室外都可使用该模式 xff0c 标准代码都
  • IDEA中SpringBoot出错问题

    1 新建项目时 xff0c 出现 Error java 无效的标记 parameters 或者 Error java 无效的源发行版 13 等这些问题时 xff0c 需要看下project setting中的各种配置 xff0c 注意以下图
  • 程序 = 数据结构 + 算法

    我们编写程序的目的就是与真实世界交互 xff0c 解决真实世界的问题 xff0c 帮助真实世界提高运行效率与改善运行质量 所以我们就需要对真实世界事物体的重要属性进行提炼 xff0c 并映射到程序世界中 xff0c 这就是所谓的对真实世界的
  • C++中的::

    34 34 在C 43 43 中表示作用域 xff0c 和所属关系 34 34 是运算符中等级最高的 xff0c 它分为三种 xff0c 分别如下 xff1a 一 作用域符号 xff1a 作用域符号 的前面一般是类名称 xff0c 后面一般
  • Ubuntu16桌面版安装realsense SDK

    Ubuntu16桌面版安装realsense SDK 1 下载realsense master 官网下载连接 xff1a https github com IntelRealSense librealsense 2 解压realsense
  • 自动驾驶中使用到的坐标转换

    一 简介 1 1 地心地固直角坐标系 xff08 ECEF xff09 也叫地心地固直角坐标系 其原点为地球的质心 xff0c x轴延伸通过本初子午线 xff08 0度经度 xff09 和赤道 xff08 0deglatitude xff0