梳理自动驾驶中的各类坐标系
目录
自动驾驶中的坐标系定义
关于坐标系的定义
几大常用坐标系
世界坐标系
自车坐标系
传感器坐标系
激光雷达坐标系
相机坐标系
如何理解坐标转换
机器人基础中的坐标转换概念
左乘右乘的概念
对左乘右乘的理解
再谈自动驾驶中的坐标转换
本节参考文献
自动驾驶中的坐标系定义
关于坐标系的定义
左手坐标系:以左手坐标系图示为例,通常拇指指向为X轴正方向,食指指向为Y轴正方向,中指指向为Z轴正方向;沿某坐标轴负方向朝向看去的逆时针旋转方向为正方向。右手坐标系:以右手坐标系图示为例,通常拇指指向为X轴正方向,食指指向为Y轴正方向,中指指向为Z轴正方向;沿某坐标轴负方向朝向看去的顺时针旋转方向为正方向。
几大常用坐标系
世界坐标系
世界坐标系,通常指的WGS-84,也就是经纬高(经度、纬度、高度)坐标系,一般在规划控制等模块用处比较多,其定义如下。
WGS-84坐标系的X轴指向BIH(国际时间服务机构)1984.0定义的零子午面(Greenwich)和协议地球极(CTP)赤道的交点。Z轴指向CTP方向。Y轴与X、Z轴构成右手坐标系。
自车坐标系
在常见的自动驾驶数据集中,自车坐标系通常遵循右手坐标系,坐标原点位于车辆后方车轴的中心地平面上。定义车辆前进的方向为X轴正方向,车辆左侧方向指向Y轴正方向,自地平面指向天空方向为Z轴正方向。这种指向又被形象的称为前左天坐标系。注意,对于不同的测试车辆可能具体的坐标定义不一致。
为了形象方便描述车辆位姿引入了欧拉角,如上图所示为欧拉角的物理意义的形象表达。在自动驾驶中通常定义:Roll为沿X轴的逆时针转动,即车辆翻滚角;Pitch为沿Y轴的逆时针转动,即车辆俯仰角;Yaw为沿Z轴的逆时针转动,为车辆偏航角。
传感器坐标系
如下图所示,自动驾驶车辆可能包含多类传感设备,例如camera、lidar、radar等。每类传感器测量的数据都是直接在自身的传感器坐标系中进行描述的。以nuScence数据集内的激光雷达传感器、相机为例浅析传感器坐标系的定义,其他传感器不做赘述。
激光雷达坐标系
如图所示的nuScenes数据集针对激光雷达坐标系的定义(右手坐标系):坐标原点为激光雷达传感器中心,车辆右侧指向坐标系X轴正方向,前进方向指向坐标系Y轴正方向。
相机坐标系
如图所示的nuScenes数据集针对前视Cmera坐标系的定义(左手坐标系):坐标原点为前视摄像头为中心,车辆右侧指向坐标系X轴正方向,前进方向指向坐标系Z轴正方向。
如何理解坐标转换
机器人基础中的坐标转换概念
左乘右乘的概念
将尽六、七年前的机器人基础的相关知识,已经忘记的差不多了,便也不从基础的理论推导讲起,直接那大家的说法或者结论,就是:左乘,是指的旋转运动针对固定的坐标系而言;而右乘,是指旋转的运动针对相对的坐标系而言(这里的相对坐标系的概念类似于我们之前讲的欧拉角)。
对左乘右乘的理解
换句话说,左乘可以认为始终绕着世界坐标系转,右乘是绕着最新的自身坐标系转。比如我下面画的插图所示,上方为左乘(实际是绕世界坐标系Y轴旋转),下方为右乘。

上面所说,都是在针对坐标系或者说位姿进行变换,实际上我们在做各种变换的另外一各直观的目的就是:对于世界坐标系中的绝对的一点的坐标,能够在不同的坐标系中进行坐标表达,毕竟那个点就是实实在在存在的嘛。

