机器人基础-齐次变换

Homogeneous Transformation(齐次变换) 是计算机视觉、机器人学和图形学中常用的数学工具,用于描述物体在空间中的平移、旋转、缩放等操作。它将这些操作统一表示为一个矩阵乘法操作,使得多个变换可以通过矩阵相乘来组合。

齐次变换概念

齐次变换的核心思想是将三维(或二维)空间中的表示为四维(或三维)向量,然后使用 4x4(或 3x3)矩阵来表示变换。这种表示方式的好处在于,可以将平移、旋转、缩放等线性变换统一起来,并且可以轻松地进行组合。

齐次坐标

在二维空间中,一个点通常表示为 ( 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: 3x3 旋转矩阵,表示在三维空间中的旋转。
  • t \mathbf{t} t: 3x1 平移向量,表示在三维空间中的平移。
  • 0 \mathbf{0} 0: 3x1 的零向量。
  • 1 1 1: 标量,用于保持矩阵的尺寸一致。

在二维空间中,齐次变换矩阵通常是 3x3 矩阵:

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θ0sinθcosθ0txty1

在三维空间中,齐次变换矩阵通常是一个 4x4 矩阵。它同时包含旋转矩阵和平移向量,用于表示三维空间中的平移和旋转操作:

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: 3x3 旋转矩阵,用于表示三维空间中的旋转。
  • t \mathbf{t} t: 3x1 平移向量,用于表示三维空间中的平移。
  • 0 \mathbf{0} 0: 3x1 的零向量。
  • 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θ0sinθcosθ

  2. 绕 (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θ0sinθ010sinθ0cosθ

  3. 绕 (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θ0sinθ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)。

  1. 齐次变换矩阵

旋转矩阵 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π)= 010100001 ,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= 01001000001051001

  1. 转换点的坐标

假设机器人坐标系中的点为 ( 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=Tprobot= 31101

因此,机器人坐标系中的点 ( 1 , 2 , 0 ) (1, 2, 0) (1,2,0)在地球坐标系中的位置为 ( 3 , 11 , 0 ) (3, 11, 0) (3,11,0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值