当前位置:   article > 正文

齐次坐标变换的理解以及在无人机相机定位坐标系转换中的应用_齐次坐标转换

齐次坐标转换

一、平移齐次坐标变换

4*4矩阵的右边三个数表示平移,如果原来的向量u的w=0,那么就是u+(ai+bj+ck

在这里插入图片描述

二、旋转齐次变换矩阵

对应xyz三个轴的循环变换,注意负号的位置

在这里插入图片描述

三、物体的变换

用描述空间一点的变换方法来描述物体在空间的位置和方向。

在这里插入图片描述

先变换的矩阵乘在右边。

四、齐次变化的逆

在这里插入图片描述
在这里插入图片描述

五、平移坐标变换

A p = B p + A p B o {}^{A}p={}^{B}p+{}^{A}p_{B_{o}} Ap=Bp+ApBo

B B B A A A的平移坐标变换。

在这里插入图片描述

问题一

在这里插入图片描述

在这里插入图片描述

解:

CM先饶 z z z轴旋转180°,在沿 x x x轴反方向平移0.13m,得到M。
T C M M = T r a n s ( − 0.13 , 0 , 0 ) R o t ( z , 18 0 ° ) = [ 1 0 0 − 0.13 0 1 0 0 0 0 1 0 0 0 0 1 ] [ − 1 0 0 0 0 − 1 0 0 0 0 1 0 0 0 0 1 ] T_{CM}^{M}=Trans\left( -0.13,0,0 \right) Rot\left( z,180^° \right) =\left[

1000.13010000100001
\right] \left[
1000010000100001
\right] TCMM=Trans(0.13,0,0)Rot(z,180°)= 1000010000100.13001 1000010000100001

T C M C = [ R C M C P C M C 0 1 ] = [ cos ⁡ y sin ⁡ y 0 d x − sin ⁡ y cos ⁡ y 0 d y 0 0 1 d z 0 0 0 1 ] T_{CM}^{C}=\left[

RCMCPCMC01
\right] =\left[
cosysiny0dxsinycosy0dy001dz0001
\right] TCMC=[RCMC0PCMC1]= cosysiny00sinycosy000010dxdydz1

齐次矩阵的逆
请添加图片描述

T C M M T C C M = [ − cos ⁡ y sin ⁡ y 0 d x cos ⁡ y − d y sin ⁡ y − 0.13 − sin ⁡ y − cos ⁡ y 0 d x sin ⁡ y + d y cos ⁡ y 0 0 1 − d z 0 0 0 1 ] T_{CM}^{M}T_{C}^{CM}=\left[

cosysiny0dxcosydysiny0.13sinycosy0dxsiny+dycosy001dz0001
\right] TCMMTCCM= cosysiny00sinycosy000010dxcosydysiny0.13dxsiny+dycosydz1
把上式代入,得到:
[ x M C M M y M C M M z M C M M 1 ] + T C M M [ x C M C C M y C M C C M z C M C C M 1 ] + T C M M T C C M [ x C B C y C B C z C B C 1 ] \left. \left[
xMCMMyMCMMzMCMM1
\right. \right] +T_{CM}^{M}\left[
xCMCCMyCMCCMzCMCCM1
\right] +T_{CM}^{M}T_{C}^{CM}\left[
xCBCyCBCzCBC1
\right]
xMCMMyMCMMzMCMM1 +TCMM xCMCCMyCMCCMzCMCCM1 +TCMMTCCM xCBCyCBCzCBC1

= [ 0.13 0 0 1 ] + [ − 1 0 0 − 0.13 0 − 1 0 0 0 0 1 0 0 0 0 1 ] [ x y z 1 ] + [ − cos ⁡ y sin ⁡ y 0 d x cos ⁡ y − d y sin ⁡ y − 0.13 − sin ⁡ y − cos ⁡ y 0 d x sin ⁡ y + d y cos ⁡ y 0 0 1 − d z 0 0 0 1 ] [ − 0.13 0 0 1 ] =\left[

0.13001
\right] +\left[
1000.13010000100001
\right] \left[
xyz1
\right] +\left[
cosysiny0dxcosydysiny0.13sinycosy0dxsiny+dycosy001dz0001
\right] \left[
0.13001
\right] = 0.13001 + 1000010000100.13001 xyz1 + cosysiny00sinycosy000010dxcosydysiny0.13dxsiny+dycosydz1 0.13001

= [ − x + d x cos ⁡ y − d y sin ⁡ y + 0.13 cos ⁡ y − 0.13 − y + d x sin ⁡ y + d y cos ⁡ y + 0.13 sin ⁡ y z + d z 1 ] =\left[

x+dxcosydysiny+0.13cosy0.13y+dxsiny+dycosy+0.13sinyz+dz1
\right] = x+dxcosydysiny+0.13cosy0.13y+dxsiny+dycosy+0.13sinyz+dz1

注意到,在 d t dt dt时间内, d x , d y dx,dy dx,dy是小量,可以略去,剩下的部分就是如下代码:

(r,p,y)=tf.transformations.euler_from_quaternion([data.pose.pose.orientation.x,data.pose.pose.orientation.y,data.pose.pose.orientation.z,data.pose.pose.orientation.w])
local_pose.pose.position.x = -data.pose.pose.position.x - rtt_ctr_b * (1-math.cos(y))
local_pose.pose.position.y = - data.pose.pose.position.y + rtt_ctr_b * math.sin(y) #推导y
local_pose.pose.position.z = data.pose.pose.position.z            #相机高度作为无人机的高度
local_pose.pose.orientation =  data.pose.pose.orientation
  • 1
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/781839
推荐阅读
相关标签
  

闽ICP备14008679号