自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

脑子不够,博客来凑!!

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

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

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

2020-06-22 20:16:32 857

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

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

2020-05-23 11:35:20 4832 2

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

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

2020-05-14 20:09:37 359

原创 【思维导图】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 12886 3

原创 【讲清楚】rebase的使用

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

2020-03-26 14:16:37 4548

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

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

2020-02-20 11:56:33 5412

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

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

2020-02-18 17:47:54 838

原创 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 23673

原创 在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 4721

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

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

2020-01-09 21:40:18 522

原创 ORB_SLAM2中的疑难杂症

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

2020-01-09 20:53:21 966

原创 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 1804

原创 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 193

原创 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 3054

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

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

2019-11-11 21:29:27 4572 6

转载 Eigen库数据结构内存对齐问题

运行learnorbvi 的时候遇到关于SO3的段错误,查找后发现是Eigen中的问题,具体的解释如下网址:

2019-10-28 20:44:36 694 1

转载 【线性代数】矩阵的零空间

原文:http://blog.csdn.net/tengweitw/article/details/40039373

2019-10-28 20:40:32 1287

原创 numpy 在机器学习中 常用函数总结

1. 矩阵的重建:numpy.reshape(a, newshape, order='C')矩阵重建, 将矩阵a变成新的形状 如:>>> a = np.arange(6).reshape((3, 2))>>> aarray([[0, 1], [2, 3], [4, 5]])>>> np.res...

2019-10-28 10:42:10 507

原创 舒尔补在Slam中的应用

本文参考深蓝学院的VINS课程,加入自己的理解,有疑问欢迎交流。另发现了白巧克力也有相关的博客,附大神链接:https://blog.csdn.net/heyijia0327/article/details/52822104在看文章之前可以先看一下舒尔补的定义 以及 条件概率和联合概率相关知识还是以多元变量x服从高斯分布,且由两部分组成 x=[a b], 那么变量之间构成的协方差矩...

2019-10-24 14:02:57 1527

原创 条件概率,联合概率,边际概率在slam中的应用

SLAM的优化过程其实就是从一个联合概率去分解边界概率和条件概率的过程;1. 概率的定义概率:用数据去计算某件事情发生的可能性;条件概率:条件概率表示在条件Y=b成立的情况下,X=a的概率,记作P(X=a|Y=b)或P(a|b),它具有如下性质:“在条件Y=b下X的条件分布”也是一种“X的概率分布”,因此穷举X的可取值之后,所有这些值对应的概率之和为1即:联合概率:联合概率指的...

2019-10-24 14:00:46 1032

原创 舒尔补理论Schur Compliment

在做slam的时候经常遇到的一个概念就是schur complement,了解这个概念,对于理解slam的优化过程也会有很大的帮助;首先给出的是舒尔补的定义:舒尔补的由来其实就是将一个矩阵变成对角阵的过程,比如在线性代数课程中会经常用到的Ax=B的求解,如果手动去求解的话就需要将矩阵A|b化简成为上三角矩阵或者下三角矩阵,主要用到的就是高斯消元法。而舒尔补理论其实就是这个过程的一个...

2019-10-24 13:57:34 31783 2

原创 传统ORB-SLam中位姿优化中雅克比矩阵讲解

由于之前的鱼眼orbslam只有单目部分,所以在优化时也只是用了单目位姿优化和三维坐标点优化,并没有将双目的优化添加进去,不知道是否对结果有影响;这里添加双目的优化部分,主要是将添加雅克比矩阵;orbslam中的优化部分使用了g2o库,具体的详细讲解可以参考https://zhuanlan.zhihu.com/p/58521241 讲解的很详细这里不加赘述,主要从单目的雅克比矩阵讲解,...

2019-08-31 11:16:24 2624

原创 EUCM鱼眼相机模型详解

EUCM 模型即为extended unified camera model, 主要会涉及到几个坐标系,如下:a. 世界坐标系: 真实世界坐标中的位置坐标,单位为m, 一般对应在表达为X;b. 椭球面坐标系:是一个中转球面,与对应点的世界坐标相差一个scale的系数;也成为P平面, 对应表达为Xpc. 图像坐标系:是椭球面上的点在z=1平面上的投影,也称为M平面,其x,y值与Xp一样,只...

