Sophus降维、升维与欧拉角、旋转向量的爱恨情仇

news/2025/2/1 14:43:10/

0. 简介

在面对二维与三维之间的转换时,我们常常会困惑该如何去转换,在G2O中存在有理想的坐标转换工具,但是在Sophus中却缺乏这样的手段。之前在Sophus处简要的介绍了一下SE(2)与SE(3)的转换,最近发现之前的文章这部分需要拿出来详细的说一说。

1. 欧拉角与旋转向量

欧拉角、旋转向量、四元数和旋转矩阵是Sophus中常常提到的几个名词,欧拉角和旋转向量是类似的,SO(3)的旋转矩阵有9个量,但是只有3个自由度,并且是单位正交矩阵,具有冗余性,对其估计或优化问题的求解不方便。我们可以用一个旋转轴和一个旋转角描述任意旋转。一个方向与旋转轴一致,长度(模)等于旋转角的向量,我们称之为旋转向量(或轴角)

旋转向量到旋转矩阵:

R=cosθI+(1−cosθ)nnT+sinθn^R = cos\theta I+(1-cos\theta)nn^T+sin\theta \hat{n}R=cosθI+(1cosθ)nnT+sinθn^

其中提到的n^\hat{n}n^是向量的旋转矩阵,由于是反对称矩阵,所以只存在三个自由度,我们可以X−Y−ZX-Y-ZXYZ轴来规定其反对称矩阵轴:
n^=[0−nznynz0−nx−nynx0]\hat{n}=\begin{bmatrix} 0 && -{n_z} && {n_y} \\ {n_z} && 0 && -{n_x} \\ -{n_y} && {n_x} && 0 \end{bmatrix}n^=0nznynz0nxnynx0

所以我们可以从se,so中得到旋转向量数值。而欧拉角对于轴角表示情况,转轴具有2个自由度,转角1个自由度。 根据三次基本转动选取的坐标轴的不同,欧拉角共有12种组合。如 果再考虑到可选取原始坐标系的坐标轴,也可选取“新”坐标系的坐标轴,则共有24种欧拉角表示。一般规定原始坐标系为静坐标系,每个基本转动后形成的新坐标系为动坐标系。

  • 24 种欧拉角表示列举如下:
  • 静轴(即转轴选静坐标系的坐标轴):
    sXYZ,sXZY,sXYX,sXYZ,sXZY,sXYX,sXYZ,sXZY,sXYX,
    sXZX,sYXZ,sYZX,sXZX,sYXZ,sYZX,sXZX,sYXZ,sYZX,
    sYXY,sYZY,sZXY,sYXY,sYZY,sZXY,sYXY,sYZY,sZXY,
    sZYX,sZXZ,sZYZsZYX,sZXZ,sZYZsZYX,sZXZ,sZYZ

动轴(即转轴选动坐标系的坐标轴):

rZYX,rYZX,rXYX,rZYX,rYZX,rXYX,rZYX,rYZX,rXYX,
rXZX,rZXY,rXZY,rXZX,rZXY,rXZY,rXZX,rZXY,rXZY,
rYXY,rYZY,rYXZ,rYXY,rYZY,rYXZ,rYXY,rYZY,rYXZ,
rXYZ,rZXZ,rZYZrXYZ,rZXZ,rZYZrXYZ,rZXZ,rZYZ

静轴欧拉角和动轴欧拉角有如下规律:
绕静轴 XYZXYZXYZ 分别 转 α,β,γα,β,γα,β,γ 角度的转动与绕动轴 ZYXZYXZYX分别转 γ,β,αγ,β,αγ,β,α 角度的转动等价,其他形式的欧拉角亦有此类似规律。

对于不同的坐标系定义,有不同的转换关系。我们只讨论常用的一种情况:如上图,右手系,Z轴朝上,X轴朝前,y轴朝左。绕Z轴作偏航(Yaw)运动,绕Y轴作俯仰(Pitch)运动,绕X轴作滚转(Roll)运动,运动正方向如上图所示。在这里插入图片描述
对于欧拉角计算公式我们可以得到 α,β,γα,β,γα,β,γ 三个角度计算得到的旋转矩阵
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上式中RRR与旋转次序有关,即当θz,θy,θxθz,θy,θxθzθyθx不都为小角时,对应于不同的旋转次序,空间坐标系b的最终位置时不同的,这就是有限转动的不可交换性。但是当θz,θy,θxθz,θy,θxθzθyθx都为小角时,忽略小角间的高阶小量,即:Δx→0,cosΔx→1,sinΔx→ΔxΔx→0,cosΔx→1,sinΔx→ΔxΔx0,cosΔx1sinΔxΔx
R≈n^=[0−nznynz0−nx−nynx0]R \approx \hat{n}=\begin{bmatrix} 0 && -{n_z} && {n_y} \\ {n_z} && 0 && -{n_x} \\ -{n_y} && {n_x} && 0 \end{bmatrix}Rn^=0nznynz0nxnynx0

