您的位置:首页 > 房产 > 建筑 > 宁波手机网站开发公司_桂林象鼻山附近酒店推荐_怎样创建自己的电商平台_海外营销方案

宁波手机网站开发公司_桂林象鼻山附近酒店推荐_怎样创建自己的电商平台_海外营销方案

2025/4/22 15:25:23 来源:https://blog.csdn.net/weixin_41469272/article/details/147143488  浏览:    关键词:宁波手机网站开发公司_桂林象鼻山附近酒店推荐_怎样创建自己的电商平台_海外营销方案
宁波手机网站开发公司_桂林象鼻山附近酒店推荐_怎样创建自己的电商平台_海外营销方案

介绍

本篇介绍一种基于视觉光流法的RGBD惯性SLAM算法,该算法的前身是DEMO算法。
相对于原始版本:
更新了相对较老的IplImage 相关接口
加入了GTSAM后端;滑动窗口后端;3D-3Dbatch优化;点到面batch后端。分别对应不同的branch。
后端表现都很一般。待进一步优化,只推荐使用visualOdometry.cpp 对应的前端。其他推荐的借鉴代码见后介绍,主要供自己后续使用。

代码地址:https://gitee.com/nie_xun/ademo/tree/master

推荐测试:

  • slidW 分支:bundleAdjust_new.cpp使用slidingwindow的方法。使用方法同v5.1。
  • v4.1: launch/realsense_test1.launch 点到面batch优化,稠密建图,增加平面点筛选显示,后端效果一般。
  • v5.1: launch/realsense_depth_align.launch或realsense_depth_raw.launch。
    在visualOdometry.cpp增加了3D-3D的batch优化,增加关键帧简单显示,非稠密建图,实时性高。
    align 使用与rgb图像对齐的深度图;raw使用的是原始深度图,未与深度图对齐。有些数据包所录的深度图是raw的。
  • master 分支:接近原始的,修改了少量代码,能够成功运行,环境ubuntu1804&ROS melodic。

Branches

  • master 接近原始版本,修改了部分编译问题,加入了IMU filter等, imudataPrefilter.cpp
  • dataset 最接近原始的版本,修改了部分编译问题,能够运行原作者的datasets
  • devel 点到面batch优化,bundleAdjust.cpp
  • slidW BA_new使用 sliding window & marglization, bundleAdjust_new.cpp
  • useGTSAM BA 使用 GTSAM, bundleAdjust.cpp
  • vo_refine 没有使用后端,但在前端代码中加入了3D-3D batch优化, visualOdometry.cpp

代码结构

Congfig foler:
.yaml文件包含了相机参数以及IMU频率,轨迹存放位置等等配置。
.config 主要用来配置log级别等系统性配置。

src folder:
imudataPrefilter.cpp : IMU互补滤波器,详见参考文献2: /imu_to_init -> visualOdometry.cpp
featureTracking.cpp : /image_points -> visualOdometry.cpp
  基于cvGoodFeaturesToTrack接口提取角点;
  基于cvCalcOpticalFlowPyrLK得到匹配的角点特征点,在匹配的特征点基础上进行新提取并发布。

visualOdometry.cpp : /cam_to_init -> transformMaintenance.cpp
          /cam_to_init -> stackDepthPoint.cpp
    ICP 3D-3D : /cam2_to_init -> transformMaintenance.cpp
  融合IMU积分结果;
  通过体积/面积的方法来计算点到面的深度;
  基于匹配好的特征点建立观测约束(根据是否匹配深度建立不同的约束方程)最后通过高斯牛顿进行位姿解算。
processFlatpoints.cpp : 通过计算点簇的协方差来提取平面点 : /flat_cloud -> bundleAdjust.cpp
                                     -> registerPointCloud.cpp

transformMaintenance.cpp : ->/camera2_refine
  通过插值法融合前端高频位姿输出与后端低频位姿输出,最后得到优化后的高频位置输出,
registerPointCloud.cpp : map点云到原始坐标系下并发布点云地图:->/surround_cloud

bundleAdjust.cpp : 后端优化代码,不同分支根据方法不同而不同-> /bef_ba_to_init

bundleAdjust_new.cpp : marglize & sliding window BA : ->/cam2_to_init
trajLoad.cpp: 发布并生成轨迹文件,订阅/cam_to_init & /cam2_to_init

simulator.cpp: 发布仿真图像特征点数据,用于测试 bundleAdjust_new.cpp

stackDepthPoint.cpp : stack feature point : /depth_points_stacked -> bundleAdjust.cpp

使用示例图

在这里插入图片描述
在这里插入图片描述

压力测试,让数据集倍速播放,查看输出速率,基于v5代码:
https://gitee.com/nie_xun/ademo/blob/master/doc/outdoor_map.mp4
建图视频:
https://gitee.com/nie_xun/ademo/blob/master/doc/stress.webm

参考

1 原始代码地址-https://github.com/wpfhtl/demo_rgbd
2 IMU互补滤波器-https://blog.csdn.net/weixin_41469272/article/details/113599414

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com