如上图所示,A点不变,坐标系OXYZ旋转一定角度得到OXYZ新坐标系下,OXYZ坐标系下的P'来自于原P点,因此存在图中的变换公式。
再谈自动驾驶中的坐标转换
基于上面的分析,例如对于相机坐标系和激光雷达坐标系的变换。例如从camera坐标系到lidar坐标系的变换,实际就是原坐标系左乘一个世界坐标系表示的变换矩阵;又如,从camera坐标系的坐标系1转至camera坐标系2,自然就是右乘自身变换矩阵。

本节参考文献
CSDN_关于旋转矩阵的左乘与右乘问题
相关文章:
梳理自动驾驶中的各类坐标系
目录 自动驾驶中的坐标系定义 关于坐标系的定义 几大常用坐标系 世界坐标系 自车坐标系 传感器坐标系 激光雷达坐标系 相机坐标系 如何理解坐标转换 机器人基础中的坐标转换概念 左乘右乘的概念 对左乘右乘的理解 再谈自动驾驶中的坐标转换 本节参考文献 自动驾驶…...
一个可以自动把微信聊天收到的二维码图片实时提取出来并分类的软件
10-1 如果你有需要实时地、自动地把微信各个群收到的二维码图片提取出来的需求,那本文章适合你,本文章的主要内容是教你如何实现自动提取微信收到的二维码图片,助你快速扫码,永远比别人领先一步。 首先需要准备好的材料…...
02-React组件与模块
组件与模块 前期准备 安装React官方浏览器调试工具,浏览器扩展搜索即可 比如红色的React就是本地开发模式 开启一个用React写的网站,比如美团 此时开发状态就变成了蓝色 组件也能解析出来 何为组件&模块 模块,简单来说就是JS代…...
项目实战:新增@RequestMapping和@GetMapping和@PostMapping三个注解
1、RequestMapping package com.csdn.mymvc.annotation; import java.lang.annotation.*; Target(ElementType.TYPE) Retention(RetentionPolicy.RUNTIME) Inherited public interface RequestMapping {String value(); }2、PostMapping package com.csdn.mymvc.annotation; im…...
基于AOSP源码Android-10.0.0_r41分支编译,framework开发,修改系统默认字体大小
文章目录 基于AOSP源码Android-10.0.0_r41分支编译,framework开发,修改系统默认字体大小 基于AOSP源码Android-10.0.0_r41分支编译,framework开发,修改系统默认字体大小 主要修改一个地方就行 代码源码路径 frameworks/base/co…...
如何再kali中下载iwebsec靶场
这个靶场有三种搭建方法: 第一种是在线靶场:http://www.iwebsec.com:81/ 第二种是虚拟机版本的,直接下载到本地搭建 官网地址下载:http://www.iwebsec.com/ 而第三种就是利用docker搭建这个靶场,我这里是用kali进行…...
Spring Boot 使用断言抛出自定义异常,优化异常处理机制
文章目录 什么是断言?什么是异常?基于断言实现的异常处理机制创建自定义异常类创建全局异常处理器创建自定义断言类创建响应码类创建工具类测试效果 什么是断言? 实际上,断言(Assertion)是在Java 1.4 版本…...
vue基于ElementUI/Plus自定义的一些组件
vue3-my-ElementPlus 源码请到GitHub下载使用MyTable、MySelect、MyPagination 置顶|Top | 使用案例: 1.0 定义表格数据(测试使用) data() {return {tableData: [],value:[],valueList: [],}; },// 构造表格测试数据// 1 第一行…...
leetcode刷题日记:69.sqrt(x)
给出一个非负的整数x,返回x的平方根向下取整的结果,这个被返回的数也应该是一个非负的值。 对我们的要求是不能使用任何内置的指数函数与操作,官方还给了我们例子: 在C种不能使用pow(x, 0.5) 在python不能使用 x**0.5 既然官方已经…...
[尚硅谷React笔记]——第9章 ReactRouter6
目录: 课程说明一级路由重定向NavLink高亮useRoutes路由表嵌套路由路由的params参数路由的search参数路由的state参数编程式路由导航useRouterContextuseNavigationTypeuseOutletuseResolvedPath()总结项目地址 1.课程说明 概述 React Router以三个不同的包发布…...
强大的pdf编辑软件:Acrobat Pro DC 2023中文
Acrobat Pro DC 2023是一款强大的PDF编辑和管理软件,它提供了广泛的功能,使用户能够轻松创建、编辑、转换和共享PDF文档。通过直观的界面和先进的工具,用户可以快速进行文本编辑、图像调整、页面管理等操作,同时支持OCR技术&#…...
玩一下Spring Boot
文章目录 1 开发环境1.1 JDK1.2 IntelliJ IDEA2 Spring Boot2.1 创建项目2.2 创建模板页面2.3 创建控制器2.4 启动项目2.5 访问页面1 开发环境 1.1 JDK 安装JDK21 配置环境变量 在命令行查看JDK版本 玩一玩jshell...
一个高性能类型安全的.NET枚举实用开源库
从零构建.Net前后端分离项目 枚举应该是我们编程中,必不可少的了,今天推荐一个.NET枚举实用开源库,它提供许多方便的扩展方法,方便开发者使用开发。 01 项目简介 Enums.NET是一个.NET枚举实用程序库,专注于为枚举提…...
c#字符串格式化
字符串格式化是一种将变量的值插入到字符串中的方法。它允许我们创建动态的字符串,其中包含变量的值。 string.Format 通过在字符串中使用占位符{0},{1}等,我们可以指定要插入的变量的位置。然后,通过在string.Format方法的参数…...
AMD老电脑超频及性能提升方案及实施
收拾电子元件的时候找到了若干古董的CPU 其中有一个X3 440 是原来同学主板烧了之后给我的,我从网上配了AM2 昂达主板,然后又买了AMD兼容内存,组成了win7 64位电脑,用起来非常不错,我把硬件配置和升级过程说明下&#x…...
Github 自动化部署到GitHub Pages
1.准备工作 新建仓库 新建项目 配置 vite.config.ts base: ./,部署应用包时的基本URL,例:vue-cli 5.x 配置 publicPath 推送到远程仓库 2.配置 GitHub Token 点击 Settings -> Actions -> General 找到 Workflow permissions,选中第…...
Golang 串口通信
简介 串口通信是一种常见的硬件通信方式,用于在计算机和外部设备之间传输数据。Golang(Go语言)作为一种高效、可靠的编程语言,提供了丰富的库和工具用于串口通信。本文将介绍如何使用Golang进行串口通信,包括串口配置…...
项目管理之如何识别并应对项目风险
项目风险管理是项目管理中不可忽视的环节,如何识别并应对项目的风险对于项目的成功实施至关重要。本文将介绍风险管理的流程、风险分解结构、定性及定量风险评估方法,以及消极和积极的风险应对策略,旨在帮助读者更好地理解和应对项目风险。 …...
vue封装独立组件:实现手写签名功能
目录 第一章 效果展示 第二章 准备工作 2.1 使用的工具vue-sign 2.1.1 安装 2.1.2 了解 2.1.3 参数说明 第三章 源代码 第一章 效果展示 第二章 准备工作 2.1 使用的工具vue-esign 2.1.1 安装 npm install vue-esign --save 2.1.2 了解 兼容pc端和移动端有对应的参…...
图及谱聚类商圈聚类中的应用
背景 在O2O业务场景中,有商圈的概念,商圈是业务运营的单元,有对应的商户BD负责人以及配送运力负责任。这些商圈通常是一定地理围栏构成的区域,区域内包括商户和用户,商圈和商圈之间就通常以道路、河流等围栏进行分隔。…...
STM32F0实战:基于HAL库开发【4.6】
21.2 USB模块STM32F0072VBT6微控制器片内集成有符合USB2.0全速设备技术规范要求的USB模块,通过该模块可以实现与PC主机的USB通信连接,进一步拓展将该系列微控制器的应用范围。21.2.1 USB模块的结构STM32F072VBT6微控制器片内集成的USB模块,可…...
学术公式迁移困境:从3小时到45秒的转换革命——LaTeX2Word-Equation技术解析
学术公式迁移困境:从3小时到45秒的转换革命——LaTeX2Word-Equation技术解析 【免费下载链接】LaTeX2Word-Equation Copy LaTeX Equations as Word Equations, a Chrome Extension 项目地址: https://gitcode.com/gh_mirrors/la/LaTeX2Word-Equation 问题溯源…...
Pixel Dimension Fissioner 社交媒体内容生成:自动化生产像素风格营销图片
Pixel Dimension Fissioner 社交媒体内容生成:自动化生产像素风格营销图片 1. 社交媒体运营的视觉内容困境 每天打开社交媒体后台,运营团队最头疼的问题总是惊人的一致:内容不够发。特别是需要大量视觉素材的节日营销期,设计师加…...
DeepSeek-OCR-2算力优化部署:支持多GPU并行解析提升吞吐量方案
DeepSeek-OCR-2算力优化部署:支持多GPU并行解析提升吞吐量方案 1. 为什么需要多GPU并行解析? 如果你用过单张显卡跑DeepSeek-OCR-2,可能会遇到这样的场景:公司财务部门一次性发来50张发票扫描件,行政部需要处理100页…...
如何在没有 SEO 预算的情况下提高网站排名
如何在没有 SEO 预算的情况下提高网站排名 在当今互联网时代,网站的排名直接关系到其能否吸引到更多的流量和用户。不少小型企业和个人博客在没有 SEO 预算的情况下,往往陷入困境,不知道如何提高网站排名。如何在没有 SEO 预算的情况下提高网…...
职业院校智慧校园系统采购,为什么要把校企合作项目放在前面?
✅作者简介:合肥自友科技 📌核心产品:智慧校园平台(包括教工管理、学工管理、教务管理、考务管理、后勤管理、德育管理、资产管理、公寓管理、实习管理、就业管理、离校管理、科研平台、档案管理、学生平台等26个子平台) 。公司所有人员均有多…...
避开Arduino PID编程的3个常见坑:为什么你的控制总是不稳?
Arduino PID控制实战:避开3个致命陷阱实现精准调节 当你在深夜盯着反复震荡的电机转速曲线,或是加热棒温度始终无法稳定的数据时,是否怀疑过自己复制的PID代码有问题?这不是你的错觉——大多数Arduino PID控制问题都源于三个容易被…...
Webpack Tree Shaking配置终极指南:如何在Awesome-Webpack中优化现代前端项目
Webpack Tree Shaking配置终极指南:如何在Awesome-Webpack中优化现代前端项目 【免费下载链接】awesome-webpack A curated list of awesome Webpack resources, libraries and tools 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-webpack Webpack …...
Three.js模型加载太慢?试试这个gltf-pipeline压缩技巧,亲测有效!
Three.js模型加载优化实战:gltf-pipeline压缩技巧详解 在Web 3D开发中,Three.js无疑是构建沉浸式体验的首选工具之一。然而,随着3D模型复杂度的提升,文件体积膨胀导致的加载延迟成为开发者面临的普遍挑战。想象一下,用…...
告别卡顿:在Windows10上通过QEMU与WHPX硬件加速高效部署Ubuntu20.04开发环境
1. 为什么选择QEMUWHPX方案? 很多开发者都遇到过这样的困境:在Windows系统上运行Linux虚拟机时,要么性能拉胯到让人抓狂,要么配置复杂得让人望而却步。我之前用VMware跑Ubuntu时,光是开个浏览器就能让CPU飙到100%&…...
