位姿估计和坐标系变换

2024-06-07 23:18
文章标签 位姿 坐标系 变换 估计

本文主要是介绍位姿估计和坐标系变换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SLAM是一个“鸡生蛋和蛋生鸡”的问题,要定位需要重建,一般通过当前sensor看到到场景跟建好的地图进行匹配确定自身的位置。简单的例子:比如你在平面上,别人问你的坐标,那么很显然你得先有坐标系。要重建又需要精确的定位信息,如果没有相机位姿,那么当前帧数据无法统一注册到世界坐标系下。

在SLAM中,所谓的位姿其实指的是相机在世界坐标系中的位姿。位姿包括两方面:位置和姿势,即三维坐标和朝向。如下所示,建图的过程就需要知道每一刻相机的位姿,从而将当前相机捕获的点云注册到全局的点云模型中。
在这里插入图片描述
常用的变换有:世界坐标系 -> 相机坐标系相机的位姿 -> 世界坐标系
如下所示:世界坐标系为 w x y wxy wxy, 相机坐标系为 c x ’ y ’ cx^’y^’ cxy P P P在世界坐标下的坐标为 ( a , b ) (a,b) (a,b), P P P在相机坐标系下的坐标为 ( a ’ b ’ ) (a^’b^’) (ab)

(1) 已知相机坐标系在世界坐标系的位姿为: T c w T_{cw} Tcw, 世界坐标中的点 P w P_w Pw, 那么相机坐标系的坐标为 P c = T c w − 1 P w P_c = T^{-1}_{cw}P_w Pc=Tcw1Pw
(2) 已知相机坐标系在世界坐标系的位姿为: T c w T_{cw} Tcw, 相机坐标中的点 P c P_c Pc, 那么世界坐标系的坐标为 P w = T c w P c P_w = T_{cw}P_c Pw=TcwPc

T c w T_{cw} Tcw T c w − 1 T^{-1}_{cw} Tcw1均可作为相机位姿, 主流的如ORBSLAM采用后者作为相机的位姿。
在这里插入图片描述
可以检验一下:
(1)只包含平移,相机坐标系在世界坐标下只有平移,平移向量为 ( 2 , 2 ) (2,2) (2,2), 那么 T c w = [ 1 0 2 0 1 2 0 0 1 ] T_{cw} = \begin{bmatrix} 1 & 0 & 2\\ 0 & 1 & 2\\ 0 & 0 & 1 \end{bmatrix} Tcw=100010221 T c w − 1 = [ 1 0 − 2 0 1 − 2 0 0 1 ] T^{-1}_{cw} = \begin{bmatrix} 1 & 0 & -2\\ 0 & 1 & -2\\ 0 & 0 & 1 \end{bmatrix} Tcw1=100010221
已知世界坐标系中的坐标为 P w ( 3 , 3 ) P_w(3,3) Pw(3,3), 转换到相机坐标系下为: P c = T c w − 1 P w = [ 1 0 − 2 0 1 − 2 0 0 1 ] ∗ [ 3 3 1 ] = [ 1 1 1 ] P_c = T^{-1}_{cw} P_w = \begin{bmatrix} 1 & 0 & -2\\ 0 & 1 & -2\\ 0 & 0 & 1 \end{bmatrix} * \begin{bmatrix} 3 \\ 3 \\ 1 \end{bmatrix} = \begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix} Pc=Tcw1Pw=100010221331=111。因此,相机坐标系下的坐标 P c = ( 1 , 1 ) P_c = (1,1) Pc=(1,1)
反之,已知相机坐标系下的坐标 P c ( 1 , 1 ) P_c(1,1) Pc(1,1), 转换到世界坐标系下为: P w = T c w P c = [ 1 0 2 0 1 2 0 0 1 ] ∗ [ 1 1 1 ] = [ 3 3 1 ] P_w = T_{cw} P_c = \begin{bmatrix} 1 & 0 & 2\\ 0 & 1 & 2\\ 0 & 0 & 1 \end{bmatrix} * \begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix} = \begin{bmatrix} 3 \\ 3 \\ 1 \end{bmatrix} Pw=TcwPc=100010221111=331, 因此,世界坐标系下的坐标 P w = ( 3 , 3 ) P_w = (3,3) Pw=(3,3)
在这里插入图片描述
(2)只包含旋转, 相机坐标系在世界坐标系中逆时针旋转了 180 ° 180\degree 180°, 那么位姿矩阵 T c w = [ − 1 0 0 0 − 1 0 0 0 1 ] T_{cw} = \begin{bmatrix} -1 & 0 & 0\\ 0 & -1 & 0\\ 0 & 0 & 1 \end{bmatrix} Tcw=100010001, T c w − 1 = [ − 1 0 0 0 − 1 0 0 0 1 ] T^{-1}_{cw} = \begin{bmatrix} -1 & 0 & 0\\ 0 & -1 & 0\\ 0 & 0 & 1 \end{bmatrix} Tcw1=100010001,

