slam
文章平均质量分 59
slam已经入土
这个作者很懒,什么都没留下…
展开
-
VINS-Motion: VINS与运动约束的紧密耦合融论文翻译
合摘要摘要:本文提出了一种新的带运动约束的视觉惯性导航系统(VINS- motion),该系统将视觉惯性导航系统(VINS)扩展到包含车辆运动约束的视觉惯性导航系统,以提高自主车辆的定位精度。除了先验信息、IMU测量残差和VINS中的视觉测量残差外,首先利用车辆的方向/速度约束构成运动残差。通过最小化三种残差的先验和马氏范数,得到最大后验估计,从而提高了系统的一致性和精度。还增加了停止检测,有助于消除停止时估计位姿的异常抖动,从而保证了轨迹的合理性。该方法在公共数据集上进行了验证,并与最新的算法进行了比原创 2021-11-03 20:49:41 · 566 阅读 · 0 评论 -
PL-VINS运行及问题解决
PL-VINS运行创建工作空间 mkdir -p ~/catkin_plvins/src catkin_init_workspace cd ~/catkin_plvins/ catkin_make source devel/setup.bash echo $ROS_PACKAGE_PATH //将代码下载到src目录下 或者执行下面代码 cd ~/catkin_plvins/src git clone https://github.com/cnqiangfu/PL-VINS原创 2021-08-15 12:34:26 · 1754 阅读 · 1 评论 -
MLpnp论文阅读及算法思想
MLpnpMLPNP - A REAL-TIME MAXIMUM LIKELIHOOD SOLUTION TO THEPERSPECTIVE-N-POINT PROBLEMS. Urban, J.Leitloff, S.Hinz卡尔斯鲁厄理工学院摄影测量与遥感研究所,卡尔斯鲁厄Englerstr. 7,76131卡尔斯鲁厄,德国-(斯蒂芬。城市,延斯。leitloff stefan.hinz) @kit.edu http://www.ipf.kit.edu论文关键词:位姿估计,透视n点,计算机视原创 2021-08-05 13:15:39 · 3178 阅读 · 3 评论 -
ORBSLAM3论文阅读及自己的想法
ORB-SLAM3ORB-SLAM3: An Accurate Open-Source Libraryfor Visual, Visual-Inertial and Multi-Map SLAMCarlos Campos∗, Richard Elvira∗, Juan J. Gómez Rodr´ ıguez, José M.M. Montiel and Juan D. Tardós摘要本文介绍了ORB-SLAM3系统,这是第一个能够执行视觉、视觉惯性和多地图SLAM的单目、立体和RGB-D相机的原创 2021-08-04 12:11:59 · 1058 阅读 · 0 评论 -
PL-VIO(点线slam)学习笔记(持续更新)
1原创 2021-07-22 18:03:10 · 5614 阅读 · 0 评论 -
ubuntu 16.04运行 vins-fusion
前提安装Eigen3.3.7参考博客安装ceres1.14.0参考博客ceres别装2.0版本,装1.4开始装的2.0遇到错误error: ‘integer_sequence’ is not a member of ‘std’ struct SumImpl<std::integer_sequence<T, N, Ns…>>教程安装Ros参考博客编译新建工作空间 mkdir -p ~/catkin_vinsfusion_ws/src可以去gitee下载vinsf原创 2021-06-03 20:46:42 · 336 阅读 · 0 评论 -
openvslam学习笔记
简要回顾orbslam单目相机:没有xright和depth双目:有xright(视差) ,用xright可以的得到depth。对于双目相机,用右边相机点的坐标减去左边相机对应点的坐标就可以得到xright。(水平方向)RGBD:有depth,用depth可以得到xrightRGBD可以直接得到depth ,但RGB相机和深度相机的位置也不是一一对应的,相当于也是双目,因此也有xright...原创 2021-05-11 21:49:31 · 298 阅读 · 0 评论 -
MSCKF演示实验
参考博客演示实验原创 2021-04-28 15:49:41 · 197 阅读 · 0 评论 -
基于ubuntu18.04源码运行orbslam2实验过程及演示
基于ubuntu18.04源码运行orbslam2实验过程及演示orbslam源码链接首先在orbslam2文件夹中打开中断,并按顺序运行以下三段代码实验采用的数据集是tum这里给出数据集的网盘密码:joe0chmod +x build.sh./build.sh./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml /home/nnz/Dataset/tmu/rgbd_dataset原创 2021-03-21 21:28:41 · 402 阅读 · 0 评论 -
vins-mono运行步骤及实验演示
基于ROS运行vins-mono参考博客源码地址步骤如下:先根据官网的指导把改装的库装一下!!!mkdir -p catkin_vins/srccd vins-mono-catkin_ws/src/git clone https://github.com/HKUST-Aerial-Robotics/VINS-Mono.gitcd ..catkin_makesource devel/setup.bash下面的命令都在工作空间里执行catkin_makesource devel/s原创 2021-03-19 17:11:36 · 400 阅读 · 0 评论 -
ORBSLAM2总结之Loop_Closing
下列函数代码都在Loop_Closing.cpp中参考博客一、回环检测流程代码对应函数为:void LoopClosing::Run()在这里插入代码片二、闭环帧的检测代码中对应函数为:DetectLoop()首先通过函数CheckNewKeyFrames()检测mlpLoopKeyFrameQueue里的关键帧是否为空,如果不空则进行闭环检测的处理:也就是DetectLoop()。(Loopclosing中的关键帧是LocalMapping发送过来的,LocalMapping是Tracki原创 2021-02-06 15:51:52 · 683 阅读 · 0 评论 -
草稿-vio2
test1下图是:陀螺仪Allan方差图下图是:加速度计Allan方差图test2下图是:陀螺仪Allan方差图下图是:加速度计Allan方差图原创 2020-12-19 13:04:30 · 118 阅读 · 1 评论 -
Kinect2+Ros跑通ORBLSAM2
一、ubuntu16.04安装kinect2以及iai-kinect2可以参考这篇文章kinetic2安装以及iai-kinect2iai-kinect2二、KInetic+Ros 跑ORBSLAM2步骤:打开终端1git clone http://github.com/raulmur/ORB_SLAM2.gitcd ORB_SLAM2chmod +x build.sh ./build.sh #可自动编译好g2o与DBoW2并且把Vocabulary自动解压打开一个新的终端2转载 2020-12-17 15:35:32 · 253 阅读 · 0 评论 -
ORBSLAM2总结之-Tracking.cpp
/** * @file Tracking.cc * @author guoqing (1337841346@qq.com) * @brief 追踪线程 * @version 0.1 * @date 2019-02-21 * * @copyright Copyright (c) 2019 * *//*** This file is part of ORB-SLAM2.** Copyright (C) 2014-2016 Raúl Mur-Artal <raulmur at原创 2020-12-16 17:41:14 · 216 阅读 · 0 评论 -
ORBSLAM2总结之-LocalMapping.cpp
/** * @file LocalMapping.cc * @author guoqing (1337841346@qq.com) * @brief 局部建图线程 * @version 0.1 * @date 2019-04-29 * * @copyright Copyright (c) 2019 * *//*** This file is part of ORB-SLAM2.** Copyright (C) 2014-2016 Raúl Mur-Artal <raul原创 2020-12-16 17:38:04 · 262 阅读 · 0 评论 -
ORBSLAM2总结之-LocalMapping线程
前言本文结合其余的ORBSLAM2的资料,对ORBLSAM2源码进行注释,感谢知识星球、泡泡机器人感谢吴博!源码是知识星球小六等人的带注释版本。LocalMapping线程主要用来处理从Tracking线程传过来的关键帧。个人理解是:Tracking线程只要是完成对当前帧的追踪,以及这个帧的地图点相关信息之类的。在LocalMapping中只要就是处理这个新的关键帧。注意:处理新的关键帧是在缓冲队列中处理,处理完了后,要从缓存队列中删掉。LocalMapping主要流程如下图所示:上面的原创 2020-12-16 17:30:37 · 331 阅读 · 0 评论 -
ORBSLAM2总结之-tracking线程
前言本文结合其余的ORBSLAM2的资料,对ORBLSAM2源码进行注释,感谢知识星球、泡泡机器人感谢吴博!源码是知识星球小六等人的带注释版本。1、Tracking线程主要是用来计算各个帧的位姿在Tracking.cpp中将图片放进Tracking线程只要是下面的GrabImageStereo()和GrabImageRGBD()、GrabImageMonocular()函数。这三个函数的流程如下图所示:/** * 这里是双目的获取图片的函数、同时利用获得的灰度图构建当前帧,进行tracki原创 2020-12-12 14:23:19 · 658 阅读 · 0 评论 -
从零手写vio-作业7
一 程序修改在VINS_Course源码中对如下函数进行修改:在run_eurco.cpp中:在这里插入代码片二、对不同大小噪声的IMU数据和相机数据仿真在第二讲的源代码的param.h文件中修改噪声大小1、小噪声 double gyro_bias_sigma = 1.0e-7; ////陀螺仪bias随机游走噪声 bias的导数服从高斯分布 double acc_bias_sigma = 0.000001; ////加速度bias随机游走噪声 bias的导数服从高斯分布原创 2020-12-10 17:50:48 · 1098 阅读 · 7 评论 -
从零手写vio-作业6-三角化
2完成三角化代码源码如下://// Created by nnz on 18-11-11.//#include <iostream>#include <vector>#include <random> #include <Eigen/Core>#include <Eigen/Geometry>#include <Eigen/Eigenvalues>using namespace std;//struct P.原创 2020-12-08 16:34:46 · 265 阅读 · 0 评论 -
从零手写vio-作业5-后端优化实践-逐行手写求解器
1在MakeHseesian()函数中; // 所有的信息矩阵叠加起来 // TODO:: home work. 完成 H index 的填写. // 确定不会有错误的产生,那么可以使用noaliasd()函数来避免产生临时变量,使用noalias()函数来声明这里没有混淆直接赋值 //这里index_i、index_j是对应矩阵块的位置,i代表行。j代表列 此时对应的是对角线部分加上三角部分 H.block(index_i, index_j, dim_i, dim_j).noalias() .原创 2020-12-03 16:55:32 · 706 阅读 · 2 评论 -
从零开始手写vio-作业4-滑动窗口算法
1原创 2020-12-01 22:01:58 · 370 阅读 · 1 评论 -
ubuntu -lixbkcommon问题
https://launchpad.net/ubuntu/+source/libxkbcommon要用vpn原创 2020-12-03 17:19:20 · 450 阅读 · 0 评论 -
从零开始手写vio-ch3作业
112修改的代码如下:对于函数y=ax2+bx+c 来说 它的残差特别简单,它的雅克比页特变简单error=ax2+bx+c-y (这里面的a,b,c是待优化的变量 ,y是观测值,x是数据点)J=[x2 , x, 1]// 计算曲线模型误差 virtual void ComputeResidual() override { Vec3 abc = verticies_[0]->Parameters(); // 估计的参数 residua.原创 2020-11-27 21:20:03 · 321 阅读 · 0 评论 -
从零开始手写vio-ch2-imu数据仿真
一、利用欧拉积分和中指=值积分来计算imu数据,并绘制轨迹,与给定的轨迹方程进行比较利用欧拉积分或者中值积分计算imu数据核心代码imu.cpp源码如下://// Created by hyj on 18-1-19.//#include <random>#include "imu.h"#include "utilities.h"// euler2Rotation: body frame to interitail frameEigen::Matrix3d euler2原创 2020-11-26 11:27:49 · 878 阅读 · 0 评论 -
从零开始手写vio作业-ch1-编程实现旋转的更新(分别用旋转矩阵和四元数实现)
利用旋转矩阵实现旋转的更新公式:上部分公式对应旋转矩阵的更新,下部分公式对应着四元数更新其中 w对应着旋转小量 w=[0.01,0.02,0.03]T,也就是原始的旋转要更新w这么多的旋转1、直接用Eigen 进行更新对于旋转矩阵的更新来说,要用到下面的公式 ,该公式可参考slambook2 79p页也就是罗德里格斯公式(Rodrigues’s Formula )注;对于小量w来说 ,它的旋转角度是小量向量的模长norm,旋转轴是小量向量除以旋转角度。源码如下://// Create原创 2020-11-25 16:18:59 · 676 阅读 · 0 评论 -
SLAM十四讲-ch12-建图(包含单目和RGBD的代码详细注释)
一、单目稠密建图单目相机因为无法获得深度信息,所以要计算深度步骤:1、利用极线搜索、块匹配得到参考帧和当前帧像素的匹配(快匹配利用ncc评分进行匹配)。2、利用三角化计算深度估计值3、利用深度滤波器对深度估计值进行滤波 【滤波就是算出估计的深度(这时候估计的深度加上了一个像素的误差了)的不确定性,然后估计的深度与之前的原深度进行高斯融合】4、更新深度源码如下://// Created by nnz on 2020/11/16.///************* * 1、读取图片 *原创 2020-11-17 17:14:59 · 2144 阅读 · 2 评论 -
SLAM十四讲-ch11-回环检测-代码注释
一、创建字典字典:是由许多单词构成一个单词:是由特征点的集合构成词袋:由许多【单词以及单词的权重】构成 (每个单词都会有自己对应的权重)权重:其实就是其单词的区分度 ,因为有些单词在图片中很常见(出现的频率高),那么它的区分度就应该低,相反不常见的单词(出现的频率低),区分度应该高。权重的公式:见slambook2 p295页 公式11.7图片与图片之间的评分依赖于每个图片源码如下://// Created by nnz on 2020/11/15.//#include <ios原创 2020-11-15 17:18:14 · 1273 阅读 · 2 评论 -
SLAM十四讲-后端2-ch10-代码注释(位姿图优化)
一、李代数上的位姿图优化源码如下:#include <iostream>#include <fstream>#include <string>#include <Eigen/Core>#include <g2o/core/base_vertex.h>#include <g2o/core/base_binary_edge.h>#include <g2o/core/block_solver.h>#includ原创 2020-11-12 11:54:00 · 1427 阅读 · 1 评论 -
slam十四讲-ch9(后端1)-卡尔曼滤波器公式推导及BA优化代码实现【注释】(应该是ch13前面最难的部分了)
一、KF以及EKF公式推导(卡尔曼滤波和线性近似卡尔曼滤波)前提:概率论相关知识原创 2020-11-09 09:43:56 · 1834 阅读 · 4 评论 -
SLAM十四讲-ch8-直接法(包含手写单层、多层光流跟踪和直接法代码的注释)
一、利用cv的光流追踪函数进行光流跟踪void cv::calcOpticalFlowPyrLK ( InputArray prevImg, InputArray nextImg, InputArray prevPts, InputOutputArray nextPts, OutputArray status, OutputArray err, Size winSize = Siz原创 2020-11-06 16:18:07 · 2433 阅读 · 0 评论 -
SLAM十四讲-ch7(2)-位姿估计(包含2d-2d、3d-2d、3d-3d、以及三角化实现代码的注释)
1、利用2d-2d进行位姿估计源码如下:////#include <iostream>#include <opencv2/core/core.hpp>#include <opencv2/features2d/features2d.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/calib3d/calib3d.hpp>using namespace std;原创 2020-11-03 11:32:27 · 2104 阅读 · 4 评论 -
SLAM十四讲-ch7(1)-特征点匹配(包含手写ORB和直接调用cv库函数的代码注释)
一、利用cv库函数进行特征点的匹配源码如下://// Created by wenbo on 2020/11/1.//#include<iostream>#include<opencv2/core/core.hpp>#include<opencv2/features2d/features2d.hpp>#include <opencv2/highgui/highgui.hpp>#include <chrono>using name原创 2020-11-02 11:02:41 · 1180 阅读 · 2 评论 -
slam十四讲-ch6-非线性优化(包含手写高斯牛顿、使用g2o库、使用ceres库三种方法的源码详细注释)
一、自写高斯-牛顿法该程序是要进行一个非线性优化,对非线性函数的系数进行优化y=exp(ax2+bx+c)给定初始的系数 ae,be,ce(估计的) ar,br,cr(真实的)源码如下://// Created by wenbo on 2020/10/28.////该程序是手写高斯牛顿法,对一个简单的非线性函数进行优化//y=exp(ax2+bx+c)#include<iostream>#include<opencv2/opencv.hpp>#in原创 2020-10-29 17:33:18 · 1620 阅读 · 0 评论