自动驾驶中,实现三维点旋转原理

文章目录

      • 1. 三维点旋转的方案
      • 2. 使用复数表示二维点的旋转
        • 2.1. 复数的概念
        • 2.2. 复数的三种形式及相互转换
        • 2.3. 复数概念扩展:实数、虚数、复数
      • 3. 四元数旋转三维点原理
      • 4. 使用四元数进行旋转的公式
      • 5. 旋转叠加
      • 6. 四元数转换为三维点
      • 7. 代码实现

1. 三维点旋转的方案

三维旋转的方案,主要有:

  • 欧拉角:简单易懂,但有万向节锁问题。在三维软件的用户界面上通常都用欧拉角表示。但是软件内部的计算过程都用四元数。

  • 旋转矩阵:可以累乘,但有误差累计问题。

  • 四元数:正是因为这两种表示方式的缺陷,才造就了四元数表示法的流。

本文仅对四元数的旋转进行说明。

2. 使用复数表示二维点的旋转

2.1. 复数的概念

复数为: a + b i

复数可以表示二维点的旋转。

在这里插入图片描述

其中的圆是单位圆。

如图,就表示点或向量绕着原点旋转了θ (theta)角度。可以把图中的二维坐标(a,b)写成一个复数:

在这里插入图片描述

2.2. 复数的三种形式及相互转换
  • 代数形式

  • 三角形式

  • 指数形式

在这里插入图片描述

2.3. 复数概念扩展:实数、虚数、复数

在这里插入图片描述

3. 四元数旋转三维点原理

四元数就是四个数。它是复数的推广。

四元数则多了两个虚部: q = w + (ai + bj + ck) , 其中i,j,k都是虚数。所以:

在这里插入图片描述

四元数可以表示三维单位球面上的一个点(或者说是一个单位方向向量)的旋转:

在这里插入图片描述

这就表示绕着一个轴(a,b,c)(它是个单位向量)旋转θ (theta)角度。

在这里插入图片描述

4. 使用四元数进行旋转的公式

使用四元数进行旋转的公式如下(结果为一个新的四元数):

在这里插入图片描述

假设有四元数q : q = w + (ai + bj + ck) , 那么四元数的逆的公式为:

在这里插入图片描述

这就是实部不变,虚部加个负号而已!

以试验一下,它是否符合逆的概念,也就是:

在这里插入图片描述

注意:如果q没有归一化,那么q的逆只需要再除以模的平方:

在这里插入图片描述

5. 旋转叠加

四元数也像旋转矩阵那样能够累乘!比如先旋转q1,再旋转q2:

在这里插入图片描述

6. 四元数转换为三维点

旋转之后,怎么得到三维的点坐标呢?

我们只需要把实部抛弃(或者写成0),虚部的三个值恰好就是一个三维点的坐标。

也就是说:( 0 , x i + y j + z k )

恰好就是三维点:( x , y , z )

7. 代码实现

关于代码实现,请参考下一篇文章:《Eigen C++ 代码实现三维点的旋转》

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

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

相关文章

一文学会用RKE部署高可用Kubernetes集群

k8s架构图 RKE简介 RKE全称Rancher Kubernetes Engine,是一个快速的,多功能的 Kubernetes 安装工具。通过RKE,我们可以快速的安装一个高可用K8S集群。RKE 支持多种操作系统,包括 MacOS、Linux 和 Windows。 K8S原生安装需要的先…

【YOLOv5/v7改进系列】改进池化层为SimSPPF

一、导言 SimSPPF(Simplified Spatial Pyramid Pooling with Fixed-size kernel)模块是在YOLOv6架构中引入的一个关键组件,它旨在优化原始SPPF(Spatial Pyramid Pooling Fixed-size)模块的效率。以下是SimSPPF的一些优…

开发TEE的踩坑之开发TEE

