变换矩阵理解

T_{BC}

今天就来理解这个表示。这个表示一般有两种叫法(假设B代表body,C代表camera)。

  1. 相机坐标系到载体坐标系的变化。
    1. 本质意思是如果有一个点的坐标是在camera坐标系中表示的,如果我们要将其在body坐标系中表示。可以左乘这个变换矩阵。
  2. Camera pose respect with body。
    1. with的意思其实是在什么坐标系下的。所以对于T_{BC}都最右边一列直接提取出来的三维坐标,正好是camera的中心坐标,在body坐标系下的表示。
    2. 也相当于把camera坐标系中的原点乘以T_{BC},就能得到camera在body坐标系下的位置的表示。
    3. 也表示camera在body坐标系中的位置和camera自己的朝向无关(不需要使用旋转信息就能得到位置)。

上面主要在说位置和平移,关于旋转可以这样理解:

  1. T_{BC}表示的旋转是把camera坐标系的三个轴,在body坐标系中表示出来。也就是把camera坐标系中的(0,0,1),(0,1,0),(0,0,1)三个点使用T_{BC}转换到body坐标系中。
  2. 如果把坐标系看作一个有三条线的模型,T_{BC}可以把body坐标系对应的模型旋转成对应的camera模型。
    1. 具体旋转的方式可以借用欧拉角,ZYX的欧拉角旋转,可以使用坐标轴模型,按照zyx顺序做三次旋转。每次都画一个新的坐标系,这样整个旋转可以手动完成。
    2. https://www.andre-gaschler.com/rotationconverter/这里可以互动的研究旋转的几种表示的关系。

如果你在一个世界坐标系中,把一个模型从A pose,变换为B pose。这样的一个变换矩阵等于是把A坐标系中的点(模型的顶点),在B坐标系中表示出来。而在世界中可视化出来的A和B的关系是把A和B模型的顶点都表示在世界坐标系中。

T_{BC}可以分为旋转和平移两次操作。

  1. 正向操作是先旋转在加上平移。(C中的点在B中表示)
  2. 反向操作是先减去平移在乘以旋转的转置。(B中的点在C中表示)

当你要使用集合信息来手动计算T_{BC}的时候。

  1. 先在B中写出C的坐标,这对应T_{BC}的平移部分。
  2. 画出B和C的坐标轴模型。
  3. 看怎么使用zyx的顺序,把B的坐标轴模型旋转为C。从而计算出欧拉角。
  4. 把欧拉角写成旋转矩阵。

在SLAM中,经常世界坐标系就是第一帧的坐标系。如果第一帧和物体移动方向不一致,就会出现计算的点云倾斜。这个时候可以把传感器的坐标系进行一些旋转后再送入SLAM中计算。这等价于强制让物体的移动方向在传感器坐标系中是和轴对齐的。

猜你喜欢

转载自blog.csdn.net/ziliwangmoe/article/details/84262324