Skip to content

速度到位姿转换 (Velocity to Pose)#

机器人运动学:速度到位姿的转换#

基本关系#

从线速度 \(v\) 和角速度 \(\omega\) 到位姿 \([x, y, \theta]^T\) 的转换关系为:

\[ \begin{bmatrix} x(t+T) \\ y(t+T) \\ \theta(t+T) \end{bmatrix} = \begin{bmatrix} x(t) \\ y(t) \\ \theta(t) \end{bmatrix} + \int_{t}^{t+T} \begin{bmatrix} v\cos\theta(\tau) \\ v\sin\theta(\tau) \\ \omega \end{bmatrix} d\tau \]

两种常见情况#

1. 直线运动 (\(\omega = 0\))#

\[ \begin{cases} x(t+T) = x(t) + vT\cos\theta(t) \\ y(t+T) = y(t) + vT\sin\theta(t) \\ \theta(t+T) = \theta(t) \end{cases} \]

2. 曲线运动 (\(\omega \neq 0\))#

精确解为:

\[ \begin{cases} x(t+T) = x(t) + \dfrac{v}{\omega}[\sin(\theta(t) + \omega T) - \sin\theta(t)] \\ y(t+T) = y(t) - \dfrac{v}{\omega}[\cos(\theta(t) + \omega T) - \cos\theta(t)] \\ \theta(t+T) = \theta(t) + \omega T \end{cases} \]

小角度近似 (\(\omega T \ll 1\))#

\(\omega T\) 很小时,使用泰勒展开近似:

\[ \begin{cases} x(t+T) \approx x(t) + vT\cos\theta(t) - \dfrac{v\omega T^2}{2}\sin\theta(t) \\ y(t+T) \approx y(t) + vT\sin\theta(t) + \dfrac{v\omega T^2}{2}\cos\theta(t) \\ \theta(t+T) = \theta(t) + \omega T \end{cases} \]

一阶近似(忽略 \(T^2\) 项):

\[ \begin{cases} x(t+T) \approx x(t) + vT\cos\theta(t) \\ y(t+T) \approx y(t) + vT\sin\theta(t) \\ \theta(t+T) = \theta(t) + \omega T \end{cases} \]

矩阵微分方程形式#

位姿变化率可表示为:

\[ \dot{\mathbf{q}} =\begin{bmatrix} \dot{x} \\ \dot{y} \\ \dot{\theta} \end{bmatrix} = \begin{bmatrix} \cos\theta & 0 \\ \sin\theta & 0 \\ 0 & 1 \end{bmatrix} \begin{bmatrix} v \\ \omega \end{bmatrix} \]

其中 \(\mathbf{q} = [x, y, \theta]^T\) 是位姿向量。

离散时间形式#

欧拉积分法#

\[ \mathbf{q}_{k+1} = \mathbf{q}_k + T \begin{bmatrix} \cos\theta_k & 0 \\ \sin\theta_k & 0 \\ 0 & 1 \end{bmatrix} \begin{bmatrix} v_k \\ \omega_k \end{bmatrix} \]

精确积分法#

\[ \mathbf{q}_{k+1} = \mathbf{q}_k + \begin{bmatrix} \dfrac{v_k}{\omega_k}[\sin(\theta_k + \omega_k T) - \sin\theta_k] \\ -\dfrac{v_k}{\omega_k}[\cos(\theta_k + \omega_k T) - \cos\theta_k] \\ \omega_k T \end{bmatrix} \]

特殊情况#

纯旋转 (\(v = 0, \omega \neq 0\))#

\[ \begin{cases} x(t+T) = x(t) \\ y(t+T) = y(t) \\ \theta(t+T) = \theta(t) + \omega T \end{cases} \]

纯平移 (\(\omega = 0, v \neq 0\))#

\[ \begin{cases} x(t+T) = x(t) + vT\cos\theta(t) \\ y(t+T) = y(t) + vT\sin\theta(t) \\ \theta(t+T) = \theta(t) \end{cases} \]

逆变换#

从位姿差计算平均速度:

\[ \begin{aligned} v &= \frac{\sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2}}{T} \\ \omega &= \frac{\Delta\theta}{T} = \frac{\theta_2 - \theta_1}{T} \end{aligned} \]

其中 \(\Delta\theta\) 需进行角度环绕处理。

几何解释#

  • 运动轨迹是半径为 \(R = \frac{v}{\omega}\) 的圆弧
  • 弧长为 \(s = vT\)
  • 圆心角为 \(\phi = \omega T\)
  • 弦长为 \(2R\sin\frac{\phi}{2} = \frac{2v}{\omega}\sin\frac{\omega T}{2}\)

误差分析#

  • 欧拉法误差\(O(T^2)\)
  • 精确解:无近似误差(假设速度恒定)
  • 实际应用中,\(T\) 越小,近似越精确