旋转矩阵乘法,自动驾驶中的点及坐标系变换推导

目录

1. 矩阵乘法的内项相消

2. 左右乘,内外旋与动静坐标系

3. 点变换

3.1 点旋转后的点坐标表示

3.2 坐标系旋转后的点坐标表示

4. 坐标变换的实质


1. 矩阵乘法的内项相消

关于旋转变换,离不开矩阵的乘法,而矩阵乘法的物理意义和本身数学上矩阵乘法的内向相消决定了乘法的顺序,确定内项相消的规则,是对后面矩阵乘法的顺序理解的重要基础。

首先确定旋转矩阵的写法R_{B}^{A}, 如果理解成旋转,则表示A坐标系到B坐标系的旋转变换;如果理解成姿态,则表示B坐标系在A坐标系中的姿态(如果有位置坐标,可以理解成位姿)注意A,B的顺序非常的重要,在自动驾驶中,可以分别表示世界坐标系,IMU坐标系等。

按照如上旋转矩阵的定义,那么内项相消的公式就可以写成

R_{C}^{A} = R_{B}^{A} * R_{C}^{B}

2. 左右乘,内外旋与动静坐标系

关于左右乘,内外旋有如下结论(记住即可):

相对固定(静)坐标系的旋转 = 外旋 = 左乘, 如绕Z-Y-X固定轴旋转,旋转矩阵的乘法应写为:R_{X}*R_{Y}*R_{Z}

相对自身(动)坐标系的旋转 = 内旋 = 右乘,如绕Z-Y-X自身轴旋转,旋转矩阵的乘法应写为:

R_{Z}*R_{Y}*R_{X}

3. 点变换

3.1 点旋转后的点坐标表示

旋转矩阵的乘法往往会和某个点进行,这是最直观的一种矩阵乘法。通常我们会理解成这个点代表的向量,经过了旋转变换的,得到一个新的向量(点)。如下图所示:

CA(1,1)向量经过逆时针旋转90°,得到CB向量(-1,1),向量的旋转矩阵不存在坐标系的变换,不用在意上面的定义,直接用点左乘具体的旋转矩阵即可。逆时针旋转90°的旋转矩阵为:

R = \begin{bmatrix} cos90 & -sin90 & 0 \\ sin90 & cos90 & 0 \\ 0 & 0 & 1 \end{bmatrix}

CB = R * CA

3.2 坐标系旋转后的点坐标表示

这个比较重要,也是理解本篇的重点。坐标系发生变化后,点即使没有发生位置的改变,其坐标也会发生变化。这种在自动驾驶中很常见,一个点在传感器中有一个坐标,想求它在世界坐标系中的坐标。就是此类应用

如下图所示:

在CBD坐标系中(以坐标系G代表),其中BC为x轴,BD为y轴,A点的坐标为(2,1)

