自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

转载 对 Error-State Kalman Filter 的理解

我对 Error-State Kalman Filter 的理解。本文的主要参考文献是 Joan Sola 的 《Quaternion kinematics for the error-state Kalman filter》[1],当然是这本小册子,做 VIO 的人都会熟读这本册子。1. ErKF 与 EFK 的区别关于 Error-State Kalman Filter (ErK...

2019-10-01 23:28:00 2429

转载 Rotation Kinematics

问题来源是 IMU 中 Gyroscope 测量的角速度实际含义,从而帮助理解 IMU 预积分过程中 Rotation Matrix 的积分过程(即文献 [1] 中公式 (30) 的第一个等式)。解决这个问题,参考文献 [2] State Estimation for Robotics 的 6.2.4 Rotational Kinematics 与 6.4.4 Inertial Mea...

2019-08-10 18:23:00 334

转载 离职 mark

昨天(2019 年 5 月 17 日),从 离职。从 2018 年 7 月 14 日早 10 点余分到 2019 年 5 月 17 日早 10 点余分,一共 308 天整。这就是我出学校的第一份工作。今天,翻开闲置到发霉的书包,找到了当时打车去入职的的士票。9 点 10 分到 9 点 27 分,28 元。有内部转岗的机会,有继续做后台开发的机会。但,我想回到 SLAM ,因为我不希...

2019-05-18 21:37:00 187

转载 PnP 问题方程怎么列?

PnP 问题即 Perspective-n-Point 。有 P3P 方法,使用三个点对就能求解。但是先按照熟悉的方法,写一写。最后写 P3P 方法,P3P 方法还是比较晦涩的,不是无脑方法。1. 八点法(使用正交补推导出线性系统)我希望把 SLAM 问题中基础理论都归纳到统一的框架下,但我总是纠结 PnP 问题中三维点坐标是齐次的还是非齐次的,这样搞得很头疼。在我的框架下已经有...

2019-04-03 00:01:00 484

转载 DSO windowed optimization 代码 (4)

5 “step”计算参考《DSO windowed optimization 公式》,计算各个优化变量的增加量。公式再写一下:\[\begin{align} \begin{bmatrix} H_{\rho\rho} & H_{\rho X} \\ H_{X\rho} & H_{XX} \end{bmatrix} \begin{bmatrix} \delta \rho...

2018-06-08 21:25:00 260

转载 Adjoint of SE(3)

以前看的书都提到 SE(3) 和 se(3) 的 Adjoint,但是并没有讲这个东西是干什么用的,只是给了一堆性质。这东西来自群论。参考 Lie Groups for 2D and 3D Transformations 的 2.3。In Lie groups, it is often necessary to transform a tangent vector from the...

2018-05-23 16:04:00 391

转载 IMU 预积分推导

给 StereoDSO 加 IMU,想直接用 OKVIS 的代码,但是有点看不懂。知乎上郑帆写的文章《四元数矩阵与 so(3) 左右雅可比》提到 OKVIS 的预积分是使用四元数,而预积分论文中使用 so(3) 的右雅克比。才疏学浅,先整理好 so(3) 的预积分,写好 StereoDSO 加上 IMU,再考虑其他的东西。以下的内容参考预积分的的论文,还有它的 Supplementar...

2018-05-17 00:45:00 559

转载 DSO windowed optimization 代码 (3)

4 Schur Complement 部分信息计算参考《DSO windowed optimization 公式》,Schur Complement 部分指 Hsc(\(H_{X\rho} H_{\rho\rho}^{-1} H_{\rho X}\))和 bsc(\(H_{X\rho} H_{\rho\rho}^{-1} J_{\rho}^T r\))。4.1 Accumulated...

2018-03-16 22:35:00 178

转载 DSO windowed optimization 代码 (2)

3 非 Schur Complement 部分信息计算参考《DSO windowed optimization 公式》,非Schur Complement 部分指 \(H_{XX}\) 和 \(J^T_{X}r\)。3.1 AccumulatedTopHessianSSE::addPoint()优化的局部信息计算EnergyFunctional::accumulateAF_MT()...

2018-03-16 22:34:00 271

转载 OKVIS 代码框架

1. okvis_app_synchronous.cpp在此文件中 okvis 对象为 okvis_estimator,是类 okvis::ThreadedKFVio 的实例化对象。数据输入接口是 ThreadedKFVio::addImuMeasurement 和 ThreadedKFVio::addImage。整个数据输入的代码,在 for(...; i < numCam...

2018-03-10 16:11:00 419

转载 DSO windowed optimization 代码 (1)

这里不想解释怎么 marginalize,什么是 First-Estimates Jacobian (FEJ)。这里只看看代码,看看Hessian矩阵是怎么构造出来的。1 优化流程整个优化过程,也是 Levenberg–Marquardt 的优化过程,这个优化过程在函数 FullSystem::makeKeyFrame() 中被调用,也是在确定当前帧成为关键帧,并且用当前帧激活了窗口...

2018-01-31 21:55:00 238

转载 DSO 代码框架

从数据流的角度讲一遍 DSO 代码框架。DSO 的入口是 FullSystem::addActiveFrame,输入的影像生成 FrameHessian 和 FrameShell 的 Object,FrameShell 是 FrameHessian 的成员变量,FrameHessian 保存影像信息,FrameShell 保存帧的位置姿态信息。代码中一般用 fh 指针变量指向当前帧的 ...

2018-01-22 16:41:00 569

转载 DSO windowed optimization 公式

这里有一个细节,我想了很久才想明白,DSO 中的 residual 联系了两个关键帧之间的相对位姿,但是最终需要优化帧的绝对位姿,中间的导数怎么转换?这里使用的是李群、李代数中的Adjoint。参考 http://ethaneade.com/lie.pdf 。需要变通一下,字母太多,表达不方便。此处 \(\xi\) 表示 se(3) 和 affLight 参数。Adjoint 在其...

2018-01-17 23:09:00 265

转载 DSO 优化代码中的 Schur Complement

接上一篇博客《直接法光度误差导数推导》,DSO 代码中 CoarseInitializer::trackFrame 目的是优化两帧(ref frame 和 new frame)之间的相对状态和 ref frame 中所有点的逆深度。在代码中出现了变量Hsc和变量bsc,其中的"sc"是指 Schur Complement。依据这个事实就能够确定整个优化过程的所有细节。一下假设 ref...

2018-01-16 15:52:00 279

转载 直接法光度误差导数推导

DSO 代码中初始化的部分。CoarseInitializer 将第一帧作为 ref frame,第二帧作为 new frame。ref frame 的 idepth (inverse depth) 一开始的时候都设置为1,随后在确定 new frame 相对 ref frame 之间相对位姿、光度变化过程中设定为正确值。new frame 相对 ref frame 之间存在 8 个参...

2018-01-05 11:52:00 1203

转载 Madgwick IMU Filter

论文链接:http://202.114.96.204/cache/13/03/x-io.co.uk/35c82431852f2aa7d0feede9dc138626/madgwick_internal_report.pdfIMU 是指六轴传感器,包含陀螺仪和加速度计。MARG 是指九轴传感器,在 IMU 的基础上添加了磁力计。IMU = gyroscope + acceleromet...

2017-11-01 19:15:00 1507

转载 Windows::Docker::Ubuntu 做 SLAM

如题,这是一件很蛋疼的事情。为了完成这一件事情,需要达成目标:Ubuntu GUI 必须要能够显示。Ubuntu 可以链接 USB Camera。目标一目标1很容易达成。在 Win10 中安装一个 X11 Server,可以是 VcXsrv,可以是 Xming,比较不推荐 Xming,因为后面使用 pangolin 会发现 Xming 版本很难匹配。推荐使用 MobaX...

2017-10-04 00:53:00 256

转载 [LeetCode] #123 Best Time to Buy and Sell Stock III

LeetCode 题目,原题链接 https://leetcode.com/problems/best-time-to-buy-and-sell-stock-iii/。问题描述:一定时间区间内一只股票,最多交易两次,两次交易无重叠区域,求最大收益。参考:https://discuss.leetcode.com/topic/32288/2ms-java-dp-solution 。Ca...

2017-09-18 12:12:00 63

转载 [Alg::Trick]小白鼠找毒酒

题目来源:牛客网https://www.nowcoder.com/questionTerminal/c26c4e43c77440ee9497b20118871bf18瓶酒一瓶有毒,用人测试。每次测试结果8小时后才会得出,而你只有8个小时的时间。问最少需要()人测试?首先,谴责一下,这道题目三观不正。这个题目最重要的部分是只有一次机会,这一次机会就要找到毒酒。那么思考一下,如...

2017-09-17 15:06:00 112

转载 [Alg::DP] 袋鼠过河

一道简单的动态规划问题。题目来源:牛客网链接:https://www.nowcoder.com/questionTerminal/74acf832651e45bd9e059c59bc6e1cbf一只袋鼠要从河这边跳到河对岸,河很宽,但是河中间打了很多桩子,每隔一米就有一个,每个桩子上都有一个弹簧,袋鼠跳到弹簧上就可以跳的更远。每个弹簧力量不同,用一个数字代表它的力量,如果弹簧力量为...

2017-09-17 14:29:00 74

转载 [Alg] 尺取法

尺取法是在线性结构中进行搜寻满足某一条件的区间的方法。该方法保存两个索引——首索引begin、尾索引end。判断 [begin, end] 区间是否满足条件。移动 [begin, end] 区间的方法是将 end 固定,begin 向前移动,得到中间区间 [begin + 1, end],随后将 end 再向前移动,直到找到满足条件的区间。在 begin 往前移动之后,[begin...

2017-09-17 12:04:00 73

转载 [Alg::DP] Square Subsequence

题目如下:#include <iostream>#include <string>#include <vector>using namespace std;// use this struct to store square subsequence, 4 positions and 1 lengthstruct SqSb { ...

2017-09-11 16:57:00 206

转载 State Estimation for Robotics (Tim Barfoot) exercises Answers

Here are some exercises answers for State Estimation for Robotics, which I did in June, 2017.The book's public link is here http://asrl.utias.utoronto.ca/~tdb/bib/barfoot_ser17.pdf.But I used t...

2017-08-31 11:24:00 420

转载 OpenCV 用二进制位表示 type & channels 的方式

OpenCV 的类型与通道的表示方法。参考文件 https://github.com/opencv/opencv/blob/05b15943d6a42c99e5f921b7dbaa8323f3c042c6/modules/core/include/opencv2/core/hal/interface.hOpenCV 的 type 共有 8 种,分别 Mat 中 element 应如何...

2017-03-20 14:57:00 168

转载 线性变换:基底变换推导

今天上午,因为“家里蹲”大神在 SLAM 交流群里问了一下为什么 \(E\) 分解出来的 \(R\) 需要判断 \(R\) 的行列式,如果为 -1,就需要所有元素乘以 -1,以得到行列式为 +1 的 \(R\)。旋转矩阵是将原基底下的坐标变换为新基底下的坐标,是一个线性变换的过程。从二维旋转矩阵开始二维旋转矩阵推导利用 \(cos, sin\) 和的分列式最简单。\[X_1 =...

2017-03-08 15:15:00 2808

转载 矩阵求导的思考

这两篇文章讲得很好。矩阵求导术(上)矩阵求导术(下)比记公式靠谱多了。对于求导的数学形式可以看看这个PPT。http://wenku.baidu.com/link?url=f109MlZkctazXKxECYea-d5yFvU5xeub1jmFfq3z-UlsUGjbgam5tiAcCXYP9jb_RFM3RTMDU29u_RK9JB_lcjeR9AZa8uicQ1-sn9rO...

2017-03-08 14:03:00 153

转载 ORB_SLAM2 源码阅读 ORB_SLAM2::Initializer::ComputeF21 (OpenCV 细节)

ORB_SLAM2 计算 F21 的代码是这样的。cv::Mat Initializer::ComputeF21(const vector<cv::Point2f> &vP1,const vector<cv::Point2f> &vP2){ const int N = vP1.size(); cv::Mat A(N,9,CV_...

2017-03-08 13:55:00 142

转载 ORB_SLAM2 源码阅读 ORB_SLAM2::Initializer

ORB_SLAM2::Initializer 用于单目情况下的初始化。Initializer 的构造函数中传入第一张影像,这张影像被称作 reference frame(rFrame)。在获得第二张影像时传入第二张影像,这张影像被称作 current frame(cFrame)。这一部分传入的代码可以在ORB_SLAM2::Tracking::MonocularInitializati...

2017-03-01 00:39:00 187

转载 ORB_SLAM2 源码阅读 ORB_SLAM2::ORBextractor

整体架构构造函数进行初始化,传入设定几个重要的成员变量。nfeatures(特征点的个数)、nlevels(构造金字塔的层数)、scaleFactor(金字塔中相邻层图像的比例系数)、iniThFAST(检测 FAST 角点的阈值)、minThFAST(在 iniThFAST 没有检测到角点的前提下,降低的阈值)。括号运算符对输入的图像进行角点检测。1. ComputePyramid...

2017-02-24 16:07:00 287

转载 macOS 安装 pcl 1.8.0

Mac 上的 pcl 一直有问题。找不到 pcl_viewer 查看 pcd 文件。写个程序用 pcl::visualization::CloudViewer 查看点云,遇到 Runtime Exception。今天下午下定决心搞定 pcl 。pcl 以前是使用 homebrew 安装的,homebrew 安装的是 1.8.0 的版本,讲道理应该没有问题。尝试到 pcl 的官网上...

2017-02-20 19:52:00 469

转载 [LeetCode] #112 #113 #437 Path Sum Series

首先要说明二叉树的问题就是用递归来做,基本没有其他方法,因为这数据结构基本只能用递归遍历,不要把事情想复杂了。#112 Path Sum原题链接:https://leetcode.com/problems/path-sum/ 。判断从树的根节点到叶子节点的路径中,是否有一条所有节点上的值之和和特定的数字,即sum。从根节点到叶子节点,线路的起点的是固定的,只需要不断递归下去,判断...

2017-02-12 14:32:00 76

转载 [LeetCode] #5 Longest Palindromic Substring

LeetCode 题目,原题链接 https://leetcode.com/problems/longest-palindromic-substring/。问题描述:找到字符串中最长回文子串。参考:http://articles.leetcode.com/longest-palindromic-substring-part-i/ ,http://articles.leetcode.c...

2017-02-12 14:31:00 96

转载 【SLAM】安装 g2o_viewer

2017年2月8日,那是一个阴天。为了完成高翔博士的《一起做RGB-D SLAM》教程,我在 Ubuntu 14.04 安装 g2o。遇到困难,怎奈我眼瞎,找错了方向,浪费时间,没有成功安装。问题如下(跳到最后一个问题描述,直接正常安装):g2o_viewer 没有被安装这个大多是因为没有安装libqglviewer-dev(在 Ubuntu 12.04 上这东西叫libqglvi...

2017-02-12 14:28:00 357

转载 【矩阵】RQ/QR 分解

Multiple View Geometry in Computer Vision A.4.1.1 (page 579)将一个 3x3 矩阵 $ A $ 进行 RQ 分解是将其分解成为一个上三角阵 $ R $ 与一个正交阵(orthogonal matrix) $ Q $ 的乘积。要求矩阵 $ A $ 的秩为3,即满秩。所谓矩阵 $ Q $ 正交是指 $ Q^TQ=I $, $ Q ...

2017-02-12 14:27:00 943

转载 【多视图几何】对极几何与基础矩阵

本文未指明图片来源为 Multiple View Geometry in Computer Vision 。读 Multiple View Geometry in Computer Vision 所做笔记。第 9 章 《对极几何与基础矩阵》,Epipolar Geometry and the Fundamental Matrix。对极几何研究的对象是双视图几何,即两张相邻影像的位姿...

2017-02-12 14:24:00 180

转载 【多视图几何】TUM 课程 第6章 多视图重建

课程的 YouTube 地址为:https://www.youtube.com/playlist?list=PLTBdjV_4f-EJn6udZ34tht9EVIW7lbeo4 。视频评论区可以找到课程所使用课件与练习题的下载地址。课程第6章介绍从多张影像重建同名点三维空间坐标的方法,详细讲解线性系统的秩与现实世界的对应关系。1. 从双视图到多视图双视图对一个空间点只能提供四个测量...

2017-02-12 14:02:00 245

转载 【多视图几何】TUM 课程 第5章 双视图重建:线性方法

课程的 YouTube 地址为:https://www.youtube.com/playlist?list=PLTBdjV_4f-EJn6udZ34tht9EVIW7lbeo4 。视频评论区可以找到课程所使用课件与练习题的下载地址。课程第5章介绍了如何从两张影像重建同名点的三维空间坐标,其中涉及到本征矩阵、基础矩阵、八点法恢复、四点法恢复。1. 重建问题重建问题是指通过影像重建场景...

2017-02-12 14:01:00 186

转载 【多视图几何】TUM 课程 第4章 同名点匹配

课程的 YouTube 地址为:https://www.youtube.com/playlist?list=PLTBdjV_4f-EJn6udZ34tht9EVIW7lbeo4 。视频评论区可以找到课程所使用课件与练习题的下载地址。课程第4章介绍了如何在两幅影像上匹配同名点,匹配同名点是计算影像相对姿态的第一步。用光流、特征点提取方法进行同名点匹配。1. 从影像到几何影像呈现的是色...

2017-02-12 14:00:00 469

转载 【多视图几何】TUM 课程 第3章 透视投影

课程的 YouTube 地址为:https://www.youtube.com/playlist?list=PLTBdjV_4f-EJn6udZ34tht9EVIW7lbeo4 。视频评论区可以找到课程所使用课件与练习题的下载地址。第3章介绍了透视投影、相机内参、畸变矫正、原像与余像的概念。1. 数学表示1.1 从相似三角形开始用一张图表示相机成像的光学过程(小孔成像)。图中...

2017-02-12 13:58:00 255

转载 【多视图几何】TUM 课程 第2章 刚体运动

课程的 YouTube 地址为:https://www.youtube.com/playlist?list=PLTBdjV_4f-EJn6udZ34tht9EVIW7lbeo4 。视频评论区可以找到课程所使用课件与练习题的下载地址。课程第2章从李群与李代数的角度介绍三维空间的刚体运动。李群即常见的旋转矩阵、变换矩阵,李代数与李群对应,李代数 \(se(3)\) 是所有三维反对称阵的集合...

2017-02-12 13:56:00 369

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除