博主小白,分享一下自己对于点变换和坐标系变换的理解,不对的地方请大家指出~

目录

  • 坐标系变换
  • 点变换
  • KITTI数据集中的坐标系关系
  • 参考

坐标系变换

以最简单的坐标系变换为例,如下图

图中有两个坐标系,因为没有旋转,两个坐标系之间的变换关系很显然为
[X2Y2]=[01−10][X1Y1]\begin{bmatrix} X_2 \\ Y_2 \end{bmatrix} = \left[ \begin{array}{cccc} 0 & 1 \\ -1 & 0 \end{array} \right ] \begin{bmatrix} X_1 \\ Y_1 \end{bmatrix} [X2​Y2​​]=[0−1​10​][X1​Y1​​]

[01−10]\begin{bmatrix} 0 & 1 \\ -1 & 0 \end{bmatrix} [0−1​10​]记为 TrT_rTr​, 也就是
[X2Y2]=Tr[X1Y1]\begin{bmatrix} X_2 \\ Y_2 \end{bmatrix} = T_r \begin{bmatrix} X_1 \\ Y_1 \end{bmatrix} [X2​Y2​​]=Tr​[X1​Y1​​]
在这个式子中,TrT_rTr​代表由坐标系2到坐标系1的空间变换,也就是坐标系1相对于坐标系2的位姿


点变换

同理,还是上面这个图,点P(a,b)P(a,b)P(a,b)在坐标系1下的坐标为P1(a,b)P_1(a,b)P1​(a,b),在坐标系2下的坐标为P2(b,−a)P_2(b,-a)P2​(b,−a),设P1P_1P1​和P2P_2P2​的坐标变换为T12T_1^2T12​代表坐标系2到坐标系1的变换,则有:

P2=T12∗P1P_2=T_1^2*P_1P2​=T12​∗P1​
带入P1P_1P1​,P2P_2P2​得:
[b−a]=[01−10][ab]\begin{bmatrix} b \\ -a \end{bmatrix} = \left[ \begin{array}{cccc} 0 & 1 \\ -1 & 0 \end{array} \right ] \begin{bmatrix} a \\ b \end{bmatrix} [b−a​]=[0−1​10​][ab​]
因此,可以得到T12=[01−10]T_1^2=\left[\begin{array}{cccc} 0 & 1 \\ -1 & 0 \end{array}\right]T12​=[0−1​10​]

通过这个例子可以发现,点的空间变化和坐标系的空间变换是一样的

KITTI数据集中的坐标系关系

理解了上面的内容(点的空间变化和坐标系的空间变换是一样的),kitti数据集的坐标系变换就很简单了。
kitti坐标系之间的关系如下如图,其中左侧的坐标系是kitti odomtery的真值坐标系,右侧是lidar坐标系,因为A-LOAM计算的到的pose是右侧的,所以要想根据真值进行评价,我们需要将其转换到左侧的真值坐标系(其实就是左相机的坐标系),具体可以参考这篇博客。
记:

