Eigen::Isometry3d入门
本文为入门笔记,详细请看大佬文章,写的非常具体。
关于矩阵的左乘右乘详情请看知乎大佬-Lpip Sam,和知乎大佬-小兔纸的大魔王很详细。
欧式变换也称为等距变换(Isometry Transform),可以看作是维持任意两点距离不变的仿射变换。
(Rotatetranslation0T1)\left( \begin{matrix} Rotate &translation \\ 0^T & 1 \\ \end{matrix} \right)(Rotate0Ttranslation1)
0.初始化
共两种方法,第一种使用较为频繁。
//设置旋转向量VEigen::AngleAxisd V(3.1415926 / 4, Eigen::Vector3d(1, 0, 1).normalized());//设置平移向量Eigen::Vector3d translation(1, 3, 4);//将T初始化为单位阵,再做其他操作。//虽然称为3D,实质上为4*4矩阵。Eigen::Isometry3d T= Isometry3d::Identity();
1.两种求欧式变换矩阵
//设置欧式变换矩阵——方式1//此种方式和下一种方式输出相同。//a.translate(b)等价于aXb,描述的是在世界坐标系下的平移(虽然b在设置时为只含有3个元素列向量,猜想内部可能会有操作时其为下面这种形式)。//形式为 0 0 0 1// 0 0 0 3// 0 0 0 4// 0 0 0 0//此操作相当于将translation中的数值放入欧式变换矩阵translation位置(注意!!!此种效果的前提T为单位矩阵)//结果为 1 0 0 1// 0 1 0 3// 0 0 1 4// 0 0 0 1T.translate(translation);//a.rotate(b)等价于aXb,描述的是在世界坐标系下的旋转。T.rotate(V);//结果为 0.853553 -0.5 0.146447 1// 0.5 0.707 -0.5 3// 0.146447 0.5 0.853553 4// 0 0 0 1//matrix()返回变换对应的矩阵,T输出时用此函数。std::cout << T.matrix() << std::endl;/*----------------------------------------------------------------------------------------------------------------------------------------------*///设置欧式变换矩阵——方式2//凡是前面带pre的函数,相当于右乘。//a.rotate(b)等价于aXb,描述的是在世界坐标系下的旋转。//结果为 0.853553 -0.5 0.146447 0// 0.5 0.707 -0.5 0// 0.146447 0.5 0.853553 0// 0 0 0 1T.rotate(V);//我们的目的是为了形成文章开头欧式变换的矩阵,//变换顺序必须是先平移,再旋转,也就是单位矩阵E X 平移矩阵T X 旋转矩阵R。//按照R右乘T也就是T X R,实际和方式1相同T左乘R(T X R)这样理解就可以,//但是根据查看源码,只有在mode==Projective时为右乘,否则为T+translation,//然而translation为含有3个元素的列向量,这也印证了之前的猜想,有内部机制使translation转换成下面的形式//形式为 0 0 0 1// 0 0 0 3// 0 0 0 4// 0 0 0 0T.pretranslate(translation);//结果为 0.853553 -0.5 0.146447 1// 0.5 0.707 -0.5 3// 0.146447 0.5 0.853553 4// 0 0 0 1//matrix()返回变换对应的矩阵,T输出时用此函数。std::cout << T.matrix() << std::endl;
Eigen::Isometry3d入门相关推荐
- 视觉SLAM十四讲 ch3 Ubuntu18.04 KDevelop的使用及Eigen实践 入门笔记
视觉SLAM十四讲 ch3 Ubuntu18.04 KDevelop的使用及Eigen实践 入门笔记 一.创建KDevelop项目 二.编写程序 一.创建KDevelop项目 你的电脑上如果还没有安装 ...
- C++矩阵库 Eigen 快速入门
Eigen 矩阵定义 #include <Eigen/Dense>Matrix<double, 3, 3> A; // Fixed rows and cols. Same as ...
- 【Eigen】学习Eigen的一些总结——快速入门指南(一)
Eigen 快速入门指南 Eigen Quick reference guide 模块和头文件 Eigen库分为一个核心模块和几个附加模块.每个模块都有一个相应的头文件,为了使用模块必须包含该头文件. ...
- SLAM——之Eigen函数库
0. Eigen/四元数/欧拉角/旋转矩阵 相关系列文章 SLAM--之Eigen入门(矩阵运算及几何模块) SLAM--之Eigen函数库,一个相对复杂的EIgen使用实例 SLAM--Eigen函 ...
- Eigen库学习教程(全)
说明:本教程主要是对eigen官网文档做了一个简要的翻译,参考了eigen官网以及一些博主的技术贴,在此表示感谢. Eigen是一个高层次的C ++库,有效支持线性代数,矩阵和矢量运算,数值分析及其相 ...
- 最详细的Eigen笔记
在博文<三维空间中刚体运动>中介绍了三维空间刚体运动和坐标转换的概念,包括坐标变换的各中表示:旋转矩阵.四元数.旋转角.旋转向量.变换矩阵等,初步尝试了使用Eigen进行坐标变换.本文在此 ...
- 视觉SLAM十四讲学习笔记-第三讲-相似、仿射、射影变换和eigen程序、可视化演示
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...
- 【SLAM笔记】如何使用Eigen进行矩阵运算
SLAM笔记专栏:https://blog.csdn.net/weixin_44543463/category_10925276.html 本文目录 一.Eigen库的介绍与安装 1.1 Eigen是 ...
- eigen坐标变换_Eigen实现坐标转换
(<视觉SLAM十四讲>第三讲习题7)设有小萝卜一号和二号在世界坐标系中.一号位姿q1 = [0.35, 0.2, 0.3, 0.1],t1=[0.3, 0.1, 0.1].二号位姿q2= ...
最新文章
- Golang 解决no buildable Go source file in问题
- python 将元组解析为多个参数
- oracle11 处理器数,11G AWR中%Total CPU与%Busy CPU指标的疑问
- 小白设计模式:组合模式
- JAVA 实现生命游戏
- 电教室软件 linux,在深度操作系统上安装多媒体电子教室Veyon
- kafka彻底删除topic清理数据
- Java反射 二三事
- 婆媳关系处理不好本质上是没有大局观
- 最全最丰富的随机图片调用接口——三千之图
- 计算机软件水平考试什么题型,计算机软考考什么内容
- 全志T3开发板——嵌入式入门学习测试教程(6)
- js关闭谷歌浏览器的当前页面
- 远程桌面连接:提示出现身份验证错误,要求的函数不受支持。这可能是由于CredSSP加密数据库修正错误。
- python ftp登陆(匿名)
- dup, dup2, 重定向恢复
- 【C#通过共享内存MemoryMappedFile解码和播放WavPack等PCM音频】
- 服务器皮肤显示mod怎么用,Dota2自制皮肤怎么用 Dota2替换mod使用教程
- Java开发6年了,手把手教会你,大厂直通车!
- Shell 判断文件是否存在的方法