SLAM中的三维运动学【SLAM】

李群视角下的运动学

连续时间下的运动学模型

物体在连续时间下运动的位姿由 R ( t ) R(t) R(t) t ( t ) t(t) t(t)表示,根据 R R R的正交性质有:
R ( t ) T R ( t ) = I R(t)^{T}R(t) = I R(t)TR(t)=I
公式两边对时间 t t t求导有:
R ( t ) ˙ T R ( t ) + R ( t ) T R ( t ) ˙ = 0 \dot{R(t)}^{T}R(t) + R(t)^{T}\dot{R(t)}= 0 R(t)˙TR(t)+R(t)TR(t)˙=0
R ( t ) T R ( t ) ˙ = − ( R ( t ) T R ( t ) ˙ ) T R(t)^{T}\dot{R(t)} = -(R(t)^{T}\dot{R(t)})^{T} R(t)TR(t)˙=(R(t)TR(t)˙)T
可以发现 R ( t ) T R ( t ) ˙ R(t)^{T}\dot{R(t)} R(t)TR(t)˙是反对称矩阵,不妨取 ω ( t ) ∧ = R ( t ) T R ( t ) ˙ \omega(t)^{\wedge} = R(t)^{T}\dot{R(t)} ω(t)=R(t)TR(t)˙,后面推导会发现 ω ( t ) \omega(t) ω(t)的意义其实就是瞬时角速度,此时有:
R ( t ) ˙ = R ( t ) ω ( t ) ∧ \dot{R(t)} = R(t)\omega(t)^{\wedge} R(t)˙=R(t)ω(t)
这里本人认为明确标出 ( t ) (t) (t)可以更容易理解变量之间的关系,否则很容易产生误解或疑惑。

上面的方程称为泊松方程(Poinsson Formula),这是一个微分方程,但是不要对它直接求解,我们假设 ω \omega ω是固定的值,并给定初值 t 0 t_{0} t0时刻的旋转矩阵为 R ( t 0 ) R(t_{0}) R(t0),此时微分方程有解:
R ( t ) = R ( t 0 ) e x p ( ω ∧ ( t − t 0 ) ) R(t) = R(t_{0}) exp(\omega^{\wedge}(t - t_{0})) R(t)=R(t0)exp(ω(tt0))
此时会发现 ω \omega ω刚好对应为角速度,而这个解描述的就是角速度不变的情况下的运动方程,如果让 t t t无限接近 t 0 t_{0} t0,也就是利用极限的思想, ω \omega ω就是瞬时角速度。

离散时间下的运动学模型

离散时间下认为瞬时角速度在短时间内不变,也就是 t 0 t_{0} t0 t t t时刻内不变,于是有:
R ( t ) = R ( t 0 ) e x p ( ω ∧ ( t − t 0 ) ) = R ( t 0 ) e x p ( ω ∧ △ t ) R(t) = R(t_{0}) exp(\omega^{\wedge}(t - t_{0})) = R(t_{0}) exp(\omega^{\wedge}\triangle t) R(t)=R(t0)exp(ω(tt0))=R(t0)exp(ωt)

线性近似形式

R ( t ) R(t) R(t) t 0 t_{0} t0时刻做一阶泰勒展开:
R ( t 0 + △ t ) ≈ R ( t 0 ) + R ( t 0 ) ˙ △ t = R ( t 0 ) + R ( t 0 ) ω ∧ △ t = R ( t 0 ) ( I + ω ∧ △ t ) R(t_{0} + \triangle t) \approx R(t_{0}) + \dot{R(t_{0})}\triangle t = R(t_{0}) +R(t_{0})\omega^{\wedge} \triangle t = R(t_{0})(I + \omega^{\wedge}\triangle t) R(t0+t)R(t0)+R(t0)˙t=R(t0)+R(t0)ωt=R(t0)(I+ωt)

离散形式和线性近似形式是更常用的处理形式。

四元数视角下的运动学

描述旋转的四元数具有单位性约束,也就是说必须是单位四元数,所以满足 q q ∗ = q ∗ q = 1 qq^{\ast} = q^{\ast}q =1 qq=qq=1

q ∗ q = 1 q^{\ast}q =1 qq=1两侧对时间求导有:
q ∗ ˙ q + q ∗ q ˙ = 0 \dot{q^{\ast}}q + q^{\ast}\dot{q} =0 q˙q+qq˙=0
q ∗ q ˙ = − q ∗ ˙ q = − ( q ∗ q ˙ ) ∗ q^{\ast}\dot{q} = -\dot{q^{\ast}}q = -(q^{\ast}\dot{q})^{\ast} qq˙=q˙q=(qq˙)
可以发现 q ∗ q ˙ q^{\ast}\dot{q} qq˙是一个纯虚四元数,不妨令其为 ϖ \varpi ϖ后面会发现 ϖ \varpi ϖ和李群下的 ω \omega ω有关系,准确的说,虚部为 1 2 ω \frac{1}{2} \omega 21ω,也体现了瞬时角速度的意义。

于是有:
q ∗ q ˙ = ϖ q^{\ast}\dot{q} = \varpi qq˙=ϖ
q ˙ = q ϖ \dot{q} = q\varpi q˙=qϖ

同样假设 ϖ \varpi ϖ为固定值,上面的微分方程的解为 q ( t ) = q ( t 0 ) e x p ( ϖ △ t ) q(t) = q(t_{0})exp(\varpi \triangle t) q(t)=q(t0)exp(ϖt)

