- 博客(164)
- 资源 (4)
- 收藏
- 关注
原创 VSLAM之边缘化 Marginalization 和 FEJ (First Estimated Jocobian)
文章目录1. 前言2. 舒尔补 (Schur complement) 的应用:边界概率,条件概率1. 前言本博客主要介绍了VINS-Mono中边缘化的相关知识,由于VINS-Mono中只是提及了边缘化的策略并没有提及边缘化信息传递的原理,因此本博客主要参考了崔化坤的《VINS论文推导及代码解析》和深蓝学院的VIO课程。VINS-Mono的边缘化与在《SLAM14讲》中也有提及边缘化 (可看博...
2020-02-20 22:20:37
5929
4
原创 VINS-Mono之外参标定和视觉IMU联合初始化
文章目录1.前言2. 利用旋转约束估计外参数旋转qcbq^{b}_{c}qcb1.前言本博客主要介绍VINS-Mono初始化时相机与IMU对齐,主要包括相机到IMU的外参估计、陀螺仪偏置、相机位移和估计空间点的尺度、重力加速度、每帧速度,主要参考了深蓝学院的VIO课程及博客VINS-Mono理论学习——视觉惯性联合初始化与外参标定和崔华坤的《VINS 论文推导及代码解析》。总体而言,视觉I...
2020-02-18 00:40:21
2380
原创 VINS-Mono之后端非线性优化 (目标函数中视觉残差和IMU残差,及其对状态量的雅克比矩阵、协方差递推方程的推导)
1. 前言之前看过崔华坤的《VINS论文推导及代码解析》还有深蓝学院的VIO课程,对VINS的后端非线性优化有了较为清晰的认识,但是一直没有时间整理写成笔记,最近看到Manni的博客VINS-Mono理论学习——后端非线性优化 概括得很不错,针对这三份资料还有自己的一些理解重新整理下,感谢优秀的大佬们提供的参考资料。2. 非线性最小二乘尽管非线性最小二乘是很常见的问题,可参考《SLAM14讲...
2020-02-09 20:44:13
3524
1
原创 VINS-Mono之IMU预积分,预积分误差、协方差及误差对状态量雅克比矩阵的递推方程的推导
一.前言本博客基本上借鉴了崔华坤的《VINS论文推导及代码解析》和 VINS-Mono理论学习——IMU预积分 Pre-integration (Jacobian 协方差)的内容,有些地方加入自己一些理解。VINS-MONO论文中的IV-B. IMU Pre-integration介绍了IMU预积分模型,Foster的倆篇论文对IMU预积分理论进行详细分析。为什么需要对IMU进行预积分?传...
2020-02-07 21:47:50
5744
10
转载 容器(vector)、数组、new创建的动态数组,哪个执行效率更高些?
一.理论分析1.1堆和栈的区别栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量等。其操作方式类似于数据结构中的栈。堆区(heap)— 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是俩回事,分配方式倒是类似于链表。全局区(静态区)(static) — 全局变量和静态变量的存储是放在一起的,初始化的全局变量和静态变量在一块区域,...
2020-02-07 16:49:28
4792
1
转载 解方程AX=b与矩阵分解:奇异值分解(SVD分解) 特征值分解 QR分解 三角分解 LLT分解
前言本博客主要介绍在SLAM问题中常常出现的一些线性代数相关的知识,重点是如何采用矩阵分解的方法,求解线性方程组AX=B。主要参考了《计算机视觉——算法与应用》附录A以及Eigen库的方法。本博客可能不会对分解讲的特别深入,主要是想弄清楚各个分解的条件、分解结果以及应用(或特点)。包括:1、三角分解(LU分解)2、LDLT分解与LLT分解(Cholesky分解)3、QR分解4、奇异值分...
2020-02-04 21:33:53
6614
原创 ROS常用命令
查看ROS_PACKAGE_PATH环境变量$ echo $ROS_PACKAGE_PATHcatkin 命令$ catkin_init_workspace #初始化catkin构建系统的工作目录$ catkin_create_pkg [功能包名称] [依赖性功能包1] [依赖性功能包2]… #自动生成功能包$ catkin_make #构建包$ catkin_make –pkg ...
2020-02-04 15:15:14
664
原创 Ubuntu16.04下安装AutoWare
平台:ros-kinetic安装依赖:sudo apt-get install ros-kinetic-desktop-full ros-kinetic-nmea-msgs ros-kinetic-nmea-navsat-driver ros-kinetic-sound-play ros-kinetic-jsk-visualization ros-kinetic-grid-map ros-k...
2019-11-27 20:56:29
1146
1
转载 二叉搜索树、平衡二叉搜索树和红黑树
一. 二叉搜索树(Binary Sort Tree)二叉搜索树,又称为二叉排序树(二叉查找树),它或许是一棵空树,或许是具有一下性质的二叉树:1.若它的左子树不为空,则左子树上所有的节点的值小于根节点的值2.若它的右子树不为空,则右子树上所有的节点的值都大于根节点的值3.它的左右子树也分别是二叉搜索树二叉搜索树的这种特性,使得我们在此二叉树上查找某个值就很方便了,从根节点开始,若要寻...
2019-11-27 20:48:02
1646
原创 C++11 之emplace_back 与 push_back的区别
C++ 开发中我们会经常用到插入操作对STL的各种容器进行操作,比如vector,map,set等。在引入右值引用,移动构造函数,移动赋值运算符之前,通常使用push_back()向容器中加入一个右值元素(临时对象)时,首先会调用构造函数构造这个临时对象,然后需要调用拷贝构造函数将这个临时对象放入容器中,原来的临时变量释放,这样造成的问题就是临时变量申请资源的浪费。引入了右值引用,移动构造函数后...
2019-11-19 22:15:43
435
转载 Cholesky分解法
Cholesky分解法又叫平方根法,是求解对称正定线性方程组最常用的方法之一。对于一般矩阵,为了消除LU分解的局限性和误差的过分积累,采用了选主元的方法,但对于对称正定矩阵而言,选主元是不必要的。 定理:若对称正定,则存在一个对角元为正数的下三角矩阵,使得成立。 假设现在要求解线性方程组,其中为对称正定矩阵,那么可通过下面步骤求解 (1)求的Chole...
2019-10-06 21:02:43
4567
原创 C++11多线程并发中的std::thread、std::mutex和std::future
C++11 新标准中引入了五个头文件来支持多线程编程:<atomic>,<thread>,<mutex>,<condition_variable> 和 <future><atomic>: 该文件主要申明了俩个类,std::atomic 和 std::atomic_flag,另外还声明了一套 C 风格的原子类和与C兼容的...
2019-08-30 15:01:37
2243
原创 ORB-SLAM2中的g2o
一. 图优化库g2o图优化,是把优化问题表现成图(Graph)的一种形式。这里的图是图论意义上的图。一个图由若干个顶点(Vertex),以及连接着这些定点的边(Edge)组成。进而,用顶点表示优化变量,用边表示误差项。于是,对于任意一个如下形式的非线性最小二乘问题,我们可以构建与之对应的一个图:mina,b,c12∑i=1N∥yi−exp(axi2+bxi+c)∥2\underset{a,b,...
2019-08-25 11:52:51
1835
原创 Ubutu16.04编译Kintinuous
下载Kintinuous: git clone https://github.com/mp3guy/Kintinuous,严格按照里面的build.sh安装1.安装依赖项 sudo apt-get install -y cmake-qt-gui git build-essential libusb-1.0-0-dev libudev-dev openjdk-7-jdk freeglut3-d...
2019-08-05 15:37:34
587
1
转载 C++中的inline用法
1.引入inline关键字的原因在c/c++中,为了解决一些频繁调用的小函数,即不断地有函数入栈,即函数栈,大量消耗 栈空间(栈内存) 的问题,特别的引入了inline修饰符,表示为内联函数。栈空间就是指放置程序的局部数据 (也就是函数内数据)的内存空间。在系统下,栈空间是有限的,假如频繁大量的使用就会造成因栈空间不足而导致程序出错的问题,如,函数的死循环递归调用的最终结果就是导致栈内存空间...
2019-08-05 14:42:14
375
转载 构造函数私有化
通常我们都将构造函数的声明置于public区段,假如我们将其放入private区段中会发生什么样的后果?没错,我也知道这将会使构造函数成为私有的,这意味着什么?1. 我们知道,当我们在程序中声明一个对象时,编译器为调用构造函数(如果有的话),而这个调用将通常是外部的,也就是说它不属于class对象本身的调用,假如构造函数是私有的,由于在class外部不允许访问私有成员,所以这将导致编译出错。2...
2019-08-04 12:54:28
763
原创 github上传自己的代码
1.首先创建在github上创建自己的文件夹,如下图所示: 2.点击绿色的键Clone or download,得到类似于git@github.com:Hansry/keypoint_matching.git这样的代码,接着在Ubuntu的terminator中键入git clone git@github.com:Hansry/keypoint_matching.git将packag...
2019-08-03 12:17:24
1295
原创 Opencv2.4链接CUDA9.0产生依赖问题
opencv编译的时候,或者其它库链接opencv的时候,报错如下/usr/bin/ld: cannot find -lopencv_dep_nppial/usr/bin/ld: cannot find -lopencv_dep_nppicc/usr/bin/ld: cannot find -lopencv_dep_nppicom/usr/bin/ld: cannot find -lope...
2019-05-29 17:31:55
1168
原创 Kinetic ROS编译ORB-SLAM
流程:https://blog.youkuaiyun.com/Fishmemory/article/details/53288140遇到问题参照:http://lingtong.de/2018/10/25/Install-ORB-SLAM/
2019-05-12 13:51:51
337
原创 teamviewer解决商业检测问题
1.卸载teamviewersudo apt --purge remove teamviewer2.改变电脑enp4s0f1sudo ifconfig enp4s0f1 downsudo ifconfig enp4s0f1 hw ether 2c:2d:a1:c7:4e:3dsudo ifconfig enp4s0f1 up3.重装teamviewersudo dpkg -i t...
2019-05-09 22:57:29
365
原创 LIFT: Learned Invariant Feature Points 环境配置
论文:Kwang Moo Yi, Eduard Trulls, Vincent Lepetit, Pascal Fua, ” LIFT: Learned Invariant Feature Transform”, in ECCV 2016, https://arxiv.org/abs/1603.09114 LIFT github 代码: https://github.com/cvlab-epfl...
2019-03-29 16:18:40
1404
7
转载 关于pytorch grid_sample()
torch.nn.functional.grid_sample(input, grid, mode=‘bilinear’, padding_mode=‘zeros’)其中,grid的shape为(N, H, W, 2)对于output上的每一点,(x, y)三个通道的像素值,采集自input上某一点三个通道的像素值,采集的点存在于grid最低维,也就是(N, H, W, 2)中的2, [0]索...
2019-03-28 15:37:09
7190
原创 ROS tf::TransfromBroadcaster tf::TransformListener listener.lookupTransform listener.waitForTransfor
1.How to broadcast coordinate frames of a robot to tf ?使用tf::TransfromBroadcaster API,具体代码如下: #include &lt;ros/ros.h&gt; 2 #include &lt;tf/transform_broadcaster.h&gt; 3 #include &lt;turtlesi...
2018-12-06 11:49:29
10251
1
原创 Pandas 中iloc 和 loc 的区别
pandas以类似字典的方式来获取某一列的值,比如df[‘A’],这会得到df的A列。如果我们对某一行感兴趣呢?这个时候有两种方法,一种是iloc方法,另一种方法是loc方法。loc是指location的意思,iloc中的i是指integer。这两者的区别如下:loc是通过数据的索引来定位获取iloc 是通过数据的位置(行号)来定位获取. 也就是说loc是根据index来索引,比如下边的d...
2018-11-17 19:04:45
1007
原创 Torchvision transforms 总结
一.torchvision.transformsTransfoms 是很常用的图片变换方式,可以通过compose将各个变换串联起来**1. class torchvision.transforms.Compose (transforms) **这个类将多个变换方式结合在一起参数:各个变换的实例对象举例:transforms.Compose([ transforms.Center...
2018-11-16 17:00:04
26220
2
原创 Python glob 模块
glob 模块根据给定的格式返回路径名,尽管返回的文件路径名是乱序的,其中给定的格式不能包含波浪线(’ ~ ‘), 但是’ * ’ , ’ ? '甚至是[ ]都能够正确匹配。其中glob以dot(.)为标志符,文件名从.开始读。举个例子:假如一个文件夹中包含 1.gif, 2.txt, card.gif 和一个子文件夹且其中包含3.txt这个文件,glob()将会产生下面的结果。&gt;&g...
2018-11-14 10:00:25
475
原创 点云分割数据集
https://shapenet.cs.stanford.edu/ericyi/shapenetcore_partanno_segmentation_benchmark_v0.zip
2018-11-09 14:42:34
4054
原创 LSGAN (Least Squares Generative Adversarial Networks)
Paper: https://arxiv.org/pdf/1611.04076.pdfGithub:https://github.com/Hansry/PyTorch-GAN1.前言传统GAN出现的问题: 传统GAN, 将Discriminator当作分类器,最后一层使用Sigmoid函数,使用交叉熵函数作为代价函数,容易出现梯度消失和collapse mode等问题,具体原因参考本博客W...
2018-11-08 18:50:04
4616
转载 WGAN (Wasserstein GAN)
Paper: https://arxiv.org/abs/1701.07875Github:https://github.com/eriklindernoren/PyTorch-GANhttps://github.com/martinarjovsky/WassersteinGAN一. 前言传统GAN存在的问题: 存在训练困难、生成器和判断器的loss无法指示训练过程、生成样本缺乏多样...
2018-11-07 21:55:51
2156
原创 LeetCode 208 实现前缀树
难度:中等问题描述:实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。示例:Trie trie = new Trie();trie.insert(“apple”);trie.search(“apple”); // 返回 truetrie.search(“app”); // 返回 falsetrie.startsW...
2018-11-06 13:12:49
637
原创 Python求特征值和特征向量、奇异值分解
问题描述:求解矩阵A=[-1 2 -3; 4 -6 6]的2范数。其中,矩阵A的2范数为矩阵ATAA^{T}AATA的最大特征值开平方根。即利用Python求解2范数如下所示:&gt;&gt;&gt; A=np.array([[-1,2,-3],[4,-6,6]])&gt;&gt;&gt; A_T=np.transpose(A)&gt;&gt;&am
2018-11-04 10:11:24
5973
4
转载 前缀树和后缀树
转自:从Trie树(字典树)谈到后缀树引言谈及Tire树与后缀树之前,先看俩个问题:**第一个问题:**一个文本文件,大约有一万行,每行一个词,要求统计出其中最频繁出现的前10个词,请给出思想,给出时间复杂度分析。其中,海量数据处理面试题集锦与Bit-map详解中给出的参考答案:用trie树统计每个词出现的次数,时间复杂度是O(nle)(le表示单词的平均长度),然后是找出出现最频繁的前1...
2018-10-31 20:04:45
1402
原创 LeetCode79 单词搜索 (回溯,时间不是很理想)
1.单词搜索给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定 word = “ABCCED”, ...
2018-10-30 23:21:25
363
原创 LeetCode 78 90 子集 子集II (回溯,递归)
1.子集难度:中等给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]思路:该题利用递归即可解决,注意的是可将输入先排下序。class Solution {public: ...
2018-10-30 20:20:55
468
原创 LeetCode 39 40 组合总和 组合总和II (回溯)
1.组合总和难度:中等给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。 示例 1:输入: candidates = [2,3,6,7], target = ...
2018-10-30 11:24:22
750
原创 回溯算法
1.概念回溯算法实际上是一个类似枚举的深度优先搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回到上一步还能执行的状态,尝试别的路径。 类似于走迷宫一样,假设我们到了每一个岔路口都规定,除了走过的地方,按照先往前走到底,如果不能走了,再退回到上一个岔路口,走左边,如果不行再走右边,如果再不行就往后退。每次退回就是每次的回溯,所以回溯法要保存每一次的状态...
2018-10-29 22:48:06
588
原创 LeetCode 897 129 98 递增顺序查找树 求根到叶子节点之和 验证二叉树 (树,深度优先搜索)
1.递增顺序查找树给定一个树,按中序遍历重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左子结点,只有一个右子结点。示例 :输入:[5,3,6,2,4,null,8,1,null,null,null,7,9] 5 / \ 3 6 / \ \ 2 4 8 / / \ 1 7 9...
2018-10-28 20:37:59
607
Opencv2链接CUDA9.0中cmake修改版
2019-05-29
图优化工具,G2o
2018-09-26
《Robotics, Vision and Control — Fundamental Algorithms in MATLAB》
2018-04-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人