其中θz,θy,θxθz,θy,θxθzθyθx角度为弧度,此时θz,θy,θxθz,θy,θxθzθyθx构成的列向量[θz,θy,θx]T[θz,θy,θx]^T[θzθyθx]T可视为三维空间的(旋转)矢量,此时旋转后的坐标系的最终角位置与旋转次序无关:无限转动与旋转次序无关

2. SE(2)与SE(3)的转换

SE(2),通常是作为二维向量的表示形式,基本的组成部分为x,y,yawx,y,yawx,y,yaw三参数,其格式如下:
在这里插入图片描述
SE(3)则是在上式的基础上加入zzz轴,其格式如下:

[xwywzw1]=[c1c3+s1s2s3c3s1s2−c1s3c2s1twxc2s3c2c3−s2twyc1s2s3−s1c3s1s3+c1c3s2c1c2twz0001]×[xyz1]\begin{bmatrix} x_w \\ y_w \\ z_w \\ 1\end{bmatrix} =\begin{bmatrix} {c_1 c_3 + s_1 s_2 s_3} && {c_3 s_1 s_2 - c_1 s_3} && {c_2 s_1} && t_wx \\ {c_2 s_3} && {c_2 c_3} && -{s_2} && t_wy \\ {c_1 s_2 s_3 - s_1 c_3} && {s_1 s_3 + c_1 c_3 s_2} && {c_1 c_2} && t_wz \\ 0 && 0 && 0 && 1\end{bmatrix} \times \begin{bmatrix} x \\ y \\ z \\ 1\end{bmatrix}xwywzw1=c1c3+s1s2s3c2s3c1s2s3s1c30c3s1s2c1s3c2c3s1s3+c1c3s20c2s1s2c1c20twxtwytwz1×xyz1

在这里插入图片描述

李群SO(3)SE(3)
旋转矩阵构建Sophus::SO3d SO3(R)Sophus::SE3d SE3(R,t)
四元数构建Sophus::SO3d SO3(q)Sophus::SO3d SO3(q,t)
输出SO3.matrix()SE3.matrix()
对数映射Vector3d so3=SO3.log()Vecotr6d se3=SE3.log()
指数映射SO3d::exp(so3)SE3d::exp(se3)
向量到反对称矩阵SO3d::hat(so3)SE3d::hat(se3)
反对称矩阵到向量SO3d::vee(hat)SE3d::vee(hat)

3. 示例代码

…详情请参照古月居


http://www.ppmy.cn/news/11312.html

相关文章

《后端技术面试 38 讲》学习笔记 Day 05

《后端技术面试 38 讲》学习笔记 Day 05 17 | 设计模式应用:编程框架中的设计模式 原文摘抄 框架是对某一类架构方案可复用的设计与实现。 框架应该满足开闭原则,即面对不同应用场景,框架本身是不需要修改的,需要对修改关闭。 同…

OBS 基础11 添加自定义对话框 扩展,添加拉伸功能

目录 一、设置不同位置光标形状 1、上下左右,四个边角 加一个正常光标

大网规划部署刷题讲解(带答案)

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.大网规划刷题 前言 本章将会讲解大网规划刷题的讲解。 一.大网规划刷题 …

yolov1 论文精读 - You Only Look Once- Unified, Real-Time Object Detection-统一的实时目标检测

Abstract 我们提出了一种新的目标检测方法- YOLO。以前的目标检测工作重复利用分类器来完成检测任务。相反,我们将目标检测框架看作回归问题,从空间上分割边界框和相关的类别概率。单个神经网络在一次评估中直接从整个图像上预测边界框和类别概率。由于…

【BP靶场portswigger-服务端10】XML外部实体注入(XXE注入)-9个实验(全)

前言: 介绍: 博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章)。 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员&…

Redis(三)数据类型set

一、介绍Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动去重的,当需要存储一个列表数据又不希望重复数据时,set是一个很好的选择;并且set提供了判断某个成员是否在一个集合内的重要接口&#xff0…

13.Isaac教程--模型制作

模型制作 ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 该软件包演示了具有软件定义装配工作流程的工厂场景。 在模拟工厂环境中,多个 AMR 在装配站之间运输材料,而每个装配站的机械臂拾取所需材料并将其放置在对接的 …

【C++、数据结构】AVL树 模拟实现

文章目录📖 前言1. AVL树的概念1.1 二叉搜索树的缺点:1.2 AVL树的引入:1.2 AVL树的性质:2. AVL树的模拟实现2.1 AVL树结点的定义:2.2 AVL树的插入:(重点)2.2.1 插入结点后平衡因子的…