回环检测之DBoW2 前面我们已经讲了回环检测中用的一些方法,今天主要介绍一下现在用的最多的词袋模型——DBoW2。这里就不在细讲回环检测的定义,具体可以看看我的前面的博客,而回环检测在SLAM中的作用可以从下面的图片中大致有一个了解。左图是不存在回环功能的,当我们回到原来的地方的时候,由于累计误差导致了偏差,这在三维重建中特别明显,就是本来是一个矩形的空间建出来的奇形怪状了,当我们有了回环检测功能后,如右图,很大程度上与矩形空间相似。下图也是一样的,效果很明显。1 词袋模型现有的ORB-SLAM,VINS-
回环检测之决策模型 前面我们已经讲了如何描述场景,让机器人尽可能的了解周围环境,那么了解了之后,如何判断出是回环的呢?本节讨论如何建立决策模型来根据当前场景描述和地图信息识别出可能的闭环.合理的决策模型可有效提高闭环检测的准确度和召回率.最简单的建模方法是将闭环检测看作是图像检索问题,而不考虑地图的拓扑信息和度量信息,计算当前图像和地图中所有图像的相似度,找到相似度最大的.如果相似度超过阈值,则认为出现了闭环.这样做的好处是简化了定位的复杂度,提升了定位的效率.对长期大规模 SLAM 来说,地图的信息量会越来越大,过大的搜
使用ADB出现了system/bin/sh: adb: not found&system/bin/sh: pull: not found错误 在使用ADB传送文件的时候出现了system/bin/sh: adb: not found&system/bin/sh: pull: not found错误解决办法:可能你在使用adb pull 之前你使用了adb shell,你需要先退出来,退出来的命令是exit,然后再使用adb pull就可以了...
回环检测算法综述之场景描述 在视觉SLAM问题中,位姿的估计往往是一个递推的过程,即由上一帧位姿解算当前帧位姿,因此其中的误差便这样一帧一帧的传递下去,也就是我们所说的累积误差。一个消除误差有效的办法是进行回环检测。回环检测判断机器人是否回到了先前经过的位置,如果检测到回环,它会把信息传递给后端进行优化处理。回环是一个比后端更加紧凑、准确的约束,这一约束条件可以形成一个拓扑一致的轨迹地图。如果能够检测到闭环,并对其优化,就可以让结果更加准确。但是这里存在一个问题,如果检测到的是一个假的回环(假阳性闭环),那么会使整个图优化算法收敛到完
Linux小常识 文章目录 Linux——系统篇 Linux是什么? Unix和Linux有什么区别? Linux系统的组成部分? Linux内核的组成部分? 内存管理单元MMU有什么作用? 常见的操作系统进程调度策略有哪些? I/O子系统层次结构 逻辑地址、线性地址、物理地址、总线地址、虚拟地址的区别?...
语法错误( error: array bound is not an integer constant before ‘]’ token) #include<iostream>#include<cstdio>using namespace std;int N=100;int a[N][N];int main(){}编译出现了[Error] array bound is not an integer constant before ']' token;只需要将int N=100修改为const intN = 100 即可
error: ‘function’ is not a member of ‘std’ 在编译brisk工程时出现了‘function’ is not a member of ‘std’修改:在brisk-feature-detector.cc文件中添加#include <functional>就可以了
By not providing “Findcatkin_simple.cmake“ in CMAKE_MODULE_PATH this project has asked CMake to fi 先下载catkin_simplegit clone https://github.com/catkin/catkin_simple并将下载的catkin_simple放入该工程的中与src是同一级然后在CMakeList.txt中加入一句add_subdirectory(catkin_simple)编译该工程就通过了
在 Linux 下将 PNG 和 JPG 批量互转的四种方法 在 Linux 下将 PNG 和 JPG 批量互转的四种方法 计算机术语中,批处理指的是用一个非交互式的程序来执行一序列的任务的方法。这篇教程里,我们会使用 Linux 命令行工具,并提供 4 种简单的处理方式来把一些.PNG格式的图像批量转换成.JPG格式的,以及转换回来。虽然所有示例中我们使用的都是convert命令行工具,但是您也可以使用mogrify命令来达到同样的效果。convert命令的语法如下:$ convert 输入选项 输入文件 输出选项 输出文件而...
CMakeList.txt的指令以及实例介绍 一、Cmake 简介cmake 是一个跨平台、开源的构建系统。它是一个集软件构建、测试、打包于一身的软件。它使用与平台和编译器独立的配置文件来对软件编译过程进行控制。二、常用命令1. 指定 cmake 的最小版本cmake_minimum_required(VERSION 3.4.1)这行命令是可选的,我们可以不写这句话,但在有些情况下,如果 CMakeLists.txt 文件中使用了一些高版本 cmake 特有的一些命令的时候,就需要加上这样一行,提醒用户升级到该版本之后再执行 cmake。
四元数、变换矩阵、欧拉角、轴角的转换关系详解 描述空间变换通常有四种描述方式,分别是四元数、变换矩阵、欧拉角、轴角,探讨这四种方法之间的关系。大致的关系如图:轴角轴角一种几何描述方法。轴角定义了一个转动轴和转动角,沿着转动轴方向逆时针旋转为转动正方向,具体如下图:θ=θe⃗其中向量e为转轴,模长为θ角。欧拉角欧拉角就是物体绕坐标系三个坐标轴(x,y,z轴)的旋转角度。由于涉及到坐标系,学习SLAM的应该会经常遇到全局坐标系和局部坐标系,因此,根据不同的坐标系以及分解的顺序不同,欧拉角表达具有多样性,根据坐标系的不同一般分
你的编程能力从什么时候开始突飞猛进? 啃完一本本书, 做完一个个lab没有突飞猛进, 一切都是量变最终累积成质变!但是会有那样一些时间节点,你会明显感觉到自己的编程能力确实有提高不少,能够实现更多的想法.不过老实说,就编程能力上确实没有“突飞猛进”的感觉,都是逐渐的进步,量变引起质变嘛。我们都是普通人,不可能像张无忌一样因跌落悬崖,意外获得《九阳神功》,从此开挂,走上巅峰。只有靠不断的看书、coding、学习优秀开源项目,构建自己的计算机知识体系,并且在特定的领域不断专研,这样才能成为一个优秀的工程师。下面聊聊我自己的编
据说是史上最强的学习C语言的路线 既然学校老师的课听不懂,那不妨听听网上的课,比如我之前推荐的浙大翁恺教授的 C 语言课程,在 B 站上可以找得到。现在还有,不知道以后还会不会下架,因为涉及到一些版权的问题。侯捷老师的 C++ 视频课都已经全部下架了,所以早点去白嫖,千万别后悔。地址我这里再贴一下: https://www.bilibili.com/video/BV19W411B7w1要学习 C 语言的读者抓紧时间去看一下,建议 1.5 倍速食用。我就是按照这么一个速度去看的,感觉不愧是浙大的教授,语言的表达能力,以及对程...
不一样的静态初始化——OpenVins 今天讲一下黄国权老师实验室开源的OpenVins工程中的IMU初始化,一般VIO初始化分为两种,一种是静态初始化,一种是动态初始化,而OpenVins则利用加速度的方差差异将运动分为两种状态,一种是静止的,一种是刚开始运动的。个人比较符合应用情况,而且我觉得这个想法挺不错,很有意思。VIO初始化就要任务一般是估计重力方向,速度,位置,IMU的偏置,尺度。而而在openvins中,只估计重力方向,IMU的偏置。其实在代码里主要写了三个初始化模式,但是动态初始化好像没写出来,不知道现在有没有出来,大家可
ORBSLAM3 VIO初始化 按照规矩,先讲一下ORBSLAM3中的初始化大致流程根据ORB-SLAM3的论文介绍, IMU的初始化方法是基于下面3点:1) 纯视觉SLAM可以提供很好的位姿估计,所以可以用纯视觉的结果来改善IMU的估计;2) 显示地将尺度表示为一个优化的变量, 尺度会更快地收敛;3)在IMU初始化阶段,忽略传感器的不确定度将会产生更多不可预知错误。整个初始化过程分为:1.Vision-only MAP Estimation;2.Inertial-only MAP Estima...
IPv6系列文章集锦 本文总结一个目录提纲,只要是给自己看的,记录一下哪些东西已经总结过了。 闲谈IPv6-Loopback网口上的IPv6地址: https://blog.csdn.net/dog250/article/details/89333045 闲谈IPv6-v4/v6协议转换报文的checksum无关性: https://blog.csdn.net/dog250/article/details/89039395 闲谈IPv6-IPv4的TCP和NAT让互联网变得畸形: https://blo...
理解SLAM中的四元数基础知识 什么是四元数 四元数(Quaternion)则是一种紧凑、易于迭代、又不会出现奇异值的表示方法。它在程序中广为使用,在学习SLAM过程中,对于初学者来说比较难理解的应该是这一部分知识了,因此,理解四元数的含义与用法,对学习SLAM来说是必须的。本节我们就来讲讲四元数,这里只是简单介绍四元数的基本用法以及在SLAM中公式推导会用到的几个重要推论,想要学SLAM的可以记下那几个推论,在SLAM理论推导中都会用到的。 四元数是Hamilton找到的一种扩展的复数。一个四元数拥有一个实部和三个虚部:..
VINS-mono初始化的原理解析 初始化大致流程如果IMU和相机之间的外参未知,则需要在线标定求解旋转量qbc。 利用求解出来的qbc,结合相机间的约束,求解IMU角速度的bias。 利用IMU的运动估计重力,速度以及尺度。 利用重力的模长矫正重力,之后再矫正每个参数。1.估计外参qbc根据相机和IMU的坐标相对关系可得整理得:将多个帧之间的等式关系一起构建超定方程Ax=0,如下:对A进行svd分解,其中最小奇异值对应的奇异向量便为需要求解的qbc。其中由于旋转矩阵和欧拉角..
linux scp命令参数及用法详解--linux远程复制拷贝命令使用实例 一般情况,本地网络跟远程网络进行数据交抱,或者数据迁移,常用的有三种方法,一是ftp,二是wget /fetch 三是,rsync 大型数据迁移用rysync,其次用fetch/wget ,最次是ftp,最慢是ftp.这几天,在忙数据迁移时,用到ssh的scp方法来迁移数据。速度与效果都很好。特别是现在许多服务器为了安全,都会改ssh默认的22端口,改成一个特殊的端口。所以。在scp或者sftp时,就要指定通过什么端口来迁移。现在,特记下这个特殊端口来scp的命令。Linux scp命令用于Linux之