自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

啊哈包子

脑子不够,博客来凑!!

  • 博客(80)
  • 资源 (2)
  • 收藏
  • 关注

原创 ORBSLAM3 的改进

周六看到了ORBSLAM3的源码,安装运行后看了一下其代码结构,因为加IMU的部分是针对之前的ORB-VI, 因此大家可以参考jinpang的LearnORBVI可以更纯粹地学习视觉+IMU的组合;这篇文章主要是针对其在Tracking线程做出的改动,尤其是添加Atlas后对Tracking部分的影响,LoopClosing和MapMerging的部分会在后面的分析中讲到,有错误也欢迎各位指正。ORBSLAM3相对于ORBSLAM2做出的主要改动:1. Atlas: 用于保存很多琐碎的地图;主要

2020-07-27 09:26:27 3373 5

原创 使用Kalibr进行IMU+相机的标定

利用kalibr标定IMU和相机:  https://github.com/ethz-asl/kalibr/wiki/Camera-IMU-calibration#2-collect-images在开始需要明确几点的是:需要先安装kalibr,该工具主要是标定相机和IMU, 在标定的过程中需要用到IMU和相机的内参文件,这里的内参文件可以用ROS 帮忙获得,或者如果已经有这个文件可以直接用。...

2019-10-29 19:29:13 1181

原创 结合CmakeList来更好地理解windows下的动态库和静态库

动态库和静态库的输出 window下输出的静态库为.lib文件,用于包含所有的函数,以及函数的实现,以及其他的一些东西,所以文件较大;输出的动态库包含.lib文件和.dll文件,.lib文件主要包含接口函数,而.dll文件用于保存函数的实现;因此设置静态库保存路径时要设置ARCHIVE_OUTPUT_DIRECTORY;而设置动态库输出路径时要设置ARCHIVE_OUTPUT_DIRECT...

2019-02-18 14:05:37 2252

原创 信息矩阵

1. 协方差矩阵Cartographer 中的协方差矩阵和信息矩阵1:运动方程有协方差矩阵R,观测方程有协方差矩阵Q。它们表示的意义是,到当前时刻t为止,所有测量的样本的协方差矩阵,用来衡量本次测量的不确定性。2:信息矩阵是协方差矩阵的逆,用来表示本次测量的可靠性,即不确定越小,则可靠性就越大。3:因此,公式推导里出现的相邻两个状态之间的协方差矩阵,实际上是到当前状态为止,之前所有样本的协方差矩阵。也就是说协方差矩阵随着样本的增加在不断的更新。2. 信息矩阵和协方差矩阵首先,.

2021-01-15 18:01:03 9

原创 mipi接口的摄像头驱动并发布话题

情况: 需要跑ORBSLAM, 之前一直使用USB接口的相机, 打开摄像头一般使用的是ROS下的usb-cam-node进行驱动,采集图像并发布成topic的形式,或者使用opencv的videoCapture进行图像的捕捉;因为某些原因需要将usb接口的camera转换成mipi接口的相机; 还是使用了原先usb_cam_node进行摄像头的驱动,输入/dev/video, 对应的width和height之后,结果出现了如下的提示:最主要的就是[ERROR], 提示如下:[ERROR]

2020-12-30 09:05:17 46

转载 【学习笔记】卡尔曼滤波中的协方差矩阵

本文转载至:添加一些自己的理解和标注的重点,算是学习笔记吧;一. 卡尔曼滤波的理论框架:kalman滤波的理论框架是全概率法则和贝叶斯法则,在设定中假设预测和感知均有误差,且均服从正态分布,且预测过程和感知过程采用不同的概率更新策略,具体采取的策略如下所示:预测过程符合全概率法则,是卷积过程,即采用概率分布相加; 感知过程符合贝叶斯法则,是乘积过程,即采用概率分布相乘;以一维运动为例,假如有一个小车,开始位于x=的位置,但是由于误差的存在,其真实分布是高斯分布,其方差是,即其...

2020-12-26 17:09:27 148

原创 【小白冲冲冲!!!】补2:SLAM中最小二乘问题的引入及求解

这一部分是我自己加的, 对于理解非线性优化以及那些常用的优化算法有很大的帮助,所以有时间也可以看看,互相交流;我们都已经知道SLAM中的问题求解其实就是要求出一个位姿,使得噪声项的平方,即误差最小化。 因此, 对于所有的运动和任意的观测, 都可以定义数据与估计值之间的误差:运动方程的误差: 观测方程的误差: 对...

2020-12-12 15:43:24 20

原创 【小白冲冲冲!!!】补1: 说一下最大化后验概率