2019-08-26 19:35:04 2336 3

原创 _InputArray 和 outputArray在ORBslam中的使用

InputArray() 是一个接口类, 可以传入多种类型,例如Mat, Mat_<T>, Mat_<T, m,n>, vector<vector<T>>, vector<Mat>等;因为在opencv中属于执行类,所以接口可能会改变,因此有几点需要注意:1. 当在opencv的函数中看到出入类型为InputArray的参数,就可以...

2019-08-20 21:39:43 567 1

原创 NVIDIA 显卡驱动安装

背景: UBUNTU16.04 +NVIDIA-384安装过程比较坚信,参考了很多人的博客,中间走了一些弯路,下面主要将大家的方法分为两类:1. 使用apt-get 安装的方法2. 使用官网下载 .run 文件安装的方法我两种方法都试了,先用第一种没成功,又尝试了第二种,也没成功,后面又重新安装第一种,成功。所以,下面的方法总结是按照apt-get的安装方法,如果想用.run文...

2019-07-05 15:49:19 5414 6

原创 标定工具:---improvedOcamCalib的使用及标定结果

下载toolbox:这个标定工具也是基于Scaramuzza的鱼眼相机标定模型,并在这个基础上做出了修改,主要时作者在用S的方法进行标定的时候没有得到收敛的效果,我个人在运行MCPTAM中也发现有这种情况,Mean square error一直在减少,并没有converged;这个toolbox的使用,我个人觉得文件中的readme文件没有讲解的很清楚,看了一下源码和执行过程之后,将rea...

2019-06-06 17:07:46 2935 2

原创 MCPTAM标定部分 运行结果

这里主要记录下MCPTAM的标定结果(运行该项目主要是希望能用它标定出相机的内外参文件)MCPTAM的安装过程参考:https://blog.csdn.net/qq_25458977/article/details/904062331. camera intrinsic calibration 部分源码中的launch文件夹里面有一个camera_calibrator.launch文件...

2019-06-06 16:39:18 590

原创 multi-camera项目学习

1. 安装:2. 试运行example3. 传入参数分析:./Examples/Lafida/multi_col_slam_lafida ./Examples/small_orb_omni_voc_9_6.yml ./Examples/Lafida/Slam_Settings_indoor1.yaml ./Examples/Lafida/ $HOME$/Downloads/Ind...

2019-06-06 10:45:32 1871 7

原创 boost的编译和使用(window下)

我的系统是win64的,之前装过boost但是忘记具体的安装过程了,看很多教程里写直接先运行boostrap 和 bjam 就可以了,但是我运行出来的库在vs x64下有版本冲突:库计算机类型与目标计算机类型x64冲突,因此想起来应该是需要在bjam的时候进行一些环境参数的配置:bjam stage --toolset=msvc-14.0 architecture=x86 address-m...

2019-05-27 16:23:27 843

原创 问题:lapack.so

在使用maptam的calibration camera的时候发现一个问题,运:roslaunch mcptam camera_calibrator.launch camera_name:=camera1 device:=/dev/video0提示出错:symbol lookup error: /usr/lib/liblapack.so.3: undefined symbol: sget...

2019-05-23 13:41:17 1311

原创 MCPTAM安装

谨以此文纪念我在MCPTAM的大坑里呆的一天gengxin: ros install : https://blog.csdn.net/random_repick/article/details/78211030更新:现在为两周之后的安装更新, 之前环境的配置没问题之后,开始按照GettingStart用launch文件运行,第三部分Camera Intrinsic Calibration可...

2019-05-22 17:51:59 554

原创 Faied to run MSBuild commond CmakeError

问题1:Faied to run MSBuild commond CmakeError想要用cmake编译一个slam的工程,因为是新电脑,编译的时候遇到了这个问题首先工程的cmake文件是没有问题的,因为我在以前的电脑上可以正常的编译可使用,而在这里却出现了问题,查看了资料后解决方法如下:我的cmake版本是cmake3.13 ,据说很多windows不支持这么高版本,降低版本为c...

2019-05-16 18:35:25 3631 4