系统:Ubuntu20.04(双系统,非虚拟机) 一、前置说明1、TEE平台的选择2、机器间的通信方式3、程序和数据集的示例4、结果文件的解密 二、服务器部署三、客户端部署四、工程应用 本系列为笔者开发TEE(Trusted Execution En…

【笔记】虚拟机中的主从数据库连接实体数据库成功后的从数据库不同步问题解决方法2

错误: Last_Errno: 1008 Last_Error: Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 1 failed executing transaction ANONYMOUS at source log mysql-bin.000014, end_log_pos 200275. See error lo…

开放式耳机哪款好一点?开放式耳机科普五款推荐!

“选择开放式耳机真的太难了” “哥,怎么才能选到心仪的开放式耳机啊” 这种评论总是会出现后台或者现实的朋友也会问起来,所以作为耳机测评的博主,在这里给大家科普一下到底一款好用的开放式耳机到底怎么选,这篇文章我花了三天…

Centos系统内磁盘分区

Centos系统内磁盘分区 建议如果有重要数据提前做好备份 以根目录扩容50G为例: 1、卸载/home目录 umount /home 2、删除逻辑卷 y确认即可 lvremove /dev/mapper/centos-home 3、df -h查询一下,/home目录已经不见了 4、向根目录分区追加50G容量 lv…

网易云小程序资料分享

链接: https://pan.baidu.com/s/1jzP52Zq4R-nUTxN334XMJg 提取码: xhny

STM32基础篇:EXTI × 事件 × EXTI标准库

EXTI EXTI简介 EXTI:译作外部中断/事件控制器,STM32的众多片上外设之一,能够检测外部输入信号的边沿变化并由此产生中断。 例如,在检测按键时,按键按下时会使电平产生翻转,因此可以使用EXTI来读取按下时…

线上线下一体开源的Hugging Face?| 这些问题不可不看……

7月,2024世界人工智能大会暨人工智能全球治理高级别会议(WAIC 2024)在上海盛大启幕,以“以共商促共享,以善治促善智”为主题进行展览,OpenCSG首次亮相“CSGHub和StarShip”两大产品,全方位展现公…

HTML5新增的input元素类型:number、range、email、color、date等

HTML5 大幅度地增加与改良了 input 元素的种类,可以简单地使用这些元素来实现 HTML5 之前需要使用 JavaScript 才能实现的许多功能。 到目前为止,大部分浏览器都支持 input 元素的种类。对于不支持新增 input 元素的浏览器,input 元素被统一…

kotlin数据容器

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 容器是用于存放数据的载体。容器分为数组、集合。 Kotlin作为一门全新的语言,肯定还是要有自己的容…

网优学习干货:xx5G速率优化现场实战版

速率概述 无线网络仍然是5G网络能力最容易受限的环节,无线网络技术的应用将最终决定5G网络能力的木桶深度。移动通信中传统关键技术在5G将会继续使用。5G NR在继承了LTE原有部分技术基础上,采用了一些技术演进和新技术创新。比如NR继承了LTE的OFDM和SC-…

ArduPilot开源飞控之AP_Mount_Topotek

ArduPilot开源飞控之AP_Mount_Topotek 1. 源由2. 框架设计3. 重要函数3.1 动态过程3.1.1 AP_Mount_Topotek::update3.1.2 AP_Mount_Backend::calculate_poi 3.2 基础能力3.2.1 AP_Mount_Topotek::healthy3.2.2 AP_Mount_Topotek::has_pan_control 3.3 设备功能3.3.1 AP_Mount_T…

python 实验八 数据分析与展示

一、实验目的 掌握掌握matplotlib库中pyplot模块的使用。 二、实验环境 Window10(x64),Python 3.8(x64),PyCharm Community Edition 2020.3.2(x64) 三、实验内容 现有列表hight…

初学SpringMVC之过滤器解决乱码

写个 login.jsp 页面 提交的 method 一般为 post(写 get 不安全,地址栏上会显示) action 表示提交后跳转的地址 (不直接写控制器里的路径是因为配置 Tomcat 时设置了前缀路径,默认走 http://localhost:8080&#xf…

市面上的护眼台灯哪个牌子最好?分享学生护眼台灯十大排名

家长们对孩子的用眼健康很重视,为什么?现在是科技电子时代,人们对电子屏幕的依赖性高,小孩子年纪小,眼部还处于正在发育的阶段,他们在学校中长时间的学习读写,用眼时间长。而且随着科技渗入教学…

如何选择小型超声波清洗机? 2024年值得买的四款眼镜清洗机总结

久了不擦洗的眼镜,往往会滋生很多细菌病毒,久而久之就会影响到视力和眼睛健康。而超声波清洗机作为一款高效清洁物品,可以帮助人们快速且深度地清洁眼镜,很多清洗机使用久一点清洁力就减弱了,所以要找一款性价比高的清…

【Java EE】统一功能返回

一、拦截器 1.1 拦截器的作用 在对于数据库进行增删查改的时候,如果当前页面不检查用户是否登录,然后就能操作成功是不合理的,解决方法有两个: 对于已经写好的每个接口都加上一个判断,从Session中获取用户信息&…

CSS 中的 ::before 和 ::after 伪元素

目录 一、CSS 伪元素 二、::before ::after 介绍 1、::before 2、::after 3、content 常用属性值 三、::before ::after 应用场景 1、设置统一字符 2、通过背景添加图片 3、添加装饰线 4、右侧展开箭头 5、对话框小三角 6、插入icon图标 一、CSS 伪元素 CSS伪元…

Spring Boot:连接MySQL错误Public Key Retrieval is not allowed

环境: MySQL版本:8.0.17 SpringBoot版本:2.5.15 解决 解决方式很简单,在数据库配置连接字符串spring.datasource.url末尾添加&allowPublicKeyRetrievaltrue即可,如下图: 重新启动,恢复正常…