数学基础-3D空间的位置表示
转自:http://www.cnblogs.com/gaoxiang12/p/5113334.html
刚体运动
本篇讨论一个很基础的问题:如何描述机器人的位姿。这也是SLAM研究的一个很基本的问题。这里的位姿表示了位置和姿态。描述位置很简单,如果机器人在平面内运动,那么用两个坐标来描述它的位置:
如果在三维空间中运动,则它的位置就用三个空间坐标来表示:
对于姿态来说,在2D情况下还需要增加一个旋转角θ;在3D情况下表达的方式就有多种,常见的如欧拉角、四元素、旋转矩阵等。那么有了位置和姿态,就可以描述一个坐标系;进一步,还能描述坐标系之间的转换关系。常见的问题如:机器人视野中某个点,对世界坐标系的(或地图的)哪个点?这时,就需要先得到该点针对机器人坐标系坐标值,再根据机器人位姿转换到世界坐标系中。
齐次坐标系
在位姿转换中,通常采用射影空间的齐次坐标表示。齐次坐标是什么呢?记n维射影空间为其中一个空间点的坐标为普通的3D坐标加一个齐次分量:
例如,在2维和3维射影空间中的点,分别表示为:
用四个数来表示点,说明点和坐标肯定不是一一对应的。没错,在齐次坐标中,某个点x的分量同乘一个非零常数k后,仍然表示的是同一个点。因此,一个点的具体坐标值不是唯一的。如但是在w不等于0,可以对每一个坐标除以最后一项w,强制最后一项为1,从而得到一个点唯一的坐标表示:
那么为什么要使用齐次坐标来表示呢?原因如下:
1)齐次坐标下点和直线(高维空间里为超平面)能够使用同样的表达。
把点和超平面采用同样的表示,这种做法一个非常直接的好处,是射影几何里的“对偶原理”。该原理是说,任何有关“点”与“平面”的命题,都可以交换“点”与“平面”的概念,得到一个对偶的命题。对偶命题和原命题是一样的。通过“对偶原理”,射影几何的数学家就可以偷懒,只需要证一半定理,因为对偶命题和原命题有同样的涵义。例如,我们证明了 中某条件下三点共线,那么替换概念后的三线共点则自然成立。
2)齐次坐标能囊括无穷远点与无穷远超平面
θθ3)齐次坐标可以方便地将平移与旋转放在一个矩阵中
有关坐标系怎么用齐次坐标进行变换,后文会详细解释。现在我们能表达点了,还剩下一个姿态。由于2D与3D差别较大,我们分而述之。
2D姿态的描述
3D变换
3D的旋转可以由旋转矩阵、欧拉角、四元素等若干种方式描述,它 们也统称为三维旋转群SO(3);而3D的变换即旋转加上位移,是SE(3)。为了和2D变换统一起见,我们首先介绍旋转矩阵表示法。
旋转矩阵描述
数学基础-3D空间的位置表示的更多相关文章
- 视觉SLAM的数学基础 第一篇 3D空间的位置表示
视觉SLAM中的数学基础 第一篇 3D空间的位置表示 前言 转眼间一个学期又将过去,距离我上次写<一起做RGBD SLAM>已经半年之久.<一起做>系列反响很不错,主要由于它为 ...
- Direct3D 11 Tutorial 4: 3D Spaces_Direct3D 11 教程4:3D空间
概述 在上一个教程中,我们在应用程序窗口的中心成功渲染了一个三角形. 我们没有太注意我们在顶点缓冲区中拾取的顶点位置. 在本教程中,我们将深入研究3D位置和转换的细节. 本教程的结果将是渲染到屏幕的3 ...
- WebGL和ThreeJs学习6--射线法确定3D空间中所选物体
一.在 threejs 中如何确定下图3D空间中鼠标点击位置的 object 对象? 二.射线法确定步骤及代码 //Three.js提供一个射线类Raycaster来拾取场景里面的物体.更方便的使用鼠 ...
- OpenGL学习进程(9)在3D空间的绘制实例
本节将演示在3D空间中绘制图形的几个简单实例: (1)在3D空间内绘制圆锥体: #include <GL/glut.h> #include <math.h> # ...
- NeHe OpenGL教程 第五课:3D空间
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- 第05课 OpenGL 3D空间
3D空间: 我们使用多边形和四边形创建3D物体,在这一课里,我们把三角形变为立体的金子塔形状,把四边形变为立方体. 在上节课的内容上作些扩展,我们现在开始生成真正的3D对象,而不是象前两节课中那样3D ...
- 仿QQ空间根据位置弹出PopupWindow显示更多操作效果
我们打开QQ空间的时候有个箭头按钮点击之后弹出PopupWindow会根据位置的变化显示在箭头的上方还是下方,比普通的PopupWindow弹在屏幕中间显示好看的多. 先看QQ空间效果图: ...
- Oracle转移数据表空间存储位置
问题描述:Oracle表空间创建到了C盘,发现C盘的空间不够,现在将表空间的文件转移到D盘下. 操作方法: 1. 先登录sqlplus,登录用户.在cmd中输入:sqlplus /nologSQL&g ...
- 3D空间包围球(Bounding Sphere)的求法
引言 在3D碰撞检測中,为了加快碰撞检測的效率,降低不必要的碰撞检測,会使用基本几何体作为物体的包围体(Bounding Volume, BV)进行測试.基本包围体的碰撞检測相对来说廉价也easy的多 ...
随机推荐
- uva10943(隔板法)
很裸的隔板法. 引用一下维基上对隔板法的解释: 现在有10个球,要放进3个盒子里 ●●●●●●●●●● 隔2个板子,把10个球被隔开成3个部份 ●|●|●●●●●●●●.●|●●|●●●●●●●.●| ...
- ProjectEuler654
我,ycl:BM是什么早就忘了! 毕老爷:那你们可以做一做这道题练练BM板子啊. 传送门 //Achen #include<bits/stdc++.h> #define For(i,a,b ...
- ORACLE删除用户的有的表的方法
首先我们查询oracle用户下的所有表 select * from all_tab_comments -- 查询所有用户的表,视图等select * from user_tab_comments ...
- ConcurrentHashMap的扩容机制(jdk1.8)
ConcurrentHashMap相关的文章网上有很多,而关于ConcurrentHashMap扩容机制是很关键的点,尤其是在并发的情况下实现数组的扩容的问题经常会碰到,看到这篇写的具有代表性,详细讲 ...
- Python获取%appdata%路径的方法
import osimport sys import winreg print(os.name)print(sys.getdefaultencoding())print(sys.version)pri ...
- POJ2230(打印欧拉回路)
Watchcow Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 7473 Accepted: 3270 Specia ...
- 一些js和JQuery的方法
取值填值: js: get-- innerText, innerHTML, value; set-- innerText=?, innerHTML=?, value=?; JQuery: get-- ...
- PV 和 UV IP
PV(page view),即页面浏览量,或点击量;通常是衡量一个网络新闻频道或网站甚至一条网络新闻的主要指标. 高手对pv的解释是,一个访问者在24小时(0点到24点)内到底看了你网站几个页面.这里 ...
- Mina2中IoService
Apache MINA 2 是一个开发高性能和高可伸缩性网络应用程序的网络应用框架.它提供了一个抽象的事件驱动的异步 API,可以使用 TCP/IP.UDP/IP.串口和虚拟机内部的管道等传输方式. ...
- 愿天下有情人都是失散多年的兄妹(bfs)
L2-016. 愿天下有情人都是失散多年的兄妹 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 呵呵.大家都知道五服以内不得通婚 ...