我是靠谱客的博主 沉默黄豆,最近开发中收集的这篇文章主要介绍Sensor fusion学习-1.坐标系转换理论坐标系转换,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近在做传感器融合方面的研究,但相关的资料甚少,想着分解一块一块地实现(补充知识),总之道阻且长,一步步来叭

坐标系转换

世界坐标系

由于摄像机与被摄物体可以放置在环境中的任意位置,这样就需要在环境中建立一个坐标系,来表示摄像机和被摄物体的位置,这个坐标就称为世界坐标系

相机坐标系

也是一个三维直角坐标系,原点位于镜头的光心处,x,y轴分别与相面的两边平行,z轴为镜头的光轴,与像平面垂直

世界坐标系到相机坐标系

旋转

旋转的表示

  • 旋转矩阵
  • 欧拉角
  • 四元数
  • 轴角
  • 李群与李代数

旋转的应用场景

惯性导航 机器人学 (机械臂,无人机,SLAM)

步骤

  1. 先旋转对齐
    在这里插入图片描述
    [ x c y c z c ] = [ 1 0 0 0 cos ⁡ θ sin ⁡ θ 0 − sin ⁡ θ cos ⁡ θ ] [ x y z ] begin{bmatrix} x_{c} \ y_{c} \ z_{c} end{bmatrix}=begin{bmatrix} 1 & 0 & 0 \ 0 & cos theta & sin theta \ 0 & -sin theta & cos theta end{bmatrix}begin{bmatrix} x \ y \ z end{bmatrix} xcyczc=1000cosθsinθ0sinθcosθxyz

具体推导
在这里插入图片描述

{ X c = X Y c = cos ⁡ θ ⋅ Y + sin ⁡ θ ⋅ Z Z c = − sin ⁡ θ ⋅ Y + cos ⁡ θ ⋅ Z begin{cases}X_{c}=X\ Y_{c}=cos theta cdot Y+sin theta cdot Z\ Z_{c}=-sin theta cdot Y+cos theta cdot Zend{cases} Xc=XYc=cosθY+sinθZZc=sinθY+cosθZ

所有的分解都满足欧式距离不变性

其他旋转矩阵

  • 绕X轴
    R ( X A , θ ) = [ 1 0 0 0 cos ⁡ θ − sin ⁡ θ   0 sin ⁡ θ cos ⁡ θ ] Rleft( X_{A},theta right) =begin{bmatrix} 1 & 0 & 0 \ 0 & cos theta & -sin theta \ 0 & sin theta & cos theta end{bmatrix} R(XA,θ)=10 00cosθsinθ0sinθcosθ
  • 绕Y轴
    R ( Y A , θ ) = [ cos ⁡ θ 0 sin ⁡ θ 0 1 0   − sin ⁡ θ 0 cos ⁡ θ ] Rleft( Y_{A},theta right) =begin{bmatrix} cos theta & 0 & sin theta \ 0 & 1 & 0 \ -sin theta & 0 & cos theta end{bmatrix} R(YA,θ)=cosθ0 sinθ010sinθ0cosθ
  • 绕Z轴
    R ( Z A , θ ) = [ cos ⁡ θ − sin ⁡ θ 0 sin ⁡ θ cos ⁡ θ 0   0 0 1 ] Rleft( Z_{A},theta right) =begin{bmatrix} cos theta & -sin theta & 0 \ sin theta & cos theta & 0 \ 0 & 0 & 1 end{bmatrix} R(ZA,θ)=cosθsinθ 0sinθcosθ0001

把三个绕不同方向的旋转进行相乘

在这里插入图片描述
这样可以表示空间中任意方向中的旋转

左乘还是右乘

  • 左乘:相对于固定坐标系进行变换
    V ′ = R × V = ( R Z × R Y × R X ) × V V'=Rtimes V=left( R_{Z}times R_{Y}times R_{X}right) times V V=R×V=(RZ×RY×RX)×V
    对每个固定的坐标系进行变换
  • 右乘:相对于自身(活跃/变化)的坐标系进行变换
    每一次变换后按新的(自身的)坐标系进行变换
    详细参考这篇文章
    旋转的左乘与右乘

平移

我们把旋转矩阵称为R,T为X,Y,Z三轴方向的平移,(R,T即为相机的外参)
[ X c Y c Z c ] = R [ X w Y w Z w ] + T begin{bmatrix} X_{c} \ Y_{c} \ Z_{c} end{bmatrix}=Rbegin{bmatrix} X_{w} \ Y_{w} \ Z_{w} end{bmatrix}+T XcYcZc=RXwYwZw+T

= [ r 11 r 12 r 13 r 21 r 22 r 23 r 31 r 32 r 33 ] [ X w Y w Z w ] + [ t x t y t z ] =begin{bmatrix} r_{11} & r_{12} & r_{13} \ r_{21} & r_{22} & r_{23} \ r_{31} & r_{32} & r_{33} end{bmatrix}begin{bmatrix} X_{w} \ Y_{w} \ Z_{w} end{bmatrix}+begin{bmatrix} tx \ ty \ tz end{bmatrix} =r11r21r31r12r22r32r13r23r33XwYwZw+txtytz

齐次方程形式
[ x c y c z c 1 ] = [ R t 0 1 ] [ x w y w z w 1 ] begin{bmatrix} x_{c}\ y_{c} \ z_{c} \ 1 end{bmatrix}=begin{bmatrix} R & t \ 0 & 1 end{bmatrix}begin{bmatrix} x_{w} \ y_{w} \ z_{w} \ 1 end{bmatrix} xcyczc1=[R0t1]xwywzw1

总结

  1. 世界坐标系变换到相机坐标系,是为了将像素点与世界点联系起来
  2. 世界点:我们需要待测量物体到机器人的距离和位置关系,世界坐标系一般定在机器人上,或者是机器人工作的场景之中
  3. 世界坐标系与相机坐标系的关系就是相机的外参

最后

以上就是沉默黄豆为你收集整理的Sensor fusion学习-1.坐标系转换理论坐标系转换的全部内容,希望文章能够帮你解决Sensor fusion学习-1.坐标系转换理论坐标系转换所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部