vio-视觉与IMU融合实现里程计(第一章)——作业

vio-视觉与IMU融合实现里程计(第一章)——作业_第1张图片
1 视觉与IMU进行融合之后有何优势?
IMU的缺点:加速计和陀螺仪均会受到零偏的影响,导致长时间积分后位姿会发生较大的漂移。
相机的缺点:易受周围环境的影响,如弱纹理环境,光照明显的环境,多动态物体的环境,还会受到运动模糊的影响。
相机和IMU是互补的关系,融合后会有以下优点:

	 - 融合IMU可以恢复尺度,解决了单目尺度不确定的问题。
	 - 融合IMU可以提供一个较为准确的初始估计,防止非线性优化问题陷入局部最优解。
	 - 融合IMU可以解决单目纯旋转无法估计的问题,同时也可以在一定程度上解决图像模糊的问题。
	 - 纯视觉SLAM容易受到纹理,光照,动态环境的影响,此时可以依赖IMU的信息来减少外界因素对系统的影响。
	 - 视觉可以协助IMU估计自身的零偏,消除积分漂移。
	 - IMU可以提高系统的输出频率,理论上可以输出与IMU同频率的里程计。

2 有哪些常见的视觉+IMU融合方案? 有没有工业界应用的例子?
常见的融合方案分为紧耦合和松耦合。松耦合不是主流方案。
紧耦合分为基于滤波的方法和基于优化的方法:
- 基于滤波的方法:MSCKF系列,ROVIO, OpenVINS系列。
- 基于优化的方法:VINS-MONO系列,ORB-SLAM3, OKVIS
工业界中应用的列子:苹果的ARKit, 谷歌的ARCore, 无人机用VIO做悬停,避障和拍照防抖。

3 在学术界,VIO研究有哪些新进展?有没有将学习方法运用到VIO中的例子?
VIO目前有两个研究方向:
- 研究新的融合模式增强系统的鲁棒性和适用性。如:加入激光雷达,轮速计,GNSS等传感器,具有代表性的工作有LVI-SAM,GVINS,R3Live。
- 研究新的视觉约束和新的视觉特征提取来提高系统的精度。如:使用线,曲线,平面特征来构建残差。
将学习应用到VIO上有以下例子:
- 使用过深度学习来替换传统SLAM中的各个模块,如SuperPoint替换特征提取模块,SuperGlue替换回环检测模块。
- 加入语义信息。
- 基于深度学习的端到端位姿估计。

vio-视觉与IMU融合实现里程计(第一章)——作业_第2张图片

#include "sophus/so3.hpp"
#include "sophus/se3.hpp"
int main(int argc, char** argv)
{	
	Eigen::Vector3d w(0.01, 0.02, 0.03);
	Eigen::Quaterniond q = Eigen::Quaterniond::UnitRandom();
	Eigen::Matrix3d exp_w = Sophus::SO3d::exp(w).matrix();
	Eigen::Matrix3d R1 = q.toRotationMatrix() * exp_w;
	Eigen::Quaterniond q2;
	q2.w() = 1;
	q2.vec() = 0.5 * w;
	q2.normalized();
	Eigen::Matrix3d R2 = (q * q2).toRotationMatrix();
	std::cout << "R1" << R1 << std::endl;
	std::cout << "R2" << R2 << std::endl;
	std::cout << R2*R1.transpose() < std::endl;
	return 0;
}

vio-视觉与IMU融合实现里程计(第一章)——作业_第3张图片
vio-视觉与IMU融合实现里程计(第一章)——作业_第4张图片

你可能感兴趣的:(vio,slam,vio)