论文笔记:Deep Closest Point: Learning Representations for Point Cloud Registration
DCP 是一篇基于 Deep Learning 来解决 ICP 问题的,其中 Deep Learning 部分主要用于做匹配,后端仍然沿用 SVD 的方法。比很多 MLP 直接出 Pose 的合理,也取得了更好的效果。在与传统方法例如 Go-ICP 以及深度学习方法 PointNetLK 的对比中,都取得了一定的优势。1 经典 ICP 问题
这一部分在之前的论文笔记中已经有了比较详细的阐述,参见:使用 SVD 方法求解...
使用 SVD 方法求解 ICP 问题
本文是结合《Least-Squares Rigid Motion Using SVD》和《Least-Squares Fitting of Two 3-D Point Sets》两篇文章写的一个总结,里面有一些是自己的理解不一定正确。
1 问题定义
假设我们有两个点云集合 和 ,则我们定义的 ICP 问题是通过最小化点对之间距离获得相应的 Pose:
其中 代表每个点的权重。R 和 t 是我们所要求的旋转矩阵和平移向量。
2 计算平移
我们分两步求解旋转和平移,首先求解 t。固定...
论文笔记:Dynamic Graph CNN for Learning on Point Clouds
DGCNN 是对 PointNet 的改进,PointNet 网络每个点单独提取特征缺乏局部关联。DGCNN 提出了 EdgeConv 就是对它的改进。
1 网络结构
DGCNN 网络结构如下图所示,可以看出其整体架构和 PointNet 是基本一致的,主要区别就是将其中的 MLP 替换成了 EdgeConv。2 EdgeConv
2.1 EdgeConv 结构上图是 EdgeConv 的示意图。假设一个F维点云 其中 F 表示每个点的维度,最简单的可能是 x,...
论文笔记:GCNv2: Efficient Correspondence Prediction for Real-Time SLAM
GCNv2 是一个专门针对几何匹配的描述子网络,是对 GCN 的改进版主要工作如下:1)与常见深度学习特征匹配的性能并且显著减少了前向运算的时间;2)加入了二值化层,生成二值特征。
1 GCNv2 网络结构
GCNv2 网络结构如下图所示:这一结构不必赘述,其实跟 SuperPoint 很像,不过 Descriptors 部分是把 Keypoints 直接拿来取了相应的部分。PixelShuffle (有人也叫作 Sub-pixel Convolution 或者亚像素卷积)在文章(《Real-Time Single Image and Video Super-Resolution Using an Efficient...
DTAM 中的 Cost Volume 笔记
DTAM 是比较经典的基于 RGBD 的 SLAM 算法,其中的 Cost Volume 部分也是后续比较常见的模块,这里进行一下记录。
1 定义说明
定义 表示从相机坐标系 到世界坐标系 的变换矩阵:
其中 表示旋转矩阵, 表示平移向量。
则对于空间中一个点具有如下变换关系:
以及投影操作:
反投影操作:
其中 表示像素 对应的逆深度。
则 2D...
Semantic SLAM 文章收集
截至目前 Semantic SLAM (注意不是 Semantic Mapping)工作还比较初步,可能很多思路还没有打开,但可以预见未来几年工作会越来越多。语义 SLAM 的难点在于怎样设计误差函数,将 Deep Learning 的检测或者分割结果作为一个观测,融入 SLAM 的优化问题中一起联合优化,同时还要尽可能做到至少 GPU 实时。
这一篇博客我将尽力收集一些有代表性的文章,提供下载和简单思路的理解,但个人精力、能力有限也欢迎大家随时提供更多更好的文章。
1、《Probabilistic Data Association for Semantic SLAM》 ICRA 2017语义 SLAM 中的概率数据融合,感觉应该算开山鼻祖的一篇了。这篇也获得了 ICRA...
欧拉积分、中点积分与龙格-库塔积分
在 SLAM 系统中经常用到各种不同的数值积分方法,工程上最常见的有三种:欧拉积分(Euler method)、中点积分(Midpoint method)和龙格-库塔法积分(Runge–Kutta methods)。他们的区别就是如何用数值方法模拟一个斜率。这里简单总结如下:
一、欧拉积分
设有如下微分方程:
并且 和 时刻的差为 ,则欧拉积分定义为:
也就是说用 t 时刻的斜率作为整个 时刻的导数。
二、中点积分
设有如下微分方程:
并且 和 时刻的差为 ,则显式中点积分定义为:
则隐式中点积分定义为:
也就是说用 时刻的斜率作为整个 时刻的导数。
欧拉积分与中点积分都是一阶近似并没有本质不同,二者只是一阶导数所取位置不同,他们的性能也有差别,如下图所示,作为一阶积分近似方法来讲,中点积分有时会稍好一些(带来更快的收敛速度)。图示为方程 ...
VI ORB SLAM2 与 VINS 对比实验
一、实验说明
之前做了一些 VI ORB SLAM2 与 VINS Mono 性能的对比试验,由于 VI ORB SLAM2 并没有官方的版本,我们主要使用王京实现的一个版本(https://github.com/jingpang/LearnVIORB)来做测试(我们加入了双目 VIO 部分,但不论单目还是双目该版本实现与官方版本性能有较大差距)。VINS Mono (https://github.com/HKUST-Aerial-Robotics/VINS-Mono)是港科大开源的一个单目 VIO 算法,速度快而且性能不错,同样受到很大关注。本篇博客我们对二者进行了一些粗浅的实验对比。
说明如下:
1、实验主要指标为 RMSE:
其中:
代表真值, 代表估计值。
2、实验采用 EuRoC 测试集(https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets)。以下是一些初步的实验结果,做一记录。因为没有深入研究和调试,试验次数也比较有限,不一定具有代表性。如大家有任何改进建议或者疑问欢迎留言。
二、实验结果
1、ORB 与 VI...
使用 evo 工具评测 VI ORB SLAM2 在 EuRoC 上的结果
最近把 ORB SLAM2 作者融合 IMU 版本的算法 《Visual-Inertial Monocular SLAM with Map Reuse》 论文读了一遍,作者没有开放源代码,所以我是使用王京实现的一版开源代码(https://github.com/jingpang/LearnVIORB)进行了一些实验。LearnVIORB 代码有一些崩溃的 bug,在 Mac 上面编译有问题,不过实现了作者文中的基本思想,是非常好的一份实现。
由于只有 EuRoC 测试集有 VIO 的数据,我使用了 EuRoC 测试集进行测试,不过在实际运行中遇到了几个问题。
0、系统环境
macOS Sierra v10.12.6
1、evo...
[ROS] 多传感器卡尔曼融合框架 Ethzasl MSF Framework 编译与使用
多传感器融合是机器人导航上面一个非常基本的问题,通常在一个稳定可用的机器人系统中,会使用视觉(RGB或RGBD)、激光、IMU、马盘等一系列传感器的数据来最终输出一个稳定和不易丢失的姿态。Ethzasl MSF Framework 是一个机器人上面的多传感器融合框架,它使用了扩展卡尔曼的原理对多传感器进行融合。同时内部使用了很多工程上的 trick 解决多传感器的刷新率同步等问题,API 封装也相对简单,非常适合新手使用。
0、系统环境:
Ubuntu 14.04.3
ROS indigo
1、新建 MSF 工作目录:
在命令行执行如下命令:
Shell
mkdir -p MSF/src
cd ./MSF/src
catkin_init_workspace
123
mkdir -p MSF/srccd ./MSF/srccatkin_init_workspace
退出 src 目录到 PATH_TO_MSF 根目录下,编译生成 ROS 工程文件:
Shell
cd ..
catkin_make
12
cd...