我们将原坐标系逆时针旋转90°,得到DBE坐标,其中BD为x轴,BE为y轴,在DBE坐标系中(以坐标系G'),A点在G’坐标系中的坐标表示为A'(1,-2)。

这时候逆时针旋转90°表示从坐标系G到坐标系G’的变换关系,用1中的定义表示为R_{G'}^{G}。通过计算发现A' = R^{_{G}^{G'}}* A即如果是坐标发生了变化,不能直接左乘坐标系之间的旋转关系,要左乘旋转关系的逆。

4. 坐标变换的实质

坐标变换的实质就是投影

单位向量在坐标系中的投影就是该向量与坐标系各轴夹角的余弦值,这个结论我们并不陌生。坐标系之间的旋转矩阵R_{G'}^{G},其实就是将G'的三个轴单位化之后投影到G的三个轴上,即

R_{G'}^{G} = \begin{bmatrix} a'x & b'x & c'x\\ a'y & b'y & c'y\\ a'z& b'z& c'z \end{bmatrix}

每一行表示目标坐标系在三个轴在原坐标系某个轴的投影。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[Linux#55][网络协议] 序列化与反序列化 | TcpCalculate为例

目录 1. 理解协议 1.1 结构化数据的传输 序列化与反序列化 代码感知: Request 类 1. 构造函数 2. 序列化函数:Serialize() 3. 反序列化函数:DeSerialize() 补充 4. 成员变量 Response 类 1. 构造函数 2. 序列化函数:…

【软件基础知识】什么是 API,详细解读

想象一下,你正在使用智能手机上的天气应用。你打开应用,瞬间就能看到实时天气、未来预报,甚至是空气质量指数。但你有没有想过,这些数据是如何神奇地出现在你的屏幕上的?答案就在三个字母中:API。 API,全称Application Programming Interface(应用程序编程接口),是现代软件世…

MYSQL面试知识点手册

第一部分:MySQL 基础知识 1.1 MySQL 简介 MySQL 是世界上最流行的开源关系型数据库管理系统之一,它以性能卓越、稳定可靠和易用性而闻名。MySQL 主要应用在 Web 开发、大型互联网公司、企业级应用等场景,且广泛用于构建高并发、高可用的数据…

工程师 - PFM介绍

在电子电路设计中,PFM(Pulse Frequency Modulation,脉冲频率调制)是一种调制技术,其主要特点是在负载变化时调整脉冲的频率,而保持脉冲的宽度(时间长度)相对恒定。与PWM(…

记忆化搜索专题——算法简介力扣实战应用

目录 1、记忆化搜索算法简介 1.1 什么是记忆化搜索 1.2 如何实现记忆化搜索 1.3 记忆化搜索与动态规划的区别 2、算法应用【leetcode】 2.1 题一:斐波那契数 2.1.1 递归暴搜解法代码 2.1.2 记忆化搜索解法代码 2.1.3 动态规划解法代码 2.2 题二&#xff1…

Transformer预测 | 基于Transformer心率时间序列预测(tensorflow)

效果一览 基本介绍 Transformer预测 | 基于Transformer心率时间序列预测(tensorflow) 程序设计 import pandas as pd from pandas.plotting import lag_plot from statsmodels.graphics

加密与安全_优雅存储二要素(AES-256-GCM )

文章目录 什么是二要素如何保护二要素(姓名和身份证)加密算法分类场景选择算法选择AES - ECB 模式 (不推荐)AES - CBC 模式GCM(Galois/Counter Mode)AES-256-GCM简介AES-256-GCM工作原理安全优势 应用场景其他模式 和 敏感数据加密…

AIoT智能工控板

在当今竞争激烈的商业环境中,企业需要强大的科技力量来助力腾飞,AIoT智能工控板就是这样的力量源泉。 其领先的芯片架构设计,使得主板的性能得到了极大的提升。无论是数据的处理速度、图形的渲染能力,还是多任务的并行处理能力&a…

Ceph官方文档_01_Ceph简介

目录 Ceph介绍Ceph介绍 Ceph可用于向云平台提供Ceph对象存储,Ceph可用于向云平台提供Ceph块设备服务。Ceph可用于部署Ceph文件系统。所有Ceph存储群集部署开始都是先设置每个Ceph节点,然后再设置网络。 Ceph存储集群需要以下内容:至少一个Ceph监视器和至少一个Ceph管理器,…

毕业设计选题:基于ssm+vue+uniapp的捷邻小程序

开发语言:Java框架:ssmuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:M…

Linux top命令详解与重点内容说明

文章目录 重点说明基本信息进程(任务)信息cpu占用信息%Cpu(s)内存信息交换内存信息每列含义说明交互命令多窗口模式颜色配置命令参数 重点说明 top命令非常强大,也非常复杂,很难面面俱到,也没有必要,这篇文章的目的是介绍重点&am…

en造数据结构与算法C# 群组行为优化 和 头鸟控制

实现: 1.给鸟类随机播放随机动画使得每一只鸟扇翅膀的频率都不尽相同 2.可以自行添加权重,并在最后 sumForce separationForce cohesionForce alignmentForce;分别乘上相应权重,这样鸟就能快速飞行和转向辣 using System.Collections.Ge…

Linux系统编程(基础指令)上

1.Linux常见目录介绍 Linux目录为树形结构 /:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录&…

Unity3D入门(二) :Unity3D实现视角的丝滑过渡切换

1. 前言 上篇文章,我们已经初步了解了Unity3D,并新建并运行起来了一个项目,使相机视角自动围绕着立方体旋转。 这篇文章,我们来讲一下Unity3D怎么过渡地切换视角。 我们继续是我上篇文章中的项目,但是需要向把Camera…

​OpenAI最强模型o1系列:开启人工智能推理新时代

前不久OpenAI发布全新模型——o1模型,也就是业界说的“草莓模型”,包含三款型号:OpenAI o1、OpenAI o1-preview和OpenAI o1-mini。 其中,OpenAI o1-mini和 o1-preview已经对用户开放使用: OpenAI o1:高级推…

企业急于采用人工智能,忽视了安全强化

对主要云提供商基础设施上托管的资产的安全分析显示,许多公司为了急于构建和部署 AI 应用程序而打开安全漏洞。常见的发现包括对 AI 相关服务使用默认且可能不安全的设置、部署易受攻击的 AI 软件包以及不遵循安全强化指南。 这项分析由 Orca Security 的研究人员进…

Redis学习以及SpringBoot集成使用Redis

目录 一、Redis概述 二、Linux下使用Docker安装Redis 三、SpringBoot集成使用Redis 3.1 添加redis依赖 3.2 配置连接redis 3.3 实现序列化 3.4 注入RedisTemplate 3.5 测试 四、Redis数据结构 一、Redis概述 什么是redis? redis 是一个高性能的&#xf…

vue项目加载cdn失败解决方法

注释index.html文件中 找到vue.config.js文件注释、

【Python语言初识(二)】

一、分支结构 1.1、if语句 在Python中,要构造分支结构可以使用if、elif和else关键字。所谓关键字就是有特殊含义的单词,像if和else就是专门用于构造分支结构的关键字,很显然你不能够使用它作为变量名(事实上,用作其他…

0基础带你入门Linux之使用

1.Ubuntu软件管理 回顾一下,我们之前使用su root切换到root模式,使用who 发现为什么显示的还是bd用户呢?为什么呢? 这个who是主要来查看的是我们登录的时候是以什么用户登录的 所以即使我们使用who进行查看的时候显示的还是bd用…