原创 leetcode练习--字符串中第一个唯一字符

查找字符串中第一个唯一的字符,返回其index;这里我用了hash的方法,没遇到一个新的字符就会将其保存至map中,我以为map里面会按照insert的顺序进行排放,结果map保存成功后输出结果如下:先看代码:class Solution {public: int firstUniqChar(string s) { int len=s.length();...

2019-03-06 10:46:58 162

原创 leetcode字符串练习--整数反转

题目描述如下:这道题比较简单,思路也很好懂,基本思路就是每次pop出最后一位,进行计算保存,但是有一点就是溢出判断,ret*10+left很有可能会溢出,因此,这里官网解答采用了倒退的思想class Solution {public: int reverse(int x) { long int ret_x=0; int left = x%10...

2019-03-05 14:10:31 188

原创 leetcode练习旋转数组

第一中方法即为hash的方法:第二种采用了循环,但是不全面,输入测试用例为[1,3], k=3 时,无法进行交换:class Solution {public: void rotate(vector&lt;int&gt;&amp; nums, int k) { int len=nums.size(); int round=1; i...

2019-03-05 10:34:17 202

原创 GIT代码管理: git remote add

 这里主要以 如何将一份已经写好的代码提交到两个git远端  为例, 更好地理解git remote add这句;首先要明白一句代码的意思,以github最经常的提示为例:在这张图面里git init, git add 和git commit 都是前期的准备, 相当于将你本地的文件都上传到了本地仓库,但是还没有像远端仓库提交;这时执行git remote那句话,就是先将本地仓库...

2019-02-22 11:50:31 179885 22

原创 VS2015 调试代码时写入位置时发生访问冲突

前一段时间写一个工程,调用自己写的一个库,编译成功,执行时发生了访问冲突;当时觉得很好奇,这个库不是第一次调用,之前调用过很多次都没有问题,偏偏这次出现了访问冲突;解决的思路如下:1. 检查代码,看一下调用接口的代码是否写错, 同时可以通过中断,在vs的调用堆栈窗口查看中断出现的具体步骤,看不懂的就一层一层往外看,直到找到能看懂的代码;我这里因为调用的接口不多,直接定位了问题出现的...

2019-02-18 10:16:00 22060

原创 静态成员变量和非静态成员变量

写在前面的总结:静态成员变量是属于类的,就像是你买了一套房,属于固定资产;而非静态成员变量是不属于类的,就像是你租了一套房,主人套房子不属于你,因此,静态成员变量的调用可以直接通过类加域运算符的形式 (CLASS::),而非静态成员变量的调用去只能由实例化的对象,可以理解为租约,有了这个租约,这个房子才能被你用,但也是借用,并不代表房子就是你的了。(怎么想想还有点心酸呢?)发现个更好的...

2019-02-18 09:45:06 1463

原创 齐次坐标和单应性矩阵

齐次坐标主要是应用在矩阵转换中,我们通常运算的坐标系是“笛卡尔坐标系”,我们已经习惯了笛卡尔坐标系的表述方式,一个点都有唯一对应的数据值来表示,比如原点我们就记做(0,0)点。而笛卡尔坐标系和齐次坐标系的根本区别在于“齐次性”。  所谓齐次坐标就是将一个原本是n维的向量用一个n+1维向量来表示。 显然一个向量的齐次表示是不唯一的,齐次坐标的h取不同的值都表示的是同一个点,比如齐次坐标[10,4...

2018-12-10 09:39:08 1686 1

原创 excel折线图和堆积折线图

excel中关于折线图和堆积折现图的解释:“堆积折线图和带数据标记的堆积折线图 堆积折线图用于显示每一数值所占大小随时间或有序类别而变化的趋势,可能显示数据点以表示单个数据值,也可能不显示这些数据点。如果有很多类别或者数值是近似的,则应该使用无数据点堆积折线图。 提示 为更好地显示此类型的数据,您可能要考虑改用堆积面积图。更通俗的解释为: 如果有两个数据系列,折线图中两个数据系列是独立...

2018-12-10 09:31:51 22891

tesseract使用结果分析

tesseract使用结果分析

2017-04-24

空空如也

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

TA关注的人

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