已知世界坐标系中的坐标为 P w ( 3 , 3 ) P_w(3,3) Pw(3,3), 转换到相机坐标系下为 P c = T c w − 1 P w = ( − 3 , − 3 ) P_c = T^{-1}_{cw} P_w = (-3,-3) Pc=Tcw1Pw=(3,3)
反之,相机坐标下的坐标为 P c ( − 3 , − 3 ) P_c(-3,-3) Pc(3,3), 转换到世界坐标系下为 P w = T c w P c = ( 3 , 3 ) P_w = T_{cw}P_c = (3,3) Pw=TcwPc=(3,3)

(3)既包含旋转又包含平移,先逆时针旋转 180 ° 180\degree 180°, 然后平移 ( 2 , 2 ) (2,2) (2,2), 因此 T c w = [ 0 − 1 2 1 0 2 0 0 1 ] T_{cw} = \begin{bmatrix} 0 & -1 & 2\\ 1 & 0 & 2\\ 0 & 0 & 1 \end{bmatrix} Tcw=010100221, T c w − 1 = [ 0 1 − 2 − 1 0 2 0 0 1 ] T^{-1}_{cw} = \begin{bmatrix} 0 & 1 & -2\\ -1 & 0 & 2\\ 0 & 0 & 1 \end{bmatrix} Tcw1=010100221,
已知世界坐标系中的坐标为 P w ( 2 , 2 ) P_w(2,2) Pw(2,2), 转换到相机坐标系下为 P c = T c w − 1 P w = ( 0 , 0 ) P_c =T^{-1}_{cw} P_w = (0,0) Pc=Tcw1Pw=(0,0)
已知世界坐标系中的坐标为 P w ( 3 , 3 ) P_w(3,3) Pw(3,3), 转换到相机坐标系下为 P c = T c w − 1 P w = ( 1 , − 1 ) P_c =T^{-1}_{cw} P_w = (1,-1) Pc=Tcw1Pw=(1,1)
反之,已知相机坐标系中的坐标为 P c ( 0 , 0 ) P_c(0,0) Pc(0,0), 转换到相机坐标系下为 P w = T c w P c = ( 2 , 2 ) P_w =T_{cw} P_c = (2,2) Pw=TcwPc=(2,2)

这篇关于位姿估计和坐标系变换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1040583

相关文章

OSG数学基础:坐标系变换

三维实体对象需要经过一系列的坐标变换才能正确、真实地显示在屏幕上。在一个场景中,当读者对场景中的物体进行各种变换及相关操作时,坐标系变换是非常频繁的。坐标系变换通常包括:世界坐标系-物体坐标系变换、物体坐标系-世界坐标系变换和世界坐标系-屏幕坐标系变换(一个二维平面坐标系,即显示器平面,是非常标准的笛卡尔坐标系的第一象限区域)。 世界坐标系-物体坐标系变换 它描述的问题主要是关于物体本身的

【论文精读】分类扩散模型:重振密度比估计(Revitalizing Density Ratio Estimation)

