SLAM中的变换(旋转与位移)表示方法

1、旋转矩阵

注:旋转矩阵标题下涉及到的SLAM均不包含位移。

根据同一点P在不同坐标系下e(e1,e2,e3)e‘(e1‘,e2‘,e3)的坐标a(a1,a2,a3)a‘(a1‘,a2‘,a3)有如下等式成立:

 

a = eTe‘a‘,其中eTe‘设为R为旋转矩阵a = Ra‘,由此便得到P在e‘坐标系下到e坐标系下的坐标变换

SLAM中一般a‘为相机坐标系下坐标Pc,a为世界坐标系下坐标Pw则有Pw = RPc

其中R = eTe‘  →  eR = e‘

如果把R分成三个列向量,则每个列向量即为e’坐标系的基在e坐标系下的坐标。

与此对应SLAM中即为相机坐标系下的坐标轴在世界坐标系下的坐标。

(a11,a21,a31)即为基e1e坐标系下的坐标(e‘坐标系的另两个基e‘,e亦如此)。

与此对应的slam中即为相机坐标系下坐标轴在世界坐标系下的坐标。

SLAM中这里的R一般被称为相机的姿态(不是位姿,不包含平移)。

原文地址:https://www.cnblogs.com/narjaja/p/8577098.html

时间: 2024-10-08 09:38:08

SLAM中的变换(旋转与位移)表示方法的相关文章

opengl中场景变换|2D与3D互转换(转)

opengl中场景变换|2D与3D互转换 我们生活在一个三维的世界——如果要观察一个物体,我们可以: 1.从不同的位置去观察它.(视图变换) 2.移动或者旋转它,当然了,如果它只是计算机里面的物体,我们还可以放大或缩小它.(模型变换) 3.如果把物体画下来,我们可以选择:是否需要一种“近大远小”的透视效果.另外,我们可能只希望看到物体的一部分,而不是全部(剪裁).(投影变换) 4.我们可能希望把整个看到的图形画下来,但它只占据纸张的一部分,而不是全部.(视口变换) 这些,都可以在OpenGL中实

视觉SLAM中的数学基础 第三篇 李群与李代数

视觉SLAM中的数学基础 第三篇 李群与李代数 前言 在SLAM中,除了表达3D旋转与位移之外,我们还要对它们进行估计,因为SLAM整个过程就是在不断地估计机器人的位姿与地图.为了做这件事,需要对变换矩阵进行插值.求导.迭代等操作.例如,在经典ICP问题中,给定了两组3D点,我们要计算它们之间的变换矩阵.假设第一组的3D点为$\mathbf{P}=\{ \mathbf{p}_i | i = [1,2, \ldots, N] \}$,第二组3D点为$\mathbf{Q}=\{ \mathbf{q}

视觉SLAM中的数学基础 第二篇 四元数

视觉SLAM中的数学基础 第二篇 四元数 什么是四元数 相比欧拉角,四元数(Quaternion)则是一种紧凑.易于迭代.又不会出现奇异值的表示方法.它在程序中广为使用,例如ROS和几个著名的SLAM公开数据集.g2o等程序都使用四元数记录机器人的姿态.因此,理解四元数的含义与用法,对学习SLAM来说是必须的.本节我们就来讲讲四元数. 首先,请读者不要对四元数有什么神秘的感觉.四元数仅是3D姿态的一种表达方式,我们用一个单位四元数表达原本用旋转矩阵表示的三维旋转.这样做一个直接的好处是省空间.一

视觉SLAM中李群李代数与四元数总结

在SLAM中经常会用到李群李代数与四元数来表示旋转变换,这些数学公式往往需要推导来推导去,分分钟搞到头都大了.但在SLAM中往往用到其中那么几个固定的性质,所以是没有必要对这些数学基础作过多深入的研究,只需要记住其中一些常用的公式及性质即可.因此,本人在这里对这些数学基础作一个简单的总结,以便日后在工程中使用. 旋转的表示方式 SLAM中,往往会使用三种方式来表达空间中的旋转变换,分别为:旋转向量.旋转矩阵.四元数. 旋转向量 旋转向量可以非常直观地表示空间中的一个旋转变换:假设空间中有一单位向

Android图片旋转,缩放,位移,倾斜,对称完整示例(一)——imageView.setImageMatrix(matrix)和Matrix

MainActivity如下: import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.ImageView; import android.app.Activity; import android.graphics.Matrix; /** * Demo描述:

Android图片旋转,缩放,位移,倾斜,对称完整示例(二)——Bitmap.createBitmap()和Matrix

MainActivity如下: package cc.c; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Matrix; import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; import android.widget.ImageView; /** * Demo描述: * 利用B

C#中图片单击旋转事件

#region 图片单击旋转事件        private void pb_Heads_Click(object sender, EventArgs e)        {            System.Drawing.Image myImage = pb_Heads.Image;            myImage.RotateFlip(RotateFlipType.Rotate90FlipXY);            pb_Heads.Image = myImage;     

【转】如何在 Android 程序中禁止屏幕旋转和重启Activity

原文网址:http://www.cnblogs.com/bluestorm/p/3665890.html 禁止屏幕随手机旋转变化 有时候我们希望让一个程序的界面始终保持在一个方向,不随手机方向旋转而变化:在AndroidManifest.xml的每一个需要禁止转向的Activity配置中加入android:screenOrientation=”landscape” 属性. landscape = 横向portrait = 纵向 避免在转屏时重启Activity android中每次屏幕方向切换时

SLAM中的非线性优化

总结一下SLAM中关于非线性优化的知识. 先列出参考: http://jacoxu.com/jacobian%E7%9F%A9%E9%98%B5%E5%92%8Chessian%E7%9F%A9%E9%98%B5/ http://blog.csdn.net/dsbatigol/article/details/12448627 http://www.cnblogs.com/rongyilin/archive/2012/12/21/2827898.html <视觉SLAM十四讲>. 1. 雅克比矩