第三讲,三维空间刚体运动

news2024/11/15 17:54:04

一个刚体在三维空间中的运动是如何描述的。我们当然知道这由一次旋转加一次平移组成。平移确实没有太大问题,但旋转的处理是件麻烦事。我们将介绍旋转矩阵、四 元数、欧拉角的意义,以及它们是如何运算和转换的。

1.向量,坐标系和旋转矩阵

  • 点存在于三维空间之中
  • 点和点可以组成向量
  • 点本身由原点指向它的向量所描述

向量

  • 带指向性的箭头

  • 可以进行加法,减法等运算
    在这里插入图片描述
    坐标系:由三个正交的轴组成

  • 构成线性空间的一组基

  • 左手系 右手系
    在这里插入图片描述

  • 定义坐标系后,向量可以由R3坐标表示

线性空间的基 (e1, e2, e3), 那就可以谈论向量 a 在这组基下的坐标了

在这里插入图片描述

向量坐标的运算

加减法:

在这里插入图片描述

内积:内积可以描述向量间的投影关系

在这里插入图片描述

外积:外积只对三维向量存在定义,我们还能用外积表示向量的旋转

在这里插入图片描述

把 a 写成一个矩阵。事实上是一个反对称矩阵 ,你可以将 ∧ 记成一个反对称符号。这样就把外积 a × b,写成了矩阵与向量的乘法 a ∧b。任意向量都对应着唯一的一个反对称矩阵,反之亦然。

2. 坐标系之间的欧式变换

问题1:

坐标系之间如何变化的?

问题2:

如何计算同一个向量在不同坐标系里的坐标?

在SLAM中:

  • 固定的世界坐标系和移动的机器人坐标系
  • 机器人坐标系随着机器人运动而改变,每个时刻都有新的坐标系

在这里插入图片描述

如何描述左侧黑色坐标系到右侧蓝色坐标系的变化?

  • 黑色坐标系先旋转变为粉色坐标系
  • 粉色坐标系再进行平移为蓝色坐标系

T 是一个矩阵,也称为欧式变换 = 旋转+平移

2.1 旋转矩阵 R

  • 设某个单位正交基 (e1, e2, e3) 经过一次旋转,变成了 (e ′ 1 , e ′ 2 , e ′ 3 )。
  • 那么,对于同一个向量 a(注意该向量并没有 随着坐标系的旋转而发生运动),它在两个坐标系下的坐标为 [a1, a2, a3] T 和 [a ′ 1 , a ′ 2 , a ′ 3 ] T。
  • 根据坐标的定义,有:

在这里插入图片描述

为了描述两个坐标之间的关系,我们对上面等式左右同时左乘
在这里插入图片描述

那么左边的系数变成了单位矩阵,所以:

在这里插入图片描述

我们把中间的阵拿出来,定义成一个矩阵 R。这个矩阵由两组基之间的内积组成,刻 画了旋转前后同一个向量的坐标变换关系。只要旋转是一样的,那么这个矩阵也是一样的。 可以说,矩阵 R 描述了旋转本身。因此它又称为旋转矩阵

旋转矩阵有一些特别的性质:

  • 它是一个行列式为 1 的正交矩阵。反之,行列式为 1 的正交矩阵也是一个旋转矩阵
  • 旋转矩阵各分量是两个坐标系基的内积,由于基向量的长度为1,所以实际上是各基向量夹角的余弦值。所以这个矩阵也叫方向余弦阵

在这里插入图片描述

SO(n) 是特殊正交群的意思。我们把解释“群”的内容留到下一讲。这个集合由 n 维空间的旋转矩阵组成,特别的,SO(3) 就是三维空间的旋转了。通过旋转矩阵,我们可以直接谈论两个坐标系之间的旋转变换,而不用再从基开始谈 起了。换句话说,旋转矩阵可以描述相机的旋转

由于旋转矩阵为正交阵,它的逆(即转置)描述了一个相反的旋转。按照上面的定义方式,有:

在这里插入图片描述

显然 RT 刻画了一个相反的旋转。

在欧氏变换中,除了旋转之外还有一个平移。考虑世界坐标系中的向量 a,经过一次 旋转(用 R 描述)和一次平移 t 后,得到了 a ′,那么把旋转和平移合到一起,有:

在这里插入图片描述