lidar to left camera的外参矩阵为TrT_rTr​,即Tr transform a point from velodyne coordinates into the left camera coordinate system;(这里我感觉这个TrT_rTr​其实就是camera到lidar的变换矩阵

第i帧lidar坐标系在其世界坐标系(其世界坐标系就是指的相对于第一帧lidar的pose)的pose(也即transform)为TilidarwT_i^{lidar_w}Tilidarw​​;

第i帧camera坐标系在其世界坐标系的pose为TicamerawT_i^{camera_w}Ticameraw​​;

第i帧lidar坐标系下的点云为PilidarlP_i^{lidar_l}Pilidarl​​;

第i帧camera坐标系下的点云为PicameralP_i^{camera_l}Picameral​​;

第i帧点云在lidar世界坐标系(第一帧的坐标系)下的点云为PilidarwP_i^{lidar_w}Pilidarw​​;

第i帧camera世界坐标系(第一帧的坐标系)下的点云为PicamerawP_i^{camera_w}Picameraw​​;

有:
Picameraw=PicamerawP_i^{camera_w}=P_i^{camera_w} Picameraw​​=Picameraw​​

Ticameraw∗Picameral=Tr∗PilidarwT_i^{camera_w}*P_i^{camera_l}=T_r*P_i^{lidar_w} Ticameraw​​∗Picameral​​=Tr​∗Pilidarw​​

Ticameraw∗Tr∗Pilidarl=Tr∗Tilidarw∗PilidarlT_i^{camera_w}*T_r*P_i^{lidar_l}=T_r*T_i^{lidar_w}*P_i^{lidar_l} Ticameraw​​∗Tr​∗Pilidarl​​=Tr​∗Tilidarw​​∗Pilidarl​​

Ticameraw∗Tr=Tr∗TilidarwT_i^{camera_w}*T_r=T_r*T_i^{lidar_w} Ticameraw​​∗Tr​=Tr​∗Tilidarw​​

Ticameraw=Tr∗Tilidarw∗Tr−1T_i^{camera_w}=T_r*T_i^{lidar_w}*T_r^{-1} Ticameraw​​=Tr​∗Tilidarw​​∗Tr−1​

其中TicamerawT_i^{camera_w}Ticameraw​​就是kitti的odomtery的真值,TilidarwT_i^{lidar_w}Tilidarw​​为A-LOAM得到的里程计。

参考

[1] LOAM笔记及A-LOAM源码阅读

点的空间变换与坐标系的空间变换相关推荐

  1. html空间坐标系,世界坐标空间与观察坐标系之间的转换

    1.世界坐标空间与观察坐标系之间的转换 已知:观察坐标系相对世界坐标系的u,v,w轴与起点q,将世界坐标系中一点变换到观察坐标系 使用左手坐标系推导 u = ( ux , uy , uz , 0 ) ...

  2. 空间规划师的坐标系转换手册(国家2000大地坐标系适用)(转载)

    声明:本文所指空间规划师特指城乡规划师,此处仅在标题名称提法上与国家空间规划体系改革相呼应,文中仍以规划师或城乡规划师相称,并无额外之意,请勿过度解读:封面图片来自于网络,版权归原作者所有. 随着自然 ...

  3. FPGA之道(61)时空变换之时间换空间

    文章目录 前言 时空变换之时间换空间 逻辑合并 模块复用之提速复用原理 简单提速复用 复杂提速复用 一个简单的FIR滤波器 FIR滤波器的转置结构 多路FIR滤波需求初步分析 提速后的问题分析 FIR ...

  4. 空间坐标系以及空间两三维坐标系转换矩阵解释

    空间坐标系以及空间两三维坐标系转换矩阵解释 因为工作的原因,需要进行不同坐标系的一个转换,在查阅了众多的网页之后,发现有用的没几个,而且众多都是抄的同一篇文章,而且都是罗列以下旋转的方式,几乎没有解释 ...

  5. 将物体固定在坐标某个点_坐标变换(2)—不同坐标系下的变换

    如下图所示,在自动驾驶车辆上会存在大量冗余的传感器,例如轮速传感器.激光雷达,毫米波雷达,摄像头,超声波雷达,GPS,IMU等.不同传感器对同一物体的测量原始结果都是在自身坐标下,所以首先我们需要对多 ...

  6. 渲染管线中几种基础的坐标空间(对象空间、世界空间、相机空间(观察空间)、NDC空间、裁剪空间、屏幕空间)

    对象空间 每个模型都有一个其本身的坐标系,比如以它的几何中心为这个空间的坐标原点,这个模型所有顶点的位置属性都是相对于这个原点的坐标值.因此我们称这个空间为 对象空间 (局部空间) 世界空间 我们要把 ...

  7. 基于带约束S型加减速曲线的空间直线插补与空间圆弧插补算法(Matlab)

    写在前面 学习代码都记录在个人github上,欢迎关注~ Matlab机器人工具箱版本9.10 在前面的博文中: 基于抛物线过渡(梯形加减速)的空间直线插补算法与空间圆弧插补算法(Matlab) 基于 ...

  8. 【相机标定】四个坐标系之间的变换关系

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|新机器视觉 世界坐标系,相机坐标系,图像物理坐标系,像素坐 ...

  9. oracle 10g磁盘管理,Oracle 10g UNDO表空间过大导致磁盘空间不足的解决

    在Oracle 10g数据库的应用中,出现了UNDO表空间过大导致磁盘空间不足而崩溃的现象(ORA-30036: unable to extend segment by 8 in undo table ...

最新文章

  1. mysql windows编译_Windows平台下编译Mysql源码 | 学步园
  2. Android draw bitmap 图片不显示的问题
  3. 对象序列化实现深度克隆
  4. 七十七、SpringBoot整合Rabbitmq
  5. linux中用户忘记root的密码--ubuntu版本
  6. 让服务器突破性能极限 阿里云神龙论文入选计算机顶会ASPLOS
  7. 【数据库系统】为什么使用SQL而非C/C++的函数库执行数据库查询操作
  8. Linux上简体繁体文件的相互转换
  9. 对象与控件如何建立关联
  10. uwsgi基础——参数
  11. 解决俄罗斯大shen精简版Win10无法远程的问题及同类精简版系统无法远程问题,简单快捷方法。
  12. RayData大数据可视化教程(2)——动画制作基础和设置为本地资源库
  13. 软考软件设计师中级考试大纲(附题型举例)
  14. HTML如何设置图片为背景图片
  15. Reciprocal Learning Networks for Human Trajectory Prediction
  16. Linux内核“问题门”——学习问题、经验集锦(持续更新中……)
  17. 洛谷P4188 Lifeguards S
  18. 橘子学ES03之Docker安装ELK+cerebro
  19. 关于图片锯齿产生的原因和如何消除
  20. Docker build 报错 “ Cannot find a valid baseurl for repo: base/7/x86_64 ” 解决

热门文章

  1. Ubuntu 自带输入法fcitx配置!!!
  2. 如何优化PlantUML流程图(时序图)
  3. Mysql创建管理表的内容上的打字练习
  4. 计量经济学笔记2-Eviews操作
  5. 海思麒麟linux内核,麒麟海思Linux(Ubuntu)安装编译安装Nginx
  6. [前端踩坑]引入组件报错Already included file name ‘XXX‘ differs from file name ‘XXX‘ only in casing.
  7. CentOS7下配置Supervisor自启动的两种方法
  8. 图文详解如何使用华为Rainbow迁移工具
  9. 盛大网络资产管理系统
  10. ANN:Asymmetric Non-local Neural Networks for Semantic Segmentation 文章解读