本文给出《机器人技术与应用》这本书上的3维坐标变换
- 绕X轴旋转
ϕ
\phi
ϕ的旋转矩阵为
(1) R ( X , ϕ ) = [ 1 0 0 0 c o s ϕ − s i n ϕ 0 s i n ϕ c o s ϕ ] R(X,\phi)= \left[ \begin{matrix} 1 & 0 & 0 \\ 0 & cos\phi & -sin\phi \\ 0 & sin\phi & cos\phi \end{matrix} \right] \tag{1} R(X,ϕ)=⎣⎡1000cosϕsinϕ0−sinϕcosϕ⎦⎤(1) - 绕Y轴旋转
ϕ
\phi
ϕ的旋转矩阵为
(2) R ( Y , ϕ ) = [ c o s ϕ 0 s i n ϕ 0 1 0 − s i n ϕ 0 c o s ϕ ] R(Y,\phi)= \left[ \begin{matrix} cos\phi & 0 & sin\phi \\ 0 & 1 & 0 \\ -sin\phi & 0 & cos\phi \end{matrix} \right] \tag{2} R(Y,ϕ)=⎣⎡cosϕ0−sinϕ010sinϕ0cosϕ⎦⎤(2) - 绕Z轴旋转
ϕ
\phi
ϕ的旋转矩阵为
(3) R ( Z , ϕ ) = [ c o s ϕ − s i n ϕ 0 s i n ϕ c o s ϕ 0 0 0 1 ] R(Z,\phi)= \left[ \begin{matrix} cos\phi & -sin\phi & 0 \\ sin\phi & cos\phi & 0 \\ 0 & 0 & 1 \end{matrix} \right] \tag{3} R(Z,ϕ)=⎣⎡cosϕsinϕ0−sinϕcosϕ0001⎦⎤(3)
2D导航中的坐标系方向习惯表示 (此处没有图,不太会画)
-
摄像头的xyz坐标系习惯表示
- X : 摄像头图像向右的方向
- Y : 摄像头图像向下的方向
- Z : 摄像头光心向前的方向
-
2D导航车的xyz坐标系习惯表示
- X : 车前进的方向
- Y : 垂直于前进方向向左的方向
- Z : 垂直于地面向上的方向
车子到相机的旋转矩阵为 车子到相机的旋转矩阵为
(4) R ( Y , ϕ ) = [ 0 0 1 − 1 0 0 0 − 1 0 ] R(Y,\phi)= \left[ \begin{matrix} 0 & 0 & 1 \\ -1 & 0 & 0 \\ 0 & -1 & 0 \end{matrix} \right] \tag{4} R(Y,ϕ)=⎣⎡0−1000−1100⎦⎤(4)
有两种方式可以得到这个结果
一 :将相机坐标系的x,y,z轴分别写出在车子坐标系中的表示
- 相机坐标系的X轴在车子坐标系中为 [ 0 , − 1 , 0 ] \left[0 ,-1, 0\right] [0,−1,0]
- 相机坐标系的X轴在车子坐标系中为 [ 0 , 0 , − 1 ] \left[0,0, -1\right] [0,0,−1]
- 相机坐标系的X轴在车子坐标系中为 [ 1 , 0 , 0 ] \left[1 ,0, 0\right] [1,0,0]
- 于是将上面的行向量取转置,依次排列x,y,z的结果,就出来了车子到相机的旋转矩阵
二:旋转车子坐标系使其经过两次变换成为相机坐标系
- 车子坐标系先绕车子坐标系X轴顺时针旋转90度,也就是负90度,生成新的坐标系2,然后新的坐标系2绕自己的y顺时针旋转90度,也就是正90度,成为了相机坐标系,所以可以看出这里需要右乘旋转矩阵
- 即 R ( X , − 90 ) × R ( Y , 90 ) R(X,-90)×R(Y,90) R(X,−90)×R(Y,90)
- (5) R = R ( X , − 90 ) × R ( Y , 90 ) = [ 1 0 0 0 0 1 0 − 1 0 ] ∗ [ 0 0 1 0 1 0 − 1 0 0 ] = [ 0 0 1 − 1 0 0 0 − 1 0 ] R=R(X,-90)×R(Y,90)= \left[ \begin{matrix} 1 & 0 & 0 \\ 0 & 0 & 1 \\ 0 & -1 & 0 \end{matrix} \right] * \left[ \begin{matrix} 0 & 0 &1\\ 0 & 1& 0\\ -1&0&0 \end{matrix} \right]=\left[ \begin{matrix} 0 & 0 & 1 \\ -1 & 0 & 0 \\ 0 & -1 & 0 \end{matrix} \right] \tag{5} R=R(X,−90)×R(Y,90)=⎣⎡10000−1010⎦⎤∗⎣⎡00−1010100⎦⎤=⎣⎡0−1000−1100⎦⎤(5)
这个旋转矩阵的含义
含义是 P c a r = R ∗ P c a m e r a P_{car}=R*P_{camera} Pcar=R∗Pcamera