openvins学习

openvins根据论文所说,构建开源代码库集成了 (1)流形上滑动窗口卡尔曼滤波 (2)在线相机内外参标定 (3)相机到惯性传感器的时间偏移校准 (4)不同SLAM landmark的表示方法 (5)一致的初始估计雅可比矩阵(FEJ)处理 (6)用于状态管理的模块化系统 (7)可扩展的可视化惯性系统模拟器 (8)用于算法评估的工具箱

在阅读代码时,各功能模块分类:
1、ov_core: 包含2d图像稀疏特征点跟踪 线性、G-N特征三角化 视觉-惯性估计器 (适用于任何相机和任何频率) 流形上的运算理论基础

2、ov_msckf: 【基于FEJ 的可拓展滑动窗口误差状态模型视觉-惯性估计器】 标准的MSCKF Camera-IMU 时间校准 FEJ 相机内参与外参校准 3d SLAM地标的不同表示方法

3、ov_eval: 包含轨迹对齐 轨迹绘制 轨迹精度一致性评估工具 Ros topic记录到文件

在这里插入图片描述

一:运行

使用开源算法进行测试

mkdir -p ~/workspace/catkin_ws_ov/src/
cd ~/workspace/catkin_ws_ov/src/
git clone https://github.com/rpng/open_vins/
cd ..
catkin build

报错:catkin command not found

sudo apt-get install python-catkin-tools

运行:

#开一终端
roscore

#再开一终端
source devel/setup.bash
rosrun rviz rviz -d ov_msckf/launch/display.rviz

rosrun rviz rviz #在左上角Open config 选择~/workspace/catkin_ws_ov/src/open_vins/ov_msckf/launch/display.rviz

#再开一终端
source devel/setup.bash
roslaunch ov_msckf pgeneva_serial_eth.launch


注意!!!这里rviz需要配置,否则显示不出来。

二:ov_msckf

1、首先观察CMakeLists.txt,可以看出有五个可执行文件,即主cpp函数。

if (catkin_FOUND)

    add_executable(run_serial_msckf src/ros_serial_msckf.cpp)
    target_link_libraries(run_serial_msckf ov_msckf_lib ${thirdparty_libraries})

    add_executable(run_subscribe_msckf src/ros_subscribe_msckf.cpp)
    target_link_libraries(run_subscribe_msckf ov_msckf_lib ${thirdparty_libraries})

    add_executable(run_simulation src/run_simulation.cpp)
    target_link_libraries(run_simulation ov_msckf_lib ${thirdparty_libraries})

else()

    add_executable(run_simulation src/run_simulation.cpp)
    target_link_libraries(run_simulation ov_msckf_lib ${thirdparty_libraries})

endif()


add_executable(test_sim_meas src/test_sim_meas.cpp)
target_link_libraries(test_sim_meas ov_msckf_lib ${thirdparty_libraries})

add_executable(test_sim_repeat src/test_sim_repeat.cpp)
target_link_libraries(test_sim_repeat ov_msckf_lib ${thirdparty_libraries})

其中主要使用的是run_serial_msckf.cpp,即按照顺序读取文件。

2、前端特征点提取

openvins的前端特征点主要有两种方式,KLT光流追踪与ORB特征,代码在ov_core/src/track文件夹中。

首先在VioManager.cpp的feed_measurement_imu函数对图像进行传入,构建了一个双端队列:std::deque<ov_core::CameraData> camera_queue

feed_measurement_imu -> track_image_and_update-> TrackKLT::feed_monocular ->

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值