大家好,欢迎来到IT知识分享网。
Homogeneous Transformation(齐次变换) 是计算机视觉、机器人学和图形学中常用的数学工具,用于描述物体在空间中的平移、旋转、缩放等操作。它将这些操作统一表示为一个矩阵乘法操作,使得多个变换可以通过矩阵相乘来组合。
齐次变换概念
齐次变换的核心思想是将三维(或二维)空间中的点表示为四维(或三维)向量,然后使用 4×4(或 3×3)矩阵来表示变换。这种表示方式的好处在于,可以将平移、旋转、缩放等线性变换统一起来,并且可以轻松地进行组合。
齐次坐标
在二维空间中,一个点通常表示为 ( x , y ) (x, y) (x,y),将其转换为齐次坐标表示时,会增加一个附加分量,通常为 1:
p = [ x y 1 ] p=\begin{bmatrix} x \\ y \\ 1 \end{bmatrix} p=
xy1
在三维空间中,一个点的齐次坐标可以表示为:
p = [ x y z 1 ] p=\begin{bmatrix} x \\ y \\ z\\ 1 \end{bmatrix} p=
xyz1
齐次变换矩阵
齐次变换矩阵包含了旋转矩阵和平移向量,能够同时表示平移的旋转操作:
T = [ R t 0 T 1 ] \mathbf{T} = \begin{bmatrix} \mathbf{R} & \mathbf{t} \\ \mathbf{0}^T & 1 \end{bmatrix} T=[R0Tt1]
- R \mathbf{R} R: 3×3 旋转矩阵,表示在三维空间中的旋转。
- t \mathbf{t} t: 3×1 平移向量,表示在三维空间中的平移。
- 0 \mathbf{0} 0: 3×1 的零向量。
- 1 1 1: 标量,用于保持矩阵的尺寸一致。
在二维空间中,齐次变换矩阵通常是 3×3 矩阵:
T = [ cos θ − sin θ t x sin θ cos θ t y 0 0 1 ] \mathbf{T} = \begin{bmatrix} \cos\theta & -\sin\theta & t_x \\ \sin\theta & \cos\theta & t_y \\ 0 & 0 & 1 \end{bmatrix} T=
cosθsinθ0−sinθcosθ0txty1
在三维空间中,齐次变换矩阵通常是一个 4×4 矩阵。它同时包含旋转矩阵和平移向量,用于表示三维空间中的平移和旋转操作:
T = [ R t 0 T 1 ] \mathbf{T} = \begin{bmatrix} \mathbf{R} & \mathbf{t} \\ \mathbf{0}^T & 1 \end{bmatrix} T=[R0Tt1]
- R \mathbf{R} R: 3×3 旋转矩阵,用于表示三维空间中的旋转。
- t \mathbf{t} t: 3×1 平移向量,用于表示三维空间中的平移。
- 0 \mathbf{0} 0: 3×1 的零向量。
- 1 1 1: 标量,用于保持矩阵的尺寸一致。
其中,
- 绕 (x) 轴旋转:
R x ( θ ) = [ 1 0 0 0 cos θ − sin θ 0 sin θ cos θ ] R_x(\theta) = \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\theta & -\sin\theta \\ 0 & \sin\theta & \cos\theta \end{bmatrix} Rx(θ)=
1000cosθsinθ0−sinθcosθ
- 绕 (y) 轴旋转:
R y ( θ ) = [ cos θ 0 sin θ 0 1 0 − sin θ 0 cos θ ] R_y(\theta) = \begin{bmatrix} \cos\theta & 0 & \sin\theta \\ 0 & 1 & 0 \\ -\sin\theta & 0 & \cos\theta \end{bmatrix} Ry(θ)=
cosθ0−sinθ010sinθ0cosθ
- 绕 (z) 轴旋转:
R z ( θ ) = [ cos θ − sin θ 0 sin θ cos θ 0 0 0 1 ] R_z(\theta) = \begin{bmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix} Rz(θ)=
cosθsinθ0−sinθcosθ0001
如果物体在三维空间中同时绕 𝑥轴、𝑦轴和 𝑧轴旋转,综合旋转矩阵可以表示为这些基本旋转矩阵的乘积。注意,矩阵乘法的顺序很重要,通常先绕 𝑧轴,再绕 𝑦轴,最后绕 𝑥轴进行旋转:
R ( α , β , γ ) = R z ( γ ) R y ( β ) R x ( α ) R(\alpha, \beta, \gamma) = R_z(\gamma)R_y(\beta)R_x(\alpha) R(α,β,γ)=Rz(γ)Ry(β)Rx(α)
R ( α , β , γ ) = [ cos β cos γ cos γ sin α sin β − cos α sin γ cos α cos γ sin β + sin α sin γ cos β sin γ cos α cos γ + sin α sin β sin γ − cos γ sin α + cos α sin β sin γ − sin β cos β sin α cos α cos β ] R(\alpha, \beta, \gamma) = \begin{bmatrix} \cos\beta \cos\gamma & \cos\gamma \sin\alpha \sin\beta – \cos\alpha \sin\gamma & \cos\alpha \cos\gamma \sin\beta + \sin\alpha \sin\gamma \\ \cos\beta \sin\gamma & \cos\alpha \cos\gamma + \sin\alpha \sin\beta \sin\gamma & -\cos\gamma \sin\alpha + \cos\alpha \sin\beta \sin\gamma \\ -\sin\beta & \cos\beta \sin\alpha & \cos\alpha \cos\beta \end{bmatrix} R(α,β,γ)=
cosβcosγcosβsinγ−sinβcosγsinαsinβ−cosαsinγcosαcosγ+sinαsinβsinγcosβsinαcosαcosγsinβ+sinαsinγ−cosγsinα+cosαsinβsinγcosαcosβ
齐次变换矩阵可以将三维空间中的一个点 p = [ x , y , z ] T \mathbf{p} = [x, y, z]^T p=[x,y,z]T转换到新的坐标系中:
p ′ = T ⋅ [ x y z 1 ] \mathbf{p}’ = \mathbf{T} \cdot \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} p′=T⋅
xyz1
其中, p ′ = [ x ′ , y ′ , z ′ ] T \mathbf{p}’ = [x’, y’, z’]^T p′=[x′,y′,z′]T表示变换后的新坐标。
齐次变换的应用
假设我们有一个机器人,它在地球坐标系中的位置为 ( x 0 , y 0 , z 0 ) = ( 5 , 10 , 0 ) (x_0, y_0, z_0) = (5, 10, 0) (x0,y0,z0)=(5,10,0),并且它绕 $z $ 轴旋转了 90 度( θ = 9 0 ∘ \theta = 90^\circ θ=90∘)。
- 齐次变换矩阵
旋转矩阵 R z ( θ ) R_z(\theta) Rz(θ) 和平移向量 t t t 如下:
R z ( π 2 ) = [ 0 − 1 0 1 0 0 0 0 1 ] , t = [ 5 10 0 ] R_z\left(\frac{\pi}{2}\right) = \begin{bmatrix} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix}, \quad \mathbf{t} = \begin{bmatrix} 5 \\ 10 \\ 0 \end{bmatrix} Rz(2π)=
010−100001
,t=
5100
齐次变换矩阵 T T T 是:
T = [ 0 − 1 0 5 1 0 0 10 0 0 1 0 0 0 0 1 ] \mathbf{T} = \begin{bmatrix} 0 & -1 & 0 & 5 \\ 1 & 0 & 0 & 10 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} T=
0100−1000001051001
- 转换点的坐标
假设机器人坐标系中的点为 ( x r , y r , z r ) = ( 1 , 2 , 0 ) (x_r, y_r, z_r) = (1, 2, 0) (xr,yr,zr)=(1,2,0),表示为齐次坐标:
p r o b o t = [ 1 2 0 1 ] \mathbf{p}_{robot} = \begin{bmatrix} 1 \\ 2 \\ 0 \\ 1 \end{bmatrix} probot=
1201
将该点转换到地球坐标系中:
p w o r l d = T ⋅ p r o b o t = [ 3 11 0 1 ] \mathbf{p}_{world} = \mathbf{T} \cdot \mathbf{p}_{robot} = \begin{bmatrix} 3 \\ 11 \\ 0 \\ 1 \end{bmatrix} pworld=T⋅probot=
31101
因此,机器人坐标系中的点 ( 1 , 2 , 0 ) (1, 2, 0) (1,2,0)在地球坐标系中的位置为 ( 3 , 11 , 0 ) (3, 11, 0) (3,11,0)。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/151099.html