t 称为平移向量。相比于旋转,平移部分只需把这个平移量加到旋转之后的坐标上。

实际上,我们会定义坐标系1,坐标系2,那么向量a在两个坐标系下的坐标为a1,a2,它们之间的关系应该是:

在这里插入图片描述

R12是指 **”把坐标系2的向量变换到坐标系1“**中

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

2.2 变换矩阵与齐次坐标

完整地表达了欧氏空间的旋转与平移,不过还存在一个小问题:这里的变换 关系不是一个线性关系。假设我们进行了两次变换:R1, t1 和 R2, t2,满足:
在这里插入图片描述
但是从 a 到 c 的变换为:
在这里插入图片描述

这样的形式在变换多次之后会过于复杂。因此,我们要引入齐次坐标变换矩阵重写:
在这里插入图片描述

我们把一个三维向量的末尾添加 1,变成了四维向量,称为齐次坐标。对于这个四维向量,我们可以把旋转和平移写在一个矩阵里面,使得整个关系变成 了线性关系。该式中,旋转和平移可以放入同一个矩阵,称矩阵 T 称为变换矩阵。我们暂时用 a˜ 表 示 a 的齐次坐标

在这里插入图片描述

那么多次变换就可以写成:

在这里插入图片描述

关于变换矩阵 T,它具有比较特别的结构:左上角为旋转矩阵,右上角为平移向量,左下角为0向量,右下角为1。这种矩阵又称为特殊欧氏群

在这里插入图片描述

实例应用:

在这里插入图片描述

移向量,左下角为0向量,右下角为1。这种矩阵又称为特殊欧氏群

[外链图片转存中…(img-pyjcIDHI-1693126744443)]

实例应用:

[外链图片转存中…(img-LgaWxEkz-1693126744443)]

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

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

相关文章

【LeetCode-中等题】19. 删除链表的倒数第 N 个结点

文章目录 题目方法一:节点加入集合找索引方法二:直接计算长度,然后找出要删除的节点的前一个节点方法三:栈方法四:前后双指针 题目 这题的关键在与两个点 一定要设置一个哑结点,防止删除第一个元素时,导致空…

C语言基础之——指针(下)

前言:本篇文章将继续讲解有关指针的剩余基础知识。 学无止境,一起加油叭!! 目录 一.指针运算 1.指针 - 整数 2.指针的关系运算 3.指针 - 指针 二.指针与数组 三.二级指针 四.指针数组 总结 一.指针运算 指针运算包括以下三…

Tableau可视化入门实践-2

目录 折线图1.导入excel文件数据2.建立折线图并添加标签 双轴折线图 折线图 1.导入excel文件数据 2.建立折线图并添加标签 双轴折线图 行标签拖进两个度量建立上下两个折线图 在第二个折线图纵轴,右键选择“双轴”

DiskCatalogMaker for Mac简单智能快速的磁盘管理工具

DiskCatalogMaker是一款Mac上的磁盘目录管理工具。它可以帮助用户快速创建和管理磁盘目录,方便查找和访问存储在磁盘上的文件和文件夹。它具有快速扫描和索引功能,生成详细的目录列表,支持关键字搜索和自定义标签。 此外,DiskCat…

k8s 查看加入主节点命令 k8s重新查看加入节点命令 k8s输入删除,重新查看加入命令 kuberadm查看加入节点命令

1. 使用kuberadm 安装成功后,clear清除了屏幕数据,加入命令无法查看,使用如下,重新查看node如何加入主节点命令: kubeadm token create --print-join-command --ttl 0 2.画圈的全部是,都复制,在…

反转链表00

题目链接 反转链表 题目描述 注意点 链表中节点的数目范围是 [0, 5000] 解答思路 迭代或递归解决本题 代码 方法一: // 迭代 class Solution {public ListNode reverseList(ListNode head) {if (head null || head.next null) {return head;}ListNode pre…

【原创】jmeter并发测试计划

bankQPS 创建线程组 设置并发参数 HTTP请求GET 添加HTTP请求 GET请求 查看结果树 HTTP请求 POST 添加HTTP请求 参数必须设置头信息格式: 添加HTTP头信息 查看结果树 可以选择,仅查看错误日志 汇总报告

【LLM】解析pdf文档生成摘要

