前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VSLAM:预积分公式推导(一)

VSLAM:预积分公式推导(一)

作者头像
猫叔Rex
发布2021-04-23 09:58:05
9520
发布2021-04-23 09:58:05
举报
文章被收录于专栏:科学计算

VSLAM:预积分公式推导(一)

一、基本预备知识

1.1 预备知识:

 传统的递推算法是根据上一时刻的IMU状态量,利用当前时刻测量得到的加速度与角速度,进行积分得到当前时刻的状态量。但是在VIO紧耦合非线性优化当中,各个状态量都是估计值,并且会不断调整,每次调整都会重新进行积分,传递IMU测量值。预积分的目的是将相对测量量与据对位姿解耦合,避免优化时重复进行积分。四元数的表示方法有两种:一种是Hamilton(右手系)表示,另一种是JPL(左手系)表示。读者对公式推导时一定注意。

1.2 IMU模型

 我们将以前文章中的IMU公式拿过来:

\hat{a_t}=a_t+b_a+n_a+R_w^tg^w \\ \hat{w_t}=w_t+b_w+n_w
t

表示在body坐标系下(IMU坐标系),随机游走及噪声不再进行解释。我们将图像帧记作

k

k+1

,body坐标系下记作

b_k

b_{k+1}

,我们将位置,速度和旋转在时间

t_k

t_{k+1}

内进行积分,其世界坐标系下的公式可以写为:

p_{b_{k+1}}^w=p_{b_k}^w+v_{b_k}^w\Delta t_k+\iint_t(R_t^w(\hat{a_t}-b_a-n_a)-g^w)dt^2 \\ v_{b_{k+1}}^w=v_{b_k}^w+\int_t(R_t^w(\hat{a_t}-b_a-n_a)-g^w)dt \\ q_{b_{k+1}}^w=q_{b_k}^w \otimes \int_t \frac{1}{2}q_t^{b_k} \otimes \begin{bmatrix} (\hat w_t -b_w -n_w) \\ 0 \end{bmatrix} dt \\ =q_{b_k}^w \otimes \int \frac{1}{2} \Omega(\hat w_t -b_w -n_w)q_t^{b_k}dt

 注意这里的四元数虚部在前,实部在后,其中:

\Omega(w)=\begin{bmatrix} -[w]_\times & w \\ -w^T & 0\end{bmatrix}, [w]_\times=\begin{bmatrix} 0 & -w_z & w_y \\ w_z & 0 & -w_x \\ -w_y & w_x & 0\end{bmatrix}

 旋转矩阵的推导:我们设

q(t)

是单位四元数,

w

是由四元数确定的角速度,则单位四元数的导数可以用左乘及右乘来表示:

\dot q= \frac{1}{2}\begin{bmatrix} w \\ 0\end{bmatrix} \otimes q=\frac{1}{2}q \otimes \begin{bmatrix} w \\ 0 \end{bmatrix}

 所以:

q_{b_{k+1}}^w=q_{b_k}^w \otimes q_{b_{k+1}}^{b_k}=q_{b_k}^w \otimes \int_t \dot q_t^{b_k}dt=q_{b_k}^w \otimes \int_t \frac{1}{2}q_t^{b_k} \otimes \begin{bmatrix} w_t^{b_k} \\ 0 \end{bmatrix} dt \\ =q_{b_k}^w \otimes \int_t \frac{1}{2}q_t^{b_k} \otimes \begin{bmatrix} (\hat w_t -b_w -n_w) \\ 0 \end{bmatrix}dt

1.3 离散表示

 我们以中值积分给出离散表示L:

p_{b_{k+1}}^w=p_{b_k}^w+v_{b_k}^w\Delta t_k+\frac{1}{2} \overline{\hat a_t}\delta t^2 \\ v_{b_{k+1}}^w=v_{b_k}^w+\overline{\hat a_t}\delta t \\ q_{b_{k+1}}^w=q_{b_k}^w \otimes \begin{bmatrix} 1 \\ \frac{1}{2}\overline{\hat w_t}\delta t\end{bmatrix}\\ \overline{\hat a_t}=\frac{1}{2}[q_i(\hat a_t-b_a)-g^w+q_{i+1}(\hat a_{t+1}-b_a)-g^w] \\ \overline{\hat w_t}=\frac{1}{2}(\hat w_t + \hat w_{t+1}-b_w)

二、IMU预积分

2.1 连续形式

 基本思想就是将参考坐标系从

w

转到第

k

帧的body坐标系下,相当于两边同时乘

R_w^{b_k}

,我们直接用论文中的公式来表示:

 其中:

 上述可以理解为

b_{k+1}

b_k

的相对运动量,其中

b_k

状态的改变并不会对其产生影响,可以将其作为非线性优化变量,避免重复计算。实际到这里,只要求解出积分,我们就完成了预积分的计算,我们的目标也就是在此。实际当中随机游走也是发生改变的,所以我们将上述变量再次进行一阶近似,我们再次使用论文中的公式进行表示:

2.2 离散形式

 我们同样以中值积分的形式给出:

 其中位置、速度初始值为0,旋转为单位四元数,噪声视为0。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 傅里叶的猫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • VSLAM:预积分公式推导(一)
    • 一、基本预备知识
      • 1.1 预备知识:
      • 1.2 IMU模型
      • 1.3 离散表示
    • 二、IMU预积分
      • 2.1 连续形式
      • 2.2 离散形式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档