在解释Dog-Leg算法之前, 需要了解与SLAM相关的几个重要的概念, 先验(prior), 后验(posterior),似然(Likehood);这三个概念所对应的公式分别如下, 一直x是结果(如买东西),是原因(双十一来了,或者钱有点多), 即导致x发生的原因, 则先验: 就是原因发生的概率似然: 也就是在某个原因发生时,导致特定结果的概率, 如对于我来讲,双十一发生的情况下,...

2020-12-12 15:24:47 24 1

原创 【小白冲冲冲!!!】37. ORBSLAM初始化时为什么要同时初始化H矩阵和F矩阵?

主要是针对初始化时不同的图像中不同的状态, H矩阵适用与特征点都处于同一个平面或者发生纯旋转时的状况, 这种状态时F举矩阵退化, 因此需要使用H矩阵; 而F矩阵适用于特征点在不同深度的情况;接下来总结一下关于F矩阵,H矩阵和E矩阵的一些相关的知识点:首先来说E矩阵,也就是本质矩阵, 本质矩阵有几个很重要的特性:本质矩阵在不同尺度下都是等价的; 对E乘以任意的非常数之后, 对极约束依然满足; 本质矩阵的奇异值必定是[a, a, 0]的形式, 这称为本质矩阵的内在性质; 因为旋转和平移各有三个自由

2020-12-12 15:22:37 16

原创 使用memcpy()时报错

