- 博客(69)
- 收藏
- 关注
原创 std::unordered_map 自定义hash,key-value
在C++中,std::unordered_map 是一个基于哈希表的关联容器,它允许你以常数平均时间复杂度存储和检索键值对。默认情况下,std::unordered_map 使用 std::hash 模板类来生成键的哈希值。但是,如果你想要为特定的键类型设置自己的哈希函数,你可以通过提供自己的哈希函数对象来实现。相等的键,返回相等的哈希值,不相等返回不同的哈希值。
2024-04-11 17:46:35
756
2
原创 DSV-SLAM: Fast Direct Stereo Visual SLAM
https://github.com/IRVLab/direct_stereo_slam
2022-05-12 14:54:40
511
原创 MSC-VO: Exploiting Manhattan and Structural Constraints for Visual Odometry(MSC-VO阅读笔记)
MSC-VO: Exploiting Manhattan and Structural Constraints for Visual Odometry 阅读笔记pdf link
2022-05-10 11:15:40
419
原创 C++---实用编程技巧记录(使用库函数/ lambda表达式求最小、大值,排序等)
C++---实用编程技巧记录求最小值/最大值注:为了写出高质量的代码,一些简单的逻辑尽量用库函数去实现,减少代码量;求最小值/最大值普通vector 求最小值std::vector<double> x={0,2,3,7,4,1};auto min_inter = std::min_element(x.begin(), x.end());double *min= *min_inter; // 值int index = std::distance(x.begin(),min_in
2022-04-19 21:29:29
2416
1
原创 Robust and Efficient Visual-Inertial Odometry with Multi-plane Priors(PVIO 阅读笔记)
PVIO 阅读笔记概要概要title:《Robust and Efficient Visual-Inertial Odometry with Multi-plane Priors》link:https://github.com/zju3dv/PVIO
2022-04-13 17:39:08
343
原创 PVI-DSO: Leveraging Planar Regularities for Direct Sparse Visual-Inertial Odometry (阅读笔记)
PVI-DSO 阅读笔记#简要#简要PVI-DSO:《PVI-DSO: Leveraging Planar Regularities for Direct Sparse Visual-Inertial Odometry》利用平面正则性进行直接稀疏视觉惯性里程计link:https://arxiv.org/pdf/2204.02635v1.pdf个人对直接法比较感兴趣,后续补齐论文阅读笔记,也争取能实现一下pipeline...
2022-04-13 17:16:19
463
原创 Django --- Mysql 基础命令
1. 登入mysql控制台mysql -u root -p2. 显示创建查询等#显示所有库mysql> SHOW DATABASES;# 创建库mysql> CREATE DATABASE codeslam_db CHARACTER SET utf8;# 使用这个库use codeslam_db;# 显示 codeslam_db 库中的所有表show tables; # 查看表结构desc blog_tag;# 查看表里面的数据...
2021-05-13 21:12:18
265
原创 Ubuntu---如何在CMakeLists.txt中查看当前工程使用的库版本号(如 Opencv,PCL)
一. CMakLists.txt 查看库在文件中写入:find_package(PCL REQUIRED)find_package(OpenCV REQUIRED)message("PCL version is : ${PCL_VERSION}")message("OpenCV version is : ${PCL_VERSION}")二. CMakLists.txt 指定库的版本在第一步知道了工程默认使用的库,在下面就可以指定版本号了在文件中写入:find_package(P
2021-05-01 22:45:04
1351
原创 SLAM ---- VINS 外点剔除
1. 外点剔除1.1 前端外点剔除vins-mono 中根据光流跟踪,得到匹配点对;vins-fusion 中可以设置反向光流,进一步剔除然后使用F基础矩阵进行剔除外点:rejectWithF()原理介绍:1. 输入的图片是带畸变的(如Euroc 单目数据集,为针孔相机模型)2. 则需要先通过将像素坐标系转到归一化坐标系下并去畸变(可以用 camodocal 模型 liftProjective 完成)3. liftProjective 之后得到归一化坐标系下的 3D点,除以 z ,得到 [x
2021-04-30 16:15:50
1808
2
原创 DSO ---关键帧选择 (暂存一下)
1.1.1 关键帧选择关键帧的选择主要考虑当前帧和前一关键帧在点的光流变化,不考虑旋转情况下的光流变化,曝光参数的变化,三者加权相加大于1时新建关键帧,新建的关键帧将用于后续的滑动窗口优化。若是非关键帧,则将未成熟的点根据相对位姿和之前的逆深度投影到当前帧上,根据之前逆深度范围进行极线搜索,并更新逆深度范围。...
2021-04-29 20:26:09
671
原创 SLAM ---- 误差测评 ATE、RPE、APE,与EVO
SLAM ---- 误差测评 ATE、RPE,与EVO一、误差1.1 ABSOLUTE TRAJECTORY ERROR (ATE)1.2 RELATIVE POSE ERROR (RPE)1.3 ABSOLUTE POSE ERROR (APE)二、EVO工具一、误差内容取自 TUM数据集:https://vision.in.tum.de/data/datasets/rgbd-dataset/toolsThe ATE is well-suited for measuring the perform
2021-04-29 17:15:59
7197
原创 SLAM --- VIO 基于 EKF 开源
1. VIO based on EKF已知一致性的Visual-Inertial EKF SLAM 实现添加链接描述
2021-04-11 22:38:50
707
原创 SLAM --- GN LM 原理与实践
非线性最小二乘问题求解知乎 GN ,LM 原理与实践 Methods For Non-Linear Least Squares Problems
2021-04-11 22:36:13
490
原创 SLAM ---手写BA推导与时间(1. 直接法BA ceres and g2o 2. 特征法BA 推导)
1. 手写BA手推BA2. 直接法BA (推导与实践)Ceres求解直接法BA实现自动求导从零开始一起学习SLAM | 掌握g2o边的代码套路
2021-04-11 22:31:18
824
原创 SLAM ---Gmapping 粒子滤波 AMCL SVO
1. 2d lidarGmapping_slam源码框架分析2. SVOSVO(稀疏直接视觉里程计)论文解析SVO中的深度滤波器原理
2021-04-11 22:02:32
278
原创 SLAM 大佬开源 -----记录
SLAM 大佬开源 -----记录1. Yue Pan (潘越)1. 1 github1. 2 recently report1. Yue Pan (潘越)1. 1 github3D 激光雷达, ICP, SFM ,车道线检测github io : https://yuepanedward.github.io/About.htmlgithub https://github.com/YuePanEdward/1. 2 recently reportMULLS: Versatile LiDAR S
2021-03-27 15:27:43
766
原创 路径规划 --- A*,DWA,D* 理论与代码
路径规划 --- A*,DWA,D* 理论与代码注1. A*2. DWA3. D*注A* 通过损失函数D的第一次计算和A一样,区别在于:地图障碍物或机器人位置改变后,能利用A计算后的信息,快速更新轨迹,而不需要在重新运行一次A,本质上还就是A的高效版。DWA 动态规划在ROS navigaiton框架中,使用的是 A + DWA忙完最近几天补充1. A*2. DWA3. D*...
2021-03-22 21:31:49
1784
1
原创 slslam----基于线特征的双目SLAM系统(关键知识点整理)
slslam----基于线特征的双目SLAM系统(关键知识点整理)1.注2. line 提取与跟踪2.1 简要2.2 主要代码2.2.1 line map 结构2.2.2 添加 line 进 line map3. 当前帧位姿估计3.1 简要3.2 主要代码 (BA)3.2.1 设置优化需要的参数索引3.2.2 build ceres4. 滑动窗口优化4.1 简要4.2 主要代码 (Local BA)5. 回环检测与位姿图优化1.注slslam 的论文 《Building a 3-D Line-Bas
2021-03-22 15:24:44
2619
4
原创 VINS ---视觉约束的雅克比推导
VINS ---视觉约束雅克比推导1.注1.1 投影误差公式1.2 投影误差相对于待优化变量的雅克比1.3重投影误差公式1.4重投影误差相对各个待优化变量的雅克比1.注高博SLAM 十四讲 P186 中介绍了点的视觉重投影误差相对各个优化变量的雅克比这儿做一个大概的公式介绍1.1 投影误差公式我们选择定义:(与高博书上相反,VINS确是这样定义的,为了与代码对应,我们也这样)误差 = 理论预测值 - 观测值十四讲 是使用像素平面下的像素坐标做差,我们也为了与VINS对应,使用归一化坐标系的点
2021-03-20 23:49:55
868
1
原创 SLAM 相关论文网址与查询
SLAM 相关论文网址与查询一 论文查询二 CCF会议期刊等级CVPRIROSICRA一 论文查询https://www.mdpi.com/https://ieeexplore.ieee.org/Xplore/home.jsp二 CCF会议期刊等级https://www.ccf.org.cn/Academic_Evaluation/AI/如下期刊或会议都可以通过 上面的CCF 链接找到其网址CVPRSLAM 与深度学习结合较多IROS智能机器与系统http://dblp.uni-tr
2021-03-12 23:58:57
1227
原创 vslam --- 基于滑动窗口的Local BA
vslam --- 基于滑动窗口的Local BA orbslam中使用的 local BA 优化部分,是使用g2o图优化进行,基于共视图进行优化,虽然也是选取一部分满足一定共视条件的特征点与关键帧进行优化的,但是与基于滑动窗口的BA,是不同的。vins-mono 中基于滑动窗口的local BA ,使用ceres ,以及需要定义相应的 costfuction。 在边缘化关键帧时,会将其残差与雅克比,进行保存,作为下一次 BA 的先验信息。高博的十四讲slam中的滑动窗口,没有进行先验的处理,而是直接
2020-11-19 11:01:15
1296
原创 从零开始学习VIO笔记 --- 第一讲:基础知识(四元数,李代数)
从零开始学习VIO笔记 --- 第一讲:基础知识,IMU,VIO概述 一. 旋转与平移1.1 旋转表示 --- 旋转矩阵R1.2 平移向量1.3 变换矩阵T与齐次坐标1.4 旋转向量与欧拉角1. 四元数2. 李群与李代数3. imu4. VIO一. 旋转与平移1.1 旋转表示 — 旋转矩阵R有坐标系 aaa,基为 a=[a1,a2,a3]a=\begin{bmatrix}a_1,&a_2,&a_3\end{bmatrix}a=[a1,a2,a3] (注:为3 ×\time
2020-10-12 14:30:28
1831
原创 slam 基本算法 --- VINS-mono 之【相机与IMU外参Ric估计】
slam 基本算法 --- VINS-mono 初始化之【相机到IMU外参Ric估计】 注1. 理论2. 代码实践注vins-mono是使用 机器人手眼标定的方法,计算出外参中的旋转 RciR^i_{c}Rci ,也可以是 RcbR^b_{c}Rcb (把imu坐标系当作body坐标系)本文将详细进行推导,以及与代码对应;1. 理论1.1 前言对于 kkk与 k+1k+1k+1帧相机之间的位姿 Rck+1ckR^{c_k}_{c_{k+1}}Rck+1ck,可以直接通过两帧之间的视觉
2020-09-12 17:19:13
1248
原创 slam 基本算法 --- 使用【Ceres】进行slam中BA问题求解 (理论+实践)
slam 基本算法 --- 使用【Ceres】进行slam中BA问题求解 (理论+实践)注1. 简要2. ceres求解关键步骤2.1 定义误差项结构2.2 构建 BA 问题2.3 配置求解器并求解3.3 代码实践注ceres 相比g2o 能自动对误差项关于优化变量的导数求导,简易方便很多;后续再具体的原理,这里先暂时应用。1. 简要ceres 解BA 官方链接: http://www.ceres-solver.org/nnls_tutorial.html#bundle-adjustmentB
2020-09-11 17:00:06
2722
1
原创 slam 基本算法 --- 使用【Ceres】进行曲线拟合 (理论+实践)
slam 基本算法 --- 使用【Ceres】进行曲线拟合 (理论+实践)注1.1 问题描述1.2 代码实践1.3 结果注之前整理过 slam 基本算法 — 分别使用 【高斯牛顿,g2o】进行曲线拟合 (理论+实践)vins中使用的ceres进行非线性优化求解,所以这里再学习并整理一下 Ceres的使用,通过官方的曲线拟合的例子Ceres可以解决以下形式的边界约束的鲁棒非线性最小二乘问题minx12∑iρi(∥fi(xi1,…,xik)∥2) s.t. lj≤xj≤uj\b
2020-09-11 14:24:12
1240
原创 vslam --- 从零开始写VIO系统 (第 1 天 )(一)
vslam --- 从零开始写VIO系统 (第 1 天)(一) 1. 概要说明2. 目标3. 思路4. 框架1. 概要说明vslam中的 VIO 涉及的基本算法以及流程,大体上都清楚,只是你问我具体的,我会吞吞吐吐,抓不住重点,也没法清楚简明的说出来,所以这次希望能自己手写一个vio系统,把前端跟踪,后端优化,回环检测,局部地图以及全局地图优化完成,做一个完整完善的vio系统;之前对 vins框架比较熟悉,orb-slam2也算了解,以及高博十四讲第13章的vo框架也熟悉,但看别人的框架 总有点儿走马
2020-08-30 11:22:21
721
1
原创 slam 基本算法 --- 分别使用 【高斯牛顿,g2o】进行曲线拟合 (理论+实践)
slam 基本算法 --- 分别使用 【高斯牛顿,g2o】进行曲线拟合 (理论+实践) 一. 曲线拟合 --- 高斯牛顿1.1 问题描述1.2 代码1.3 结果二. 曲线拟合 --- g2o2.1 问题描述2.2 代码定义顶点定义边mian() ---生成观测数据构建图执行优化和结果输出通过本次简单实践,详解高斯牛顿和g2o的应用参照《slam14讲 第二版》一. 曲线拟合 — 高斯牛顿1.1 问题描述问题: 求解一条满足以下方程的曲线y=exp(ax2+bx+c)+w y = exp(ax^
2020-08-28 20:52:44
1585
3
原创 ros ---ubuntu 18.04安装 kalibr 出现opencv编译出错问题
这是因为 opencv版本不一致的问题。 本机中的opencv >4.0error: ‘CV_CAP_PROP_FRAME_WIDTH’ was not declared in this scopeerror: ‘CV_CAP_PROP_FRAME_HEIGHT’ was not declared in this scopeerror: ‘CV_BGR2GRAY’ was not declared in this scopeerror: ‘cvStartWindowThread’ was no
2020-08-21 17:47:44
1481
2
原创 ros --- 双目相机内参与外参标定
ros --- 双目相机内参与外参标定 本文暂时使用 小觅相机,介绍相机内参,相机与imu之间的外参ROS 中的相机传感器数据,关于相机信息的格式:sensor_msgs/CameraInfo详细见下面的 官方链接:http://docs.ros.org/melodic/api/sensor_msgs/html/msg/CameraInfo.html......
2020-08-19 21:45:31
5902
1
原创 ros --- 录制imu bag包 和 imu标定
ros --- base notes ( tf ...) 1. ros 录制imu bag包2. imu标定创建 launch 文件1. ros 录制imu bag包rosbag 指令rosbag record -arosbag record /topic1 /topic12rosbag play rosbag play -r 3 <your bagfile name> # 表示以3倍原始速率发布话题rosbag info <your bagfile name>
2020-08-18 18:21:57
5008
4
原创 ros --- base notes ( tf ...)
ros --- base notes ( tf ...) 1. ros 查看 tf2. 相机到imu坐标系的变换关系四元数构建和转为旋转矩阵1. ros 查看 tf1、view_frames能够监听当前时刻所有通过ROS广播的tf坐标系,并绘制出树状图表示坐标系之间的连接关系保存到离线文件中:$ rosrun tf view_frames2、rqt_tf_tree工具虽然view_frames能够将当前坐标系关系保存在离线文件中,但是无法实时反映坐标关系,所以可以用rqt_tf_tree实时刷
2020-08-18 16:42:53
257
原创 从零开始学习VIO笔记 --- 第五讲:滑动窗口算法实践:【逐行手写求解器】【作业】
从零开始学习VIO笔记 --- 第五讲:滑动窗口算法实践:【逐行手写求解器】【作业】 一. 题目二. 解答2.1 完成单目 Bundle Adjustment 求解器 problem.cc 中的部分代码2.2 完成滑动窗口算法测试函数一. 题目二. 解答2.1 完成单目 Bundle Adjustment 求解器 problem.cc 中的部分代码2.2 完成滑动窗口算法测试函数...
2020-08-16 17:08:17
271
原创 从零开始学习VIO笔记 --- 第五讲:滑动窗口算法实践【逐行手写求解器】
从零开始学习VIO笔记 --- 第五讲:滑动窗口算法实践:【逐行手写求解器】 一. 知识回顾最小二乘求解器滑动窗口算法VINS-Mono 中的滑动窗口算法二. 代码一. 知识回顾最小二乘求解器滑动窗口算法VINS-Mono 中的滑动窗口算法二. 代码类似 g2o 框架求解 ; (后续再使用真正的g2o求解,以及g2o的基本应用,见后续文章)...
2020-08-16 17:07:34
648
原创 从零开始学习VIO笔记 --- 第四讲:滑动窗口(基于滑动窗口算法的 VIO 系统:可观性和一致性)【作业】
从零开始学习VIO笔记 --- 第四讲:滑动窗口(基于滑动窗口算法的 VIO 系统:可观性和一致性)【作业】 一. 题目二. 解答2.1 第一题2.2 第二题2.2.1 代码一. 题目二. 解答2.1 第一题2.2 第二题准备知识 单目BA优化,构建重投影误差函数, 误差项为 理论投影值减去实际测量值误差关于相机位姿李代数的雅克比矩阵:误差是由观测值减预测值定义,所以前面带了负号;若是预测减观测值 那么去掉负号se(3) 的定义方式是旋转在前,平移在后时,只要把这个矩阵的前三
2020-08-13 23:14:24
610
原创 从零开始学习VIO笔记 --- 第四讲:滑动窗口(基于滑动窗口算法的 VIO 系统:可观性和一致性)
从零开始学习VIO笔记 --- 第四讲:滑动窗口(基于滑动窗口算法的 VIO 系统:可观性和一致性) 一. 从高斯分布到信息矩阵1.1 高斯分布1.2 高斯分布和协方差矩阵1.3 信息矩阵二. marginalization (边缘化) 与 舒尔补一. 滑动窗口算法滑动窗口算法导致的问题滑动窗口中的 FEJ 算法前一讲中有提到整个残差函数由三部分组成,其中第一部分就是滑动窗口的先验,这一讲主要就是讲如何在去除一帧信息的时候向整个残差添加约束。一. 从高斯分布到信息矩阵1.1 高斯分布首先对SLA
2020-08-13 14:21:08
767
1
原创 从零开始学习VIO笔记 --- 第三讲:基于优化的IMU和视觉信息融合( 作业)
从零开始学习VIO笔记 --- 第三讲:基于优化的IMU和视觉信息融合( 作业) (后续有时间补上)
2020-08-12 22:07:46
311
原创 从零开始学习VIO笔记 --- 第三讲:基于优化的IMU和视觉信息融合
从零开始学习VIO笔记 --- 第三讲:基于优化的IMU和视觉信息融合 一. 预备知识1.1 知识点概述1.2 PnP 中的重投影误差函数1.3 后端优化中重投影误差函数/BA问题二. VIO 信息融合问题2.1 问题提出2.2 线性最小二乘简介2.3 VIO 残差函数的构建2.3.1 VIO 误差函数:2.3.2 系统需要优化的状态量2.3.3 视觉重投影误差2.3.4 逆深度参数化2.3.5 VIO 中基于逆深度的重投影误差2.3.6 IMU 测量值积分2.3.6 IMU 预积分2.3.7 IMU 的
2020-08-12 21:44:33
695
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人