slam系列2:刚体坐标变换

news2024/10/26 17:30:58

线性代数的基础知识参考这篇:https://xin1999.blog.csdn.net/article/details/124779288

1. 刚体变换

刚体变换仅有旋转+平移功能,矩阵模式表达为: a ′ = R a + t a'=Ra+t a=Ra+t
齐次坐标就是在原n维坐标表示上增加了一个维度,使用n+1维来表示n维,这样欧式变换的叠加就可以直接用矩阵进行计算。
在这里插入图片描述
使用齐次坐标表达刚体变换:
在这里插入图片描述

2. 旋转的方法

旋转矩阵存在不直观和有冗余的问题,因此提出如下几种表达旋转的方法:

2.1 旋转向量

一个旋转轴 u u u和一个旋转角 θ \theta θ来刻画旋转变换,可以用一个三维向量 U = u θ U=u \theta U=uθ来表示。根据罗德里格斯变换公式,我们可以得到三维点/向量 v v v 在旋转向量 U U U的作用下变换到 v r o t v_{rot} vrot 的关系式为:
在这里插入图片描述
旋转向量转为旋转矩阵表达为:
在这里插入图片描述
旋转矩阵转为旋转向量为:
在这里插入图片描述
在这里插入图片描述

2.2 欧拉角

欧拉角就是一种将复杂三维旋转变换分解为分别绕三个独立轴转动角度的复合变换的描述,它使用了3个分离的转角,把一个旋转分解成3次绕不同轴的旋转。
对于x,y,z三个轴的不同旋转顺序一共有(x-y-z, y-z-x, z-x-y, x-z-y, z-y-x, y-x-z)等六种组合,不同的旋转顺规会带来不同的结果。我们需要明确旋转顺序,才能确定最终欧拉角所指的姿态。
外旋/静态欧拉角(常用):旋转中的X,Y,Z轴都是固定不变的
内旋/动态欧拉角:内旋是指在物体旋转过程中绕自身坐标轴旋转,
内旋与外旋的绕轴旋转序列相互倒序时,两者等效。
欧拉角不适用于插值和迭代,往往只用于人机交互中。
欧拉角转为旋转矩阵:
沿X轴旋转时,公式如下,其他同理:
在这里插入图片描述

旋转矩阵与zxy外旋的关系为:
在这里插入图片描述
展开得到:
在这里插入图片描述
求解有:
在这里插入图片描述

2.3 四元数

2.3.1 基本定义

四元数的定义和复数非常类似,唯一的区别就是四元数一共有三个虚部,而复数只有一个。所有的四元数都可以写成如下形式:
在这里插入图片描述
也可以写作:
在这里插入图片描述
向量形式为:
在这里插入图片描述

虚部满足:
在这里插入图片描述

2.3.2 性质

四元数之间的乘法比较特殊,它们是不遵守交换律的,用矩阵形式表达如下:
在这里插入图片描述
在这里插入图片描述
上面的乘法可以表示为:
在这里插入图片描述
四元数的共轭为:
在这里插入图片描述
满足性质:
在这里插入图片描述
四元数的逆为:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3.3 旋转表达

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

# 执行 rpm -qa | grep qq 查询软件安装情况时报错 数据库损坏 db3 error(-30974)

执行 rpm -qa | grep qq 查询软件安装情况时报错 数据库损坏 db3 error(-30974) 一、问题描述: 在 linux 系统上,使用包管理工具 rpm 查询某一个软件安装情况,如:执行 rpm -qa | grep qq 时,报错 数据库损坏 db3 err…

【升华】一个简单而标准的接口定义格式

一、前言 每天都在写很多接口,有的是有设计的接口,有的是无设计的接口。如果接口没有进行设计,也没有设计文档后期将很难扩展和维护。那么怎么简单定义一个简单而标准的Java的接口呢。下面给出格式。 二、JAVA接口设计文档 一个接口的定义一…

心觉:能让孩子卷则卷,但是度一定要把握好

Hi,我是心觉,与你一起玩转潜意识、脑波音乐和吸引力法则,轻松掌控自己的人生! 挑战每日一省写作198/1000天 现在家长普遍想让孩子考个好的学校,上好的幼儿园、小学、初中、高中甚至大学 为了上一个好的学校&#xf…

智能电子后视镜,汽车驾驶更安全,会是一种趋势

相比于传统的后视镜,智能电子后视镜的确有很多的优点。在下雨天和夜晚场景,电子后视镜可以说是表现优秀。 我之前一直以为我们国内是有规定不能使用电子后视镜。没想到,偶然刷到享界S9的视频,这电子后视镜,妥妥的给安排…

QD1-P21-P22 CSS 基础语法、注释、使用方法

本节学习:CSS 基础语法和注释,以及如何使用CSS定义的样式。 本节视频 https://www.bilibili.com/video/BV1n64y1U7oj?p21 CSS 基本语法 CSS(层叠样式表)的基本语法相对简单,由选择器和一组包含在花括号 {}​ 中的声…

研发线上事故风险解读之缓存篇

专业在线打字练习平台-巧手打字通,只输出有价值的知识。 一 前言 本文继续基于《线上事故案例集》,进一步深入梳理线上事故缓存使用方面的问题点,重点关注缓存在使用和优化过程中可能出现的问题,旨在为读者提供具有实践指导意义的…