这里要说明的是这里的指数映射为纯虚四元数的指数映射,结果为单位四元数,具体的定义为:
e x p ( ϖ ) = e x p ( θ u ) = c o s θ + u s i n θ exp(\varpi) = exp(\theta \mathbf{u}) = cos\theta + \mathbf{u}sin \theta exp(ϖ)=exp(θu)=cosθ+usinθ

不妨把纯虚四元数 ϖ \varpi ϖ看成四元数形式的李代数。

四元数视角下的运动学与李群视角下运动学的关系

下面要介绍的是上面两中运动学表达之间的关系,我们的关注点在于如何把两种表达的物理意义统一在一个描述下。

假设有一个旋转矩阵 R R R和对应的旋转向量 ϕ = θ n \phi = \theta\mathbf{n} ϕ=θn,对应的四元数为 q = e x p ( ϖ ) q=exp(\varpi) q=exp(ϖ)

根据四元数与旋转向量之间的转换关系可知 q = [ c o s θ 2 , n T s i n θ 2 ] T q = [cos\frac{\theta}{2}, \mathbf{n}^{T}sin\frac{\theta}{2}]^{T} q=[cos2θ,nTsin2θ]T,所以有 ϖ = [ 0 , 1 2 ϕ T ] T \varpi = [0, \frac{1}{2}\phi^{T}]^{T} ϖ=[0,21ϕT]T

所以四元数视角下的“角速度” ϖ \varpi ϖ其实是瞬时角速度的一半。

为了统一物理意义,我们让 ω \omega ω仍然代表瞬时角速度,此时四元数视角下的运动学方程为:
q ˙ = 1 2 q [ 0 , ω T ] T \dot{q} = \frac{1}{2}q[0, \omega^{T}]^{T} q˙=21q[0,ωT]T

假设某一时刻 t 0 t_{0} t0的瞬时角速度为 ω = ϕ = θ n \omega = \phi = \theta \mathbf{n} ω=ϕ=θn,由上一部分的四元数微分方程的解 q ( t ) = q ( t 0 ) e x p ( ϖ △ t ) q(t) = q(t_{0})exp(\varpi \triangle t) q(t)=q(t0)exp(ϖt)可以看出离散形式下的四元数更新方式:
q ( t ) = q ( t 0 ) e x p ( ϖ △ t ) = q ( t 0 ) e x p ( [ 0 , 1 2 ϕ T ] T △ t ) q(t) = q(t_{0})exp(\varpi \triangle t) = q(t_{0})exp([0, \frac{1}{2}\phi^{T}]^{T} \triangle t) q(t)=q(t0)exp(ϖt)=q(t0)exp([0,21ϕT]Tt)
因为 e x p ( [ 0 , 1 2 ϕ T ] T ) = [ c o s θ 2 , n T s i n θ 2 ] T exp([0, \frac{1}{2}\phi^{T}]^{T}) = [cos\frac{\theta}{2}, \mathbf{n}^{T}sin\frac{\theta}{2}]^{T} exp([0,21ϕT]T)=[cos2θ,nTsin2θ]T,当 ω \omega ω很小时,就可以近似,于是四元数的更新近似为:
q ( t ) = q ( t 0 ) [ 1 , 1 2 ω T ] T q(t) = q(t_{0})[1, \frac{1}{2}\omega^{T}]^{T} q(t)=q(t0)[1,21ωT]T

要注意的是,如果使用这种近似形式,更新后的四元数不再是单位四元数,所以长时间更新后要对四元数重新归一化。

参考资料:《自动驾驶与机器人中的SLAM技术》 高翔著

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你想学习 ORB-SLAM2,是一个基于特征点的稀疏直接法视觉 SLAM 系统。这个系统能够通过摄像头捕捉到的图像来构建三维地图并同时估计相机的运动轨迹。要学习 ORB-SLAM2,你可以按照以下步骤进行: 1. 了解 SLAM:首先,你需要了解什么是视觉 SLAM,包括它在机器人、增强现实和自动驾驶等领域的应用。你可以阅读相关的论文或教材来掌握 SLAM 的基本概念。 2. 学习 ORB 特征点描述符:ORB-SLAM2 使用 ORB 特征点描述符来提取和匹配图像特征。你可以学习 ORB 特征点描述符的原理和实现方法,并了解特征点在 SLAM 的作用。 3. 下载并阅读源代码:ORB-SLAM2 是开源的,你可以在其 GitHub 上找到代码和文档。下载代码后,阅读文档以了解系统的结构和使用方法。 4. 安装依赖库:ORB-SLAM2 使用了一些第三方库,如 OpenCV 和 Eigen。确保你已经正确安装和配置了这些库,并按照文档的指导完成编译和配置。 5. 运行示例程序:ORB-SLAM2 附带了一些示例程序,你可以用它们来运行系统并观察其行为。首先,你可以尝试使用它们提供的演示数据集,以便更好地理解系统的工作原理。 6. 实践与调试:一旦你对系统有了基本的了解,你可以尝试将 ORB-SLAM2 应用到自己的数据集或实际场景。在此过程,你可能会遇到一些问题或 bug,需要进行调试和优化。 7. 学习进阶内容:一旦你熟悉了 ORB-SLAM2 的基本用法,你可以进一步学习其内部原理和算法细节。这将有助于你更好地理解系统,并能够针对特定需求进行定制和优化。 记住,学习 ORB-SLAM2 需要一定的数学和计算机视觉基础。如果你是初学者,建议先学习相关的数学和计算机视觉知识,然后再深入研究 ORB-SLAM2。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值