文章目录 一、文章概览(一)问题的提出(二)文章工作 二、理论背景(一)密度比估计DRE(二)去噪扩散模型 三、方法(一)推导分类和去噪之间的关系(二)组合训练方法(三)一步精确的似然计算 四、实验(一)使用两种损失对于实现最佳分类器的重要性(二)去噪结果、图像质量和负对数似然 论文:Classification Diffusion Models: Revitalizing

基于协方差信息的Massive MIMO信道估计算法性能研究

1. 引言 随着移动互联网不断发展,人们对通信的速率和可靠性的要求越来越高[1]。目前第四代移动通信系统已经逐渐商用,研究人员开始着手研究下一代移动通信系统相关技术[2][3]。在下一代移动通信系统中要求下行速率达到10Gbps,这就要求我们使用更先进的技术和更宽的系统带宽。MIMO技术由于可以在不增加系统带宽和功率的前提下,成倍的提升系统容量和可靠性,已经广泛应用于各种无线通信系统中,但仅采用

【pytorch06】 维度变换

常用API view/reshapesqueeze/unsqueezetranspose/t/permuteexpand/repeat view和reshape view操作的基本前提是保证numel()一致 a.view(4,28*28)的物理意义是把行宽以及通道合并在一起,对于4张图片,我们直接把所有数据都合在一起,用一个784维的向量来表示,这样所有的二维信息上下左右位置信息就忽略

基于CDMA的多用户水下无线光通信(2)——系统模型和基于子空间的延时估计

本文首先介绍了基于CDMA的多用户UOWC系统模型,并给出了多用户收发信号的数学模型。然后介绍基于子空间的延时估计算法,该算法只需要已知所有用户的扩频码,然后根据扩频波形的循环移位在观测空间的信号子空间上的投影进行延时估计。 1、基于CDMA的多用户UOWC系统模型   首先介绍基于CDMA的多用户UOWC系统模型,系统框图如下图所示。   该系统包括发送端、UOWC信道和接收端。该系统

【C++PCL】点云处理稳健姿态估计配准

作者:迅卓科技 简介:本人从事过多项点云项目,并且负责的项目均已得到好评! 公众号:迅卓科技,一个可以让您可以学习点云的好地方 重点:每个模块都有参数如何调试的讲解,即调试某个参数对结果的影响是什么,大家有问题可以评论哈,如果文章有错误的地方,欢迎来指出错误的地方。 目录         1.原理介绍         2.代码效果         3.源码展示         4.

【CSS】深入解释CSS 2D变换

CSS 2D变换(CSS 2D Transformations)是CSS3引入的一组功能,允许你对HTML元素进行2D空间内的移动、旋转、缩放和倾斜等操作。这些变换不会影响到页面的布局,因为它们只是视觉上改变元素的呈现方式,而不是改变其在文档流中的位置或大小。 以下是CSS 2D变换的详细解释: 1. transform 属性 transform 属性用于在2D或3D空间中移动、旋转、缩放或

NX/UG二次开发—CAM—获取加工环境下所有程序组、刀具组、加工坐标系并输出名称

以下代码为CAM所有程序组、刀具组、加工坐标系并输出名称   源文件在群共享文件中。(QQ群:1023204977)

昇思25天学习打卡营第4天 | 数据变换

内容介绍:通常情况下,直接加载的原始数据并不能直接送入神经网络进行训练,此时我们需要对其进行数据预处理。MindSpore提供不同种类的数据变换(Transforms),配合数据处理Pipeline来实现数据预处理。所有的Transforms均可通过`map`方法传入,实现对指定数据列的处理。 具体内容: 1. 导包 import numpy as npfrom PIL import Im

Depth Anything V2:抖音开源高性能任何单目图像深度估计V2版本,并开放具有精确注释和多样化场景的多功能评估基准

📜文献卡 题目: Depth Anything V2作者: Lihe Yang; Bingyi Kang; Zilong Huang; Zhen Zhao; Xiaogang Xu; Jiashi Feng; Hengshuang ZhaoDOI: 10.48550/arXiv.2406.09414摘要: This work presents Depth Anything V2. With