1、文献阅读(我阅读的是“A Review of Visual-Inertial Simultaneous Localizationand Mapping from Filtering-Based andOptimization-Based Perspectives“这篇VIO综述文章)
1、
整体上视觉和IMU定位方案存在一定互补性质,(1)IMU适合计算时间短,快速的运动;(2)视觉适合计算时间长,慢速的运动;同时,可利用视觉定位信息来估计IMU的零偏,减少IMU由零偏导致的发散和累积误差;反之,IMU可以为视觉提供快速运动是的定位,IMU可以提供尺度信息,避免单目无法测尺度。
2、
常见融合方案:VI-ORB,MSCKF,VINS-mono,OKVIS,ROVIO,S-MSCKF
应用:AR,VR,无人驾驶,移动机器人,微型飞行器自主导航,水下无人潜航器auv
3、
(1)VIO与深度学习结合:论文题目:Selective Sensor Fusion for Neural Visual-Inertial Odometry,本文提出了一种新颖的端对端选择性传感器融合框架,用于单目VIO,融合单目图像和IMU,以此来估计轨迹,同时提高对实际问题的鲁棒性,如数据丢失和损坏或传感器同步不良。结果证明了特别是在存在损坏的数据的情况下,融合策略比直接融合具有更好的性能。
(2)Active SLAM:On the Importance of Uncertainty Representation inActive SLAM
(3)多传感器融合和硬件集成:硬件集成:A Embedding SLAM algorithms: Has it come ofage?
多传感器融合:Vehicle Localization Based on Visual Lane Marking and Topological Map Matching
(4)复杂动态环境中的应用:Collaborative Visual SLAM in Dynamic Environments.
(5)利用深度学习实现深度估计:CNN-SVO
2、
1、比较程序:
#include<iostream>
#include<vector>
#include<Eigen/Core>
#include<Eigen/Dense>
#include<Eigen/Geometry>
using namespace std;
using namespace Eigen;
int main(int argc, char **argv)
{
Vector3d rot_axis=Eigen::Vector3d::Random();
rot_axis.normalize();
Eigen::AngleAxisd rot_angle_axis(M_PI/4,rot_axis);
Eigen::Matrix3d rotation_matrix=rot_angle_axis.toRotationMatrix();
cout<<"初始旋转矩阵 "<< endl << rotation_matrix << endl;
Quaterniond q = Quaterniond(rot_angle_axis);
Vector3d w(0.01, 0.02, 0.03); //旋转向量
double theta = w.norm(); //旋转向量对应的旋转角
AngleAxisd w_rot_vector(theta,w.normalized()); //w.normalized()为旋转轴,w_rot_vector为角轴
Matrix3d w_rot_matrix = w_rot_vector.toRotationMatrix(); //w_rot_matrix为旋转矩阵
rotation_matrix = rotation_matrix * w_rot_matrix;
cout << "旋转矩阵" << endl << rotation_matrix << endl;
Quaterniond q_w = Quaterniond(1, 0.5*w(0), 0.5*w(1), 0.5*w(2));
q = q * q_w;
q.normalized();
cout <<"四元数" << endl << q.toRotationMatrix() << endl;
return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(compare)
include_directories("/usr/include/eigen3")
add_executable(compare compare.cpp)
target_link_libraries(compare ${Eigen3_INCLUDE_DIRS})
结果
3、
1、
2、