矩形函数的傅里叶变换——从一维到二维,从连续到离散

一维连续矩形函数的傅里叶变换 二维连续矩形函数的傅里叶变换 禹晶、肖创柏、廖庆敏《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》P109 2D DFT 禹晶、肖创柏、廖庆敏《数字图像处理(面向新工科的电工电子信息基础课程系…

java计算机毕设课设—俄罗斯方块游戏(附源码、文章、相关截图、部署视频)

这是什么系统? 资源获取方式再最下方 java计算机毕设课设—俄罗斯方块游戏(附源码、文章、相关截图、部署视频) 基于Java的俄罗斯方块游戏,以提供一种既具娱乐性又具挑战性的游戏体验。通过精心设计的游戏界面和控制功能,该游戏不仅能够满…

STM32G474硬件I2C之配置方法

STM32G474硬件I2C接口:英文Inter-integrated circuit简写为I2C。STM32G474是M4核,在使用硬件I2C时,配置方法和M3核相差较大。通过阅读参考手册和HAL,总算了解了其配置原理。 1、I2C工作模式 I2C标准模式:最高时钟频率…

使用HTML和CSS实现3D波浪动画效果

使用HTML和CSS实现3D波浪动画效果 在本篇博客中,将详细介绍如何使用HTML与CSS创建一个3D波浪动画效果。这个效果不仅能够在网页中创建立体感强的视觉体验,还能够通过悬停和聚焦实现与用户的交互。我们将逐步解析代码中的每个部分,帮助你掌握…

探索Theine:Python中的AI缓存新贵

文章目录 探索Theine:Python中的AI缓存新贵背景:为何选择Theine?Theine是什么?如何安装Theine?简单的库函数使用方法场景应用场景一:Web应用缓存场景二:分布式系统中的数据共享场景三&#xff1…

使用WordPress从零开始搭建一个本地网站实现远程访问

文章目录 前言1. 安装WordPress2. 创建WordPress数据库3. 安装相对URL插件4. 安装内网穿透发布网站4.1 命令行方式:4.2. 配置wordpress公网地址 5. 配置WordPress固定公网地址 前言 本文主要介绍如何在Linux Ubuntu系统上使用WordPress搭建一个本地网站&#xff0c…

C语言网络编程深入研究

网络编程是现代软件开发中的一个重要部分,它允许不同计算机之间相互通信和交换数据。本指南将深入探讨使用C语言进行网络编程的技术细节,特别是TCP/IP协议族的核心概念和技术实现。我们将通过具体的代码示例来讨论如何创建客户端和服务器程序&#xff0c…

渗透测试 之 AD域渗透 【Kerberoasting】 攻击技术讲解 对应得工具详细介绍哟~ 以及相关示例 按照步骤做你也会哟

说明 Kerberoasting 攻击发生在Kerberos协议的TGS_REP阶段,KDC的TGS服务返回一个由服务Hash加密的ST给客户端。由于该ST是用服务Hash进行加密的,因此客户端在拿到该ST后可以用于本地离线爆破。 攻击的过程 攻击者提供一个正常的域用户密码对域进行身份…

拆解学习【STC宏晶MCU-CM1020电池保护】(一)

MIJIA米家USB-C充气宝1S: 米家这款充气宝内置2串18650锂电池为电机和控制板供电。控制板采用STC宏晶MCU进行气压测量和电机控制以及压力显示,内部电池保护板采用创芯微CM1020进行电池保护,并采用捷捷微MOS管进行开关控制。 LED数码管采用贴片LED二极管…

NVM 切换Node.js版本工具

大家好我是苏麟,今天聊聊NVM切换版本工具。 切换 node 版本工具 : GitHub - nvm-sh/nvm: Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions 查看node版本 node -v 查看 nvm 版本 nvm -v 查看可安装的Nod…

JavaScript进阶笔记--深入对象-内置构造函数及案例

深入对象 创建对象三种方式 利用对象字面量new Object({…})利用构造函数 // 1. 字面量创建对象const obj1 {name: pig,age: 18};console.log(obj1); // {name: "pig", age: 18}// 2. 构造函数创建对象function Pig(name, age) {this.name…

RVIZ2可视化移动机器人模型

RVIZ2可视化移动机器人模型 上一节讲完joint和link,我们来把我们上面定义的简单的URDF(包含身体和雷达)用RVIZ2显示出来,直观的感受下,我们的机器人模型。 URDF可视化的步骤如下: 1建立机器人描述功能包 2建立urdf文件夹编写…

子组件向父组件传值$emit

点击子组件的按钮&#xff0c;将子组件的值传递给父组件&#xff0c;并进行提示。 子组件 <template><div><button click"emitIndex">clickme</button></div> </template> <script> export default {methods: {emitInde…

计算机毕业设计Django+Vue.js豆瓣图书推荐系统 图书评论情感分析 豆瓣图书可视化大屏 豆瓣图书爬虫 数据分析 图书大数据 大数据毕业设计 机器学习

《DjangoVue.js豆瓣图书推荐系统》开题报告 一、研究背景与意义 1. 研究背景 随着数字化时代的来临&#xff0c;图书资源日益丰富&#xff0c;用户面临着信息过载的问题。如何在海量图书中快速找到符合个人兴趣和需求的书籍成为了亟待解决的问题。传统的图书检索方式往往基于…