文章目录 一、整体思路二、代码三、小结Reference 一、整体思路 非常简单的一个v1版本 利用langchain和pdfminer切分pdf文档为k块,设置overlap等参数先利用prompt1对每个chunk文本块进行摘要生成,然后利用prompt2对多个摘要进行连贯组合/增删模型可以使…

keras深度学习框架通过简单神经网络实现手写数字识别

背景 keras深度学习框架,并不是一个独立的深度学习框架,它后台依赖tensorflow或者theano。大部分开发者应该使用的是tensorflow。keras可以很方便的像搭积木一样根据模型搭出我们需要的神经网络,然后进行编译,训练,测试…

4.22 TCP 四次挥手,可以变成三次吗?

目录 为什么 TCP 挥手需要四次呢? 粗暴关闭 vs 优雅关闭 close函数 shotdown函数 什么情况会出现三次挥手? 什么是 TCP 延迟确认机制? TCP 序列号和确认号是如何变化的? 在一些情况下, TCP 四次挥手是可以变成 T…

如何识别PCI/PCIE设备需要申请多大的地址空间?

1、PCI/PCIE设备的配置空间 (1)PCI/PCIE设备需要的资源都在配置空间里进行指定,其中需要的地址空间资源在配置空间的基地址寄存器里指定; (2)参考博客:《PCI设备和PCI桥的配置空间(header_type0、header_type1)和配置命令(type0、type1)详解》…

交叉编译 libzdb

参考博客:移植libzdb3.2.2到arm_configure: error: no available database found or s_酣楼驻海的博客-CSDN博客 编译时间 2023-08-23 libzdb 下载: 源码访问如下: https://bitbucket.org/tildeslash/libzdb/src/master/ git 下载链接 …

JavaScript设计模式(一)——构造器模式、原型模式、类模式

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…

Lottery抽奖项目学习第二章第一节:环境、配置、规范

Lottery抽奖项目学习第二章第一节:环境、配置、规范 环境、配置、规范 下面以DDD架构和设计模式落地实战的方式,进行讲解和实现分布式抽奖系统的代码开发,那么这里会涉及到很多DDD的设计思路和设计模式应用,以及互联网大厂开发中…

【GoLang】go入门:go语言执行过程分析 常见数据类型(基本数据类型)

1、go语言执行过程分析 【1】执行流程分析 通过 go build 进行编译 运行上一步生成的可执行文件 通过 go run 命令直接运行 【2】上述两种执行流程的区别 在编译时,编译器会将程序运行时依赖的库文件包含在可执行文件中,所以可执行文件会变大很多通过g…

c++中的基本类型

专栏简介:为什么我要重新介绍c的相关知识,在此之前,我对于c的了解也仅仅是在表面。而在后来与c慢慢的接触中,c编程语言越来越让我觉得深奥,所以还是想要重新开创一个专栏来介绍c。对于c的介绍,本专栏会先介…

学会shell 基本语法,玩转linux

01、获取当前时间,年月日时分秒 now$(date %Y%m%d%H%M%S) echo "$now" 输出为:20181202222727 02、date 在脚本中的几种用法 date %Y 以 4 位数字格式打印年份 date %y 以 2 位数字格式打印年份 date %m 月份 date %d 日期 date %H 小时 d…

IO模型和NGINX安装升级

IO模型和NGINX安装升级 IO模型 IO概念 I/O在计算机中指Input/Output, IOPS (Input/Output Per Second)即每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一。 Linux的IO类型 磁盘I/O 磁盘I/O是进程向内核发起系统调用,请求磁…

抖店出单后怎么操作?谈厂家话术与发货注意事项,抖店最新教程

我是王路飞。 当你的抖店出单后,你是怎么操作的? 还是像之前那样去拼多多代拍发货?这样做的商家,不知道你的店铺被封了几个了? 记住,现在抖店出单后,一定不要再去多多拍单发货了! 关于抖店…

0基础入门C++之类和对象下篇

目录 1.再谈构造函数1.1构造函数赋值1.2初始化列表1.3explicit关键字 2.static成员2.1概念2.1静态成员变量2.2静态成员函数2.3特性 3.匿名对象4.友元函数4.1友元函数4.2友元类 5.内部类6.再次理解类和对象 1.再谈构造函数 首先我们先来回忆一下构造函数: 构造函数是…