找了两个小时的问题,记录一下, 在ROS下usb_cam节点下添加了新的去畸变函数,并将其发布成topic,但是在实际运行的时候,有时候会出现段错误,debug模式提示如下:__memcpy_avx_unaligned () at ../sysdeps/x86_64/multiarch/memcpy-avx-unaligned.S:238可以定位到我代码中的memcpy()函数, 其实是ROS下的sensor_msgs::fillmage()的memcpy(&image.data[0

2020-12-11 19:11:43 68

原创 Opencv中普通相机模型与鱼眼相机模型的区别

鱼眼相机模型普通相机模型无畸变时相机模型的状态:有畸变时的状态:The distortion parameters are the radial coefficientsk1,k2,k3,k4,k5, andk6,p1andp2are the tangential distortion coefficients, ands1,s2,s3, ands4, are the thin prism distortion coefficients. High...

2020-11-23 20:06:07 60

原创 [冲啊!!!!!]小白SLAM相关基础知识

SLAM基础问题(黑色是我的答案,红色是未正确回答的部分)1. Mat是如何访问元素的? 先访问行还是先访问列?多通道的Mat类矩阵是一个类似于三维的数据,而计算机的存储空间是一个二维空间,因此Mat类矩阵在计算机存储时是将三维数据变成二维数据,先存储第一个元素每个通道的数据,之后再存储第二个元素每个通道的数据。每一行的元素都按照这种方式进行存储,因此如果我们找到了每个元素的起始位置,便可以找到这个元素中每个通道的数据。图2-5展示了一个三通道的矩阵的存储方式,其中连续的蓝色、绿色和红色的方块分别代

2020-11-03 20:59:34 150 1

原创 package ‘catkin‘ depends on non-existent package ‘python3-catkin-pkg‘

这个问题的出现有点莫名其妙,不知道是在怎样的情况下触发的. 总之,现象就是: 之前可以很好地编译的ROS下的ORBSLAM的文件都无法再编译了, 每次提示如下:[rosbuild] Building package ORB_SLAM2Failed to invoke /opt/ros/kinetic/bin/rospack deps-manifests ORB_SLAM2[rospack] Error: package 'catkin' depends on non-existent packag

2020-11-02 12:04:45 128

原创 将Rosbag中的Compressed类型的图像转换成raw类型

经常存在这种情况, 我们需要在移动设备上录制一些包含图像信息的rosbag, 但是如果录制raw格式的话,占的内存空间太大, 一般可以采用录制compressed模式; 但是一般的代码中,图像从sensor_msgs转换到cv::Mat都是通过原图像,即raw类型的topic, 这时可以我们自己手动添加函数, 即可以订阅compressed topic的类型; 或者如果该代码实在麻烦,也可以之间将录制好的comppressed包转换成raw格式;haha@haha:/opt/ros/kinetic/l

2020-10-29 14:32:07 174

原创 ORBSLAM3的IMU积分求解过程

目前是自己的手稿版的ORBSLAM3的最大后验概率推导, 主要是参考论文:<Inertial-Only Optimization for Visual-Inertial Initialization>后面找到大块的时间编辑一下, 大家可以先收藏,然后互相交流~~

2020-10-20 21:06:49 344

原创 VINS_MONO+D435i Realtime运行

艰难地运行了三天,终于算是搞定了,主要的时间和精力都花在标定上了, 总结一些需要注意的点,希望能对同样使用VINS-MONO的人有帮助.先说一下我的初衷,其实是想要使用ORBSLAM3的Mono_Inertial的,但是总是会初始化失败,图像可以初始化成功,但是在添加IMU数据后整个track就会LOST, 觉得可能是IMU和相机的标定问题,所以想要试一下VINS-MONO的标定效果;IMU+Camera 标定我采用的是彩色相机+IMU的形式,所以只需要标定单目,单目标定和相机加IMU标定使用的

2020-10-16 21:09:26 97 6

原创 数学翻译这件事

有时候觉得数学专业领域的翻译是一个很考验人的事情,不仅考验的是专业能力,也考验的是翻译人员对于小白的共情能力;最近在看<线性代数应该这样学>这本数, 看到矩阵的时候发现一个很有趣的概念: "线性映射的矩阵", 只看这几个汉字的时候一头雾水,可是看到后面的英文"matrix of linear map", 顿时恍然大悟, 哦~~, 这不就是线性映射的矩阵嘛!!领悟之前和领悟之后是同一句话,但是在脑子里的感觉却不一样了.从英文翻译成中文的过程中,对文科生来讲, 丢失的可能是美感,而对理.

2020-10-16 15:16:18 26

原创 Realsense无法启动彩色摄像头

使用realsense的过程中,遇到了一些问题,设定了rs_camera.launch文件后提醒:[ WARN] [1602639880.042525199]: Given stream configuration is not supported by the device! Stream: Color, Stream Index: 0, Width: 640, Height: 480, FPS: 20因为给定了两条WARN信息,所以有些confused, 因此饶了很大一圈;首先.

2020-10-14 13:56:59 130

原创 用CubeSLAM跑自己的数据集

针对CubeSLAM本博客内容如下,主要是阅读论文和代码的一些结果总结,还有一部分总结未完成,同样使用或者对语义slam感兴趣有经验的欢迎交流,该博客后面也会不段更新cubeslam在自己的数据集上的使用结果和一些避坑指南:1. cubeSLAM主要贡献2. 2D->3D的cube转换3. 使用自己的数据集1. 主要贡献:这篇文章在语义SLAM中好评较多,主要是与常见的ORBSLAM实现来物体级别的结合;主要分为两部分,第一部分为2d部分,主要是可以通过平面的bbox生成出立体的c...

2020-10-07 16:13:09 258 7

原创 【DEBUG】undefined reference to `cv_bridge::toCvShare

使用情况:在一个已经存在的ROS项目中添加Rosbag的图像读取:操作:按照之前的使用方法,分别在package.xml中以及CMakeList.txt的catkin_package() 中添加了对应的包,但是编译时还是出现了未定义的引用;解决:这里主要说一下解决的方法:首先对于cv_bridge中函数的具体使用方法,大家可以参考博客:CV_Bridge的使用,这里对使用该博客后出现的问题做一个补充;首先在使用Ros时,如果需要用到新的package,则需要在两个地方添加,1.在该工程对

2020-09-27 14:34:56 85

原创 ROS Image_transport使用

本来想要用image_transport来将compressed图像republish成raw的,结果使用过程中遇到找不到image_transport.这一点很矛盾,因为一直都在用这个,一下是遇到的问题集锦;1. 首先是找不到list_transport:s———n@shinan:/opt/ros/kinetic/lib/image_transport$ rosrun image_transport list_transports[rosrun] Couldn't find executab.

2020-08-13 20:51:23 382

原创 ROS 图像相关的命令与应用

本文翻译自 xx大学的机器人课程,以及个人使用的Ros进行图像处理时的一些问题总结:1. ROS 中表示图像1.1 查看图像ROS中最基本的图像表示方式为sensor_mags/Image类型,可以使用RVIZ对该topic所对应的图像画面进行查看,RVIZ中的Camera display功能;或者更简便的,可以使用模块image_view:具体命令为:rosrun image_view image_view image:=topic_name例如, 如果想要查看 Turtlebo...

2020-08-11 20:32:31 207 2

原创 【回环检测】如何理解loopClosing中的连续性检测

在连续性检测中会用到几个变量如下,可以先理解一下这几个变量之间的关系如图:总结:回环部分对候选帧的检测其实可以理解为静态检测和动态检测;静态检测也就是对于图片相似度的检测,通过候选帧及其共视帧的commonwords 和score进行选择,保存下来的帧都具有静态一致性;空间上的连续性检测主要是动态检测,用于筛选那些落单的相似帧,通俗来讲就是这一候选、帧与当前帧相似,但是走两步之后就不一定相似了(传说中的没病走两步),怎么实现走两步的效果检测呢?那就是看簇与簇之间有没有共同帧了;PS:簇 = 候.

2020-07-28 09:50:39 123

原创 详细解读ORBSLAM中的描述子提取过程

一直都在基于ORBSLAM做一些相关的开发,只知道进来的图片会直接提取出BRIEF描述子,但是都没有详细地看过它具体的提取过程,今天仔细研究了一下代码和相关理论,弄清楚之后感觉神清气爽,部分内容查找有些费劲,所以特此整理出来,希望对需要的人有所帮助。1. 前言ORBSLAM中使用的ORB特征是FAST特征和BRIEF描述子的集合,详细的FAST特征的提取过程这里大概说一下,方便后面对描述子的理解;FAST特征的提取过程:1. 构建高斯金字塔:ComputePyramid()​ 第一层.

2020-07-21 21:09:04 361

原创 cartographer编译过程遇到未定义的dlclose@@GLIBC_2.2.5

1. 使用的安装过程如下:先装下这下面几个依赖sudo apt-get updatesudo apt-get install -y python-wstool python-rosdep ninja-build1. cartographer,cartographer_ros,ceres-solver放在工作空间的src目录下2. protobuf放在工作空间下3. 编译指令:catkin_make_isolated --install --use-ninja一些相关的以来安装完成后

2020-07-07 16:19:48 180

原创 【从理论到代码】旋转矩阵与欧拉角 一
原力计划

本篇主要是结合odom坐标系与相机坐标系之间的转换,可以用于将odom属于与视觉slam进行融合时的位姿计算;主要分为两部分,第一部分讲述旋转矩阵与欧拉角之间的转换;第二部分讲述如何将odom的位移和角度转换到相机坐标系下;...

2020-06-22 20:16:32 145

转载 【直观理解】粒子滤波 原理及实现

该博文集成了几个重要的参考博客,首先感谢这些博主的讲解和实现,因此是转载,不是原创。一. 首先从通俗易懂的层面来理解一下粒子滤波,主要是博主(饮水思源)的博客。粒子滤波可以先分为几个主要的阶段:初始化阶段 ---> 预测阶段--->矫正阶段--->重采样--->滤波初始化阶段:主要就是选定粒子数量。也就是博主所说的放狗去搜索目标;放狗的方式有很多中,一种是让他们均匀分布,第二种是让他们按照高斯分布,即可能性大的地方就多放一点。一般来讲,比较简单的实现都是先让粒子们均匀分布

2020-05-23 11:35:20 465

原创 【贪心School】机器学习课程笔记

一定要认清技术的边界以及定义好问题的范围(scope)。举个例子,不要试图使用完全开放的对话系统来搭建机器人订餐系统,因为目前的对话技术还不足以支撑完全开放环境下的对话。简答来讲,BI是一种分析的工具,也就是通过一些方式把数据更直观的展示给用户,辅助人去决策。另一方面,AI是通过数据帮助人做决策。所以从这个角度,可以把BI看作是辅助的决策的工具,AI则可以直接帮我们做决策。机器学习:机器学习是解决人工智能问题的最核心的技术。比如推荐系统、无人驾驶、人脸识别、竞技分析等应用都要依...

2020-05-14 20:09:37 95

原创 【思维导图】nav_msgs/Odometry 消息的构成及订阅

导航功能包要求机器人 能够通过里程计信息源发布包含速度信息的里程计nav_msgs/Odometry 消息;本篇整理了nav_msgs/Odometry消息的具体结构,更加清晰一点,以及如果订阅这种类型的topic时应该如何获取数据;了解了具体的结构后来看一下简单一点的订阅实例:typedef struct { float x; float y; float th;} POSE2D;vector<POSE2D> odom_poses;void

2020-05-14 19:56:32 1692

原创 【讲清楚】rebase的使用

Git rebasegit original log:目前有多于三个的log,而我想要合并最近的两个 log, 也就是上图中紫色的圈和黄色的圈,所以这个时候使用rebase的方式如下:git rebase -i ee9ee598ea2a4bece9b23注意这个时候的应该使用的log的编码是红色的圈,虽然我想要合并紫色和黄色,但是需要在红色圈的基础上进行合...

2020-03-26 14:16:37 756

原创 LInux下的交换分区以及相关查看命令

linux下SWAP为交换分区,也就是虚拟内存;当linux系统的物理内存不够的时候,就需要将物理内存中的一些东西释放出来,以供当前程序使用;那些被释放的空间可能来自于一些很长没有什么操作的程序,被释放出来的空间中保存的内容就会被临时放入swap中;等到那些程序要运行时,再从swap中恢复保存的数据。具体swap分区的大小设置问题参考Linux交换分区设置多大为好?如何查看系统...

2020-02-20 11:56:33 985

原创 SLAM中直接法分类及对应的项目

1. 思路:已知三维点P在相机1中对应的像素点为p1,则可以根据当前相机位姿的估计值,寻找到P在相机2中对应的像素值p2;2. 优化变量:优化光度误差,也就是P在两张图片中对应的两个像素点p1,p2之间的亮度误差;3. 分类:根据在图像中选用的P的来源,可以将直接法分为以下三类1. 稀疏直接法: P来自于稀疏关键点,只比较关键点周围区域的像素值,不使用描述子;2. 半稠密:...

2020-02-18 17:47:54 209

原创 catkin_make 只编译一个包

来源于ros wiki上的问题: how to build a single package by catkin_make一般来讲,在工作空间下,使用catkin_make 将会一次性编译src下所有的包,因为catkin_make 相当于以下命令的集合:$ cd ~/catkin_ws$ cd src$ catkin_init_workspace$ cd ..$ mkdir...

2020-01-13 20:11:12 3415

原创 在cmakelists和makefile中设置opencv

1. 查询电脑上的opencv版本:pkg-config--modversion opencv2. 在电脑上安装多个版本的opencv,可以通过指定安装路径进行设置: 下载源码后进入文件夹,打开终端;mkdirbuildcmake-DCMAKE_BUILD_TYPE=Release-DCMAKE_INSTALL_PREFIX=/usr/local/opencv3...

2020-01-10 22:12:31 552

原创 ORBSLAM的ORB特征到底从哪儿来?

ORBSLAM中的主要使用了ORB特征,也就是FAST特征+BRIEF描述子的组合,具体这两种方法就不详细介绍了,这里主要说一下每个特征对应的描述子在ORBSLAM中的维护方式;首先需要说明的是每个frame都有自己对应的找到的feature,在进行特征提取前会先初始化一个Extractor,也就是:void Frame::ExtractORB(int flag, const cv::M...

2020-01-09 21:40:18 157

原创 ORB_SLAM2中的疑难杂症

用ORB_SLAM也有一段时间了,基于该project也做了不少的开发,期间遇到了一些bug,在这里总结一下,在github上的issue中也有,只是issue数量太大,所以总结出一个关于代码错误的几个方面(主要是在遇到的时候也不敢相信,毕竟是大牛的作品):1. Reset() 的时候会遇到段错误,很偶尔遇到的一个问题,主要原因是双目的初始化函数StereoInitialization() 中...

2020-01-09 20:53:21 182

原创 Ubuntu下添加boost库

@Ubuntu下Boost库的链接在CmakeLists.txt中添加Boost组件Boost具有很好的平台独立性,因此可以作为首选api来完成特定功能。最常用的为filesystem,用来获取程序的运行目录#include <boost/filesystem/path.hpp>#include <boost/filesystem/operation.hpp>...

2019-11-19 19:57:15 303

原创 Reading Excel with Python

Reading Excel with Python (xlrd)Every 6-8 months, when I need to use the pythonxlrd library, I end up re-finding this page:Examples Reading Excel (.xls) Documents Using Python’s xlrdIn this case...

2019-11-13 20:18:18 58

原创 Unknown CMake command "rosbuild_add_executable".

I got this error when I try to add ROS to a existing project. To slove this probelm you can check your file in this two ways:1. Check File .bashrc TO check whether you current project ROS pat...

2019-11-13 16:00:50 1107

原创 IMU预积分公式推到及代码解析

主要是各个公式与代码之间的变换:IMU器件的测量模型:是陀螺仪实际的旋转值,是陀螺仪的测量值, 在测量值与真实值之间相差bias 和 噪声aw 是物体的加速度在世界坐标系下的值,换言之,也可以理解为肉眼可见的加速度,当物体放在桌子上静止时,aw为0,而这时加速度计却能测量到有一个与重力方向相反的力作用于物体,也就是桌子对于物体的向上的支撑力; gw 是世界坐标系下重力加速度, ...

2019-11-11 21:29:27 1032 5

IMU预积分总结与公式推导.pdf

泡泡机器人北航博士邱笑晨IMU积分公式总结和推导,很全面也很详细的知道,学习learnVIorb 代码以及VINS必备的基础知识总结, 公式推导的很详细,涉及到代码中的很多指导过程

2019-11-11

tesseract使用结果分析

tesseract使用结果分析

2017-04-24

空空如也

空空如也

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

TA关注的人 TA的粉丝

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