1.先想象一下,有两个个三维的坐标系W、C,在W中和C中有一个相同的向量,其实就是一个点,但是由于坐标系不同,两个点坐标表示为Pw和Pc

  • 因为是同一个向量所以两者关系可以表示为
  • Pw=R*Pc+t
R:表示旋转
t:表示平移量
因此
R*Pc:表示向量pc旋转R到向量pw
+t:表示向量pc平移t到向量pw

2.再想象一下,如果你想让一个向量旋转,有两种方法,一个是你的向量真的在旋转,另一种方法就是你的坐标系旋转。平移也是一样的道理,所以:

R*Pc:表示坐标系W旋转R到坐标系C
+t:表示坐标系W平移t到坐标系C

我们将R、t,记为Rwc(33),twc(31)组合到一起形成Twc(4*4)矩阵.

3.因此可以得到结论

  1. twc就是C坐标系原点在W坐标系的坐标。
  2. Rwc是C坐标系在W坐标系的姿态
  3. Twc*Pc表示将C坐标系中的点坐标转换到W坐标系

实例:

在文件夹 devkit_odometry/devkit/reame.txt 中说明: 在poses目录下,包含00.txt-10.txt 11个文件记录真实轨迹参照,每一个文件都由Nx12个数据组成,N代表帧数。第i行利用3x4变换矩阵代表第i帧在左目相机(也就是世界坐标系)坐标系统的位姿,这个矩阵将当前第i帧坐标系的一个点映射到第0帧的坐标系统中。变换矩阵中平移的部分表示当前相机位置(相对于第0帧)。
总结:

  • 变换矩阵中平移的部分表示当前相机位置(相对于第0帧)。
  • 每一行都代表的是第i帧对应的Tw ci

原文: Folder ‘poses’: The folder ‘poses’ contains the ground truth poses (trajectory) for the first 11 sequences. This information can be used for training/tuning your method. Each file xx.txt contains a N x 12 table, where N is the number of frames of this sequence. Row i represents the i’th pose of the left camera coordinate system (i.e., z pointing forwards) via a 3x4 transformation matrix. The matrices are stored in row aligned order (the first entries correspond to the first row), and take a point in the i’th coordinate system and project it into the first (=0th) coordinate system. Hence, the translational part (3x1 vector of column 4) corresponds to the pose of the left camera coordinate system in the i’th frame with respect to the first (=0th) frame.

注:

  • ORB-SLAM3中相机位姿(camera pose)的表示是Tcw,即世界坐标系的点Pw到相机坐标系的点Pc的变换矩阵,(camera
    pose 的逆是Twc, 即 Pw = Twc * Pc)。
  • 这里的pose.txt保存的内容是,以左目第一帧(相机坐标系)作为世界坐标(0,0,0,0,0,0,1)保存的为第i帧相机坐标系下的点世界坐标系的变换矩阵,即Twc(相机位姿的逆)。

Twc和Tcw的深入理解相关推荐

  1. ORB_SLAM2代码阅读(1)——系统入口

    ORB_SLAM2代码阅读(1)--系统简介 1.说明 2.简介 3.stereo_kitti.cc 4.SLAM系统文件(System.cc) 4.1 构造函数System() 4.2 TrackS ...

  2. 关于旋转矩阵的左乘与右乘问题

    最近在阅读框架源码时被旋转矩阵左乘右乘绕的云里雾里,故写下一篇记录一下,以防自己不长记性,转载出处均已标明.此篇没有大段推导,只有结论. 1.左乘是相对固定坐标系,右乘是相对当前坐标系 注意,此时讨论 ...

  3. ORB-SLAM3笔记(编译、踩坑、论文、看代码)

    目前基于orb_slam想做的方向 提升动态建图精度                (中个二区趴秋梨膏  √东西MAP就是上不去 KITTI有几个groundtruth官网下架了找不到而且 红外相机退 ...

  4. ORB-SLAM2的源码阅读(一):系统的整体构建

    春节后又要开工啦,加油ヾ(◍°∇°◍)ノ゙ ORB-SLAM2在SLAM界算的上是火遍大江南北,无数更新的版本在github上发布,这么厉害的代码怎么样也得拜读一下.原谅我的脑力有限,一次性是没法读完 ...

  5. OpenCV 【一】—— OpenCV中数组指针、图像分块计算、指针取像素值与MatToEigen方法,内存对齐

    { Topic1: 高效开辟内存,使适用于大型数组.//开辟新数组,或者开辟新的0或者某一数值的数组/Mat或者Map直接使用memset //大数组操作效率较高 举例1:cv::Mat cv_ncc ...

  6. orb_slam3实现保存/加载地图功能and发布位姿功能

    1.保存/加载地图 先说方法:在加载的相机参数文件.yaml的最前面加上下面两行就行. System.LoadAtlasFromFile: "MH01_to_MH05_stereo_iner ...

  7. ORB-SLAM3 单目惯导ros-system-track

    文章目录 ROS ros_mono_interial.cc Function 主函数 imu抓取 image 抓取 image与imu同步 ORB_SLAM3::System Function 构造 ...

  8. 无人机仿真SLAM_gazebopromethues

    无人机仿真 总体概述 系统要求 PX4固件 简介 无人机固件整体框图 无人机软件框图 无人机硬件模型 Mavlink模块 位置估计与姿态估计模块 安装与编译 二次开发 机载计算机程序 控制模块 估计模 ...

  9. 通用解题法——回溯算法(理解+练习)

    积累算法经验,积累解题方法--回溯算法,你必须要掌握的解题方法! 什么是回溯算法呢? 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就&quo ...

最新文章

  1. 综合布线机房服务器维护,信息机房的综合布线系统维护
  2. vfs管理下的linux文件系统
  3. 面试题目_总结面试中 promise 相关题目的套路
  4. 砥志研思SVM(三) 最优间隔分类器问题(下):软间隔SVM
  5. 22岁何同学引爆B站!硬核毕设树莓派星轨拍摄仪,上演理工男的终极浪漫
  6. css中如何实现帧布局_浅谈web前端中的表格布局与CSS盒子布局
  7. jni ndk_带有NDK的Android JNI应用程序
  8. ubuntu 安装UliPad
  9. Ubuntu16.0.4 通过Docker安装酷Q
  10. android 8187驱动 win7,8187无线网卡驱动,教您Realtek瑞昱8187无线网卡驱动
  11. C++数据库编程 ODBC简介
  12. 机器学习数据集划分方法
  13. SL-积雪效果(hitTest)雪人(snowman)
  14. MySQL ORDER BY 1 DESC的用法
  15. 承上启下继往开来,Python3上下文管理器(ContextManagers)与With关键字的迷思
  16. leetcode-买卖股票的最佳时机含手续费
  17. 2021年茶艺师(初级)考试总结及茶艺师(初级)模拟试题
  18. 用python来压缩图片的大小
  19. 扫描仪没有linux 驱动怎么安装,怎么安装没有驱动盘的扫描仪
  20. Docker-安装部署全过程

热门文章

  1. 电脑重启bootmgr_bootmgr丢失如何解决
  2. 将十进制数转换成二进制、八进制、十六进制数算法
  3. Winform控件开发(1)——Label(史上最全)
  4. 编程题——求最小公倍数
  5. 【操作系统-Windows】浅析360带来的蓝屏问题
  6. DXVA VDPAU FFDSHOW
  7. 【力斩offer】一些面试常问的数学概念
  8. JS中关于字符串返回的操作
  9. GPT转MBR防范Bootkit病毒装机教程
  10. 能够免费做商业站点的CMS讨论