自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

知行合一

厚积薄发,格物致知。简单点,做事的动机简单点。

  • 博客(58)
  • 资源 (4)
  • 收藏
  • 关注

原创 变分法:在图像处理中的应用(一)

前言  最近学习稠密重建的相关知识,发现变分法通常作为一个平滑的正则项出现在残差平方和的损失函数中。而图像处理中又经常出现这类最小损失函数的优化问题,如图像分割、稠密光流、稠密重建等等,这些优化问题中都有可能涉及到变分法。因此,我想系统记录下学习过程:变分法是什么?全变分正则项有何含义?加了变分正则项的损失函数如何求解?等等。本系列应该会有三章:第一章讲数学基础:泛函极值和变分法第二章讲变分法在图像去噪上的应用第三章讲变分法在稠密重建上的应用变分法基础  变分法求解的过程为:构建变分函数,利

2020-06-24 18:33:32 6940 10

原创 从零开始手写 VIO

前言最近和高博合作推出了一个关于 VIO 的课程,借此博客推荐下。这个课程的图优化后端是我们自己写的,仅依赖 Eigen, 实现后系统的精度和 ceres 以及 g2o 不相上下。 个人感觉这个课程还是能学到不少东西,特别是网上关于 SLAM 后端的资料比较少。下面是一些关于这个课程的介绍:这两年视觉 SLAM 相当火了,作为面试官常常感叹现在的小伙伴比我们那会厉害多了,简历中一般都会说熟悉...

2019-05-13 21:40:18 18464 13

原创 高斯过程简析

前言SLAM 方向对 Gaussian Process (GP)的需求不大,但这两年有好几篇 IROS,ICRA 的论文用高斯过程来拟合轨迹,拟合误差模型等,因此这篇笔记对高斯过程概念和原理进行简单梳理,理清楚 GP 是怎么来的,以及怎么用它。如果想更进一步系统学习下,推荐 MIT 出版的 Gaussian Processes for Machine Learning.高斯过程是什么高斯过程...

2019-03-18 15:41:13 7022 5

原创 2d Laser 和 Odomter 内外参数标定工具原理及使用方法

前言两轮差速轮式机器人可以基于码盘数据和两轮间距以及车轮半径进行航迹推演,得到机器人的轨迹。激光雷达也可以利用 icp 等算法计算出两时刻间机器人的相对运动量。因此,可以利用两者数据进行融合定位,本博客根据 Censi 2013 年发表在 TRO 上的论文,对如何标定里程计内参数 ( 轮子半径,两轮间距),以及外参数(激光和里程计之间的坐标关系)进行理论推导,并将对应标定代码整理在了我们的网站上...

2019-03-15 12:26:07 16303 78

原创 2d Laser 和 camera 标定工具原理及使用方法

2d 激光和相机之间之间的标定早在 04 年就出了成熟的论文和方法,去年 17 年 ICCV, IROS,今年 IROS 等依然还有论文产出。具体的论文列表可以参考我的《论文阅读整理》博客,这篇博客主要讲述 04 年方法的原理以及代码的实现, 代码将开放,在自己机器人上采集了多次数据进行标定,标定结果在 1cm 内浮动,均值附近正负几毫米。标定原理准备材料:标定板一个(平板上贴有棋盘格或者二维...

2018-12-14 14:28:44 13688 82

原创 基于平面 marker 的 Bundle Adjustmet

marker BA 公式推导李代数求导基础有四种方式进行李代数的求导: gtsam作者笔记里的推导方式,strasdat博士论文里的推导方式,TUM kerl硕士论文里的推导方式,最后就是barfoot的state esitamtion for robotics一书中的推导了。最直观简介的是gtsam和kerl的推导,最完备最可扩展的推导是barfoot的方式,也就是高翔书上的推导。

2018-12-08 18:02:02 5370 16

原创 Kalibr 标定双目内外参数以及 IMU 外参数

本文记录使用 Kalibr 标定双目相机内外参数以及和IMU之间外参数的标定过程. 采用的硬件设备为小觅的双目VIO设备( MyntEYE), 并且默认你已经有了ROS的知识基础.标定 stereo-imu 之前, 需要知道双目的内外参数, 所以先进行双目内外参数的标定.材料准备安装Kalibr (忽略)准备标定板标定板可以用 kalibr 提供的pdf, 里面有三种类型的标定板(Apr...

2018-10-31 20:08:12 19671 25

原创 SLAM 论文阅读和分类整理

前言:以前读论文,都是靠脑子硬记,哪个实验室,谁,哪一年在什么会议上发了一篇关于什么的论文。当需要回溯的时候,每篇论文能给出个大概,不具体,找起来也麻烦,以后就在这个 List 里分类整理已经读过的论文。之前读的,以及后续的一些新的有意义的论文都会慢慢补充进来。VIO 初始化和外参数标定该部分主要是 VIO系统中初始参数的确定,如相机尺度,系统初始速度,重力方向,imu bias,甚至相机和 ...

2018-09-26 16:35:58 39016 50

原创 g2o中 EdgeSE3Expmap类型Jacobian的计算

位姿优化的时候,两个顶点的类型是SE3,涉及到的误差雅克比是pose error对pose的求导,里面有些知识值得注意,故记录下来。前期准备重新翻看Ethan Eade的《Lie Groups for 2D and 3D Transformations》,发现他的文档早已有相关推导。比如针对两个SO3乘积对其中一个求导: 比如同理两个SE3乘积对其中一个求导: 上面这两个

2017-08-29 16:15:02 14322 12

原创 ubuntu 安装使用多版本opencv

ubuntu 16.04 安装了ROS kinetic,而ROS自带的是opencv3.1。之前有一个程序opencv2和opencv3效果不一样,因此决定再装一个opencv2。

2017-07-24 16:17:20 12396 4

原创 单目视觉里程计 mono vo

之前为了改动svo进行了一些不同的尝试,两个视频demo在下面。效果1视频链接: https://v.qq.com/x/page/d0383rpx3ap.html在不同数据集上测试 效果2视频链接: https://v.qq.com/x/page/k03832nd7pu.htmlvo2对着天花板,用于室内机器人 vo2在euroc数据集上,无人机从起点飞出到飞回原点,可看到轨迹中起始点闭

2017-03-12 23:18:19 24990 25

原创 Homography 知多少?

在ORB-SLAM初始化的时候,作者提到,如果场景是平面,或者近似平面,或者低视差时,我们能应用单应性矩阵(homography),这三种情形在我应用SVO的过程中颇有同感,打破了我对HH矩阵的固有映像,即只能用于平面或近似平面。但是我不知道如何去具体分析这里面的误差,比如不共面的情况时,应用HH矩阵将一个图像坐标从图像1投影到图像2时,它会落在图像哪个位置?和实际位置的误差该怎么计算?误差会有多

2017-01-13 14:39:45 54482 29

原创 DSO 中的Windowed Optimization

DSO中除了完善直接法估计位姿的误差模型外(加入了仿射亮度变换,光度标定,depth优化),另一个核心就是像okvis一样使用sliding window来优化位姿,Engel也专门用了一节来介绍它。然而对于初次接触sliding window的初学者来说,这部分论文里使用的众多专业术语,如“First Estimate Jacobians”,“Marginalization”,“Schur co

2016-12-26 11:16:53 24327 33

原创 isam2 优化pose graph

gtsam里面只有一个isam2的例子,那个例子里面没有添加位姿闭环约束,主要是视觉BA。而通过闭环优化位姿的gtsam程序主要是Pose2SLAMExample.cpp等,这种用法类似g2o,不能体现isam2的增量优化特性,因此我仿照Pose2SLAMExample里的数据写了一个增量优化位姿的isam2程序,用法上还是有isam2的特性,特别注意graph里的只有isam2优化以后新加的约束

2016-11-28 21:51:51 17236 15

原创 DSO 初探

这两天视觉SLAM界的大新闻就是Direct Sparse Odometry(DSO)开源了,小伙伴们都迫不及待的赶紧上手撩了一下,论文下载地址请戳。为了紧跟学术前沿,我们此篇文章将作为学习DSO的一个开端,和大家一起来前排感受下Prof. Cremers 门派大弟子Engel博士的新绝学。文章将分为四部分,DSO的安装,DSO在公共数据集上的运行,DSO在自己数据集上的运行,DSO在实时摄像头下

2016-11-15 21:52:14 40973 63

原创 SLAM中的marginalization 和 Schur complement

在视觉SLAM的很多论文中,会大量或者偶尔出现marginalization这个词(翻译为边缘化),有的论文是特地要用它,比如sliding window slam [2], okvis [3], dso [4]。而有的论文是简单的提到,比如g2o[1],orbslam。因此,很有必要对这个概念进行了解。

2016-10-15 23:07:30 57581 21

原创 ORB_SLAM : semi dense code

2016.9.20 update:添加论文中部分公式推导。 2016.9.9 update:完善部分代码 2016.9.7:初始博客单目摄像头的Semi Dense 听起来很美,比如有人想用这个结合机器人导航,有人用它和三维物体识别相结合,用来同时提升定位和识别率。最近对单目semi dense也有了一些想法,想先按着ORB_SLAM作者论文实现下semi dense,练练手:《Probabi

2016-09-07 23:11:11 16231 18

原创 SVO 代码笔记

SVO代码中有很多细节值得注意

2016-08-03 23:06:06 23789 24

原创 ubuntu 14.04 安装qq 2015

主要来自龍井团队的开发:论坛教程内含下载地址我的总结:在上面链接中下载WineQQ7.8-20151109-Longene.deb如果之前安装了其他了版本qq,可以先卸载: step1.找到安装版本qq的文件夹,比如/opt/longene/qq step2.打开里面的qq.sh文件,查看你安装版本的qq名package_name = wine-qq7.8-longeneteam step

2016-06-02 17:06:39 15856 10

原创 Monocular slam 中的理论基础(2)

在知道了相机的轨迹以后,使用三角法就能计算某个点的深度,在Hartley的《Multiple view Geometry》一书中 第10章、第12章都是讲的这个,这里只讲解线性求解方法。

2016-04-11 09:01:57 19271 17

原创 Monocular slam 的理论基础(1)

前言  LSD-SLAM和ORB-SLAM的出现,使得单目slam最近成为了研究热点。单目SLAM一般处理流程包括track和map两部分。所谓的track是用来估计相机的位姿。而map部分就是计算pixel的深度,如果相机的位姿有了,就可以通过三角法(triangulation)确定pixel的深度,把这些计算好深度的pixel放到map里就重建出了三维环境。 主要内容  在单目SLAM的学习过

2016-04-11 09:00:40 36241 15

原创 svo: semi-direct visual odometry 论文解析

SVO 从名字来看,是半直接视觉里程计,所谓半直接是指通过对图像中的特征点图像块进行直接匹配来获取相机位姿,而不像直接匹配法那样对整个图像使用直接匹配。整幅图像的直接匹配法常见于RGBD传感器,因为RGBD传感器能获取整幅图像的深度。   虽然semi-direct方法使用了特征,但它的思路主要还是通过direct method来获取位姿,这和feature-method不一样。同时,semi-d

2016-04-08 15:43:16 44037 32

原创 lie group and computer vision : 李群、李代数在计算机视觉中的应用

在多视角几何中,特别是在一些恢复相机运动轨迹的模型中,我们需要将相机的旋转和平移表示出来。通常情况下,我们都是在欧几里得空间中用R和t来进行相应的运算得到相机轨迹。然而,在很多论文中,作者们却喜欢用Lie algebra se(3)、so(3) 以及 Lie group SE(3)、SO(3) 之类的表示。紧接着,出现了很多术语,比如twist, tangent space,也出现了一些运算,比如e

2016-01-05 14:18:29 39201 33

原创 graph slam tutorial : g2o 的使用

下载安装g2o,怎么安装,注意安装那些库,并用优化前后的图简单介绍介绍。       g2o作为一个外接程序库在自己程序里怎么使用呢?如果不熟悉cmake的话,可以点击这里(看文章中在工程中查找和使用其他程序库的方法)以及这里。       所以要把g2o程序库文件放到自己的程序里,我们要找到g2o/cmake_modules文件夹,把.cmake文件复制到你的程序目录的modul

2015-10-12 11:06:30 41179 21

原创 graph slam tutorial :从推导到应用3

为了更好地理解graph based slam的过程,本文以二维平面的激光SLAM为例子,先简单介绍如何根据传感器信息构建图,即图优化的前端(front-end)。然后再针对上篇博客的疑问,结合matlab程序,分析图优化的后端(back-end)。

2015-10-12 11:05:25 28352 46

原创 graph slam tutorial :从推导到应用2

在上一部分中通过一个例子大致了解了graph based slam的优化过程。在本篇博客中将提升一个层次,对图优化的求解过程进行推导。由于博文关注的在图构建好以后,如何调整机器人位姿使误差最下。因此,本文主要涉及的是图优化的后端(back-end)。       我们已经知道图优化问题转变成了一个最小二乘问题。根据上篇博客最后一个例子,求机器人SLAM过程中最优轨迹可以表示成求解机器人位姿使得

2015-10-12 11:04:22 29393 30

原创 graph slam tutorial : 从推导到应用1

SLAM问题的处理方法主要分为滤波和图优化两类。滤波的方法中常见的是扩展卡尔曼滤波、粒子滤波、信息滤波等,熟悉滤波思想的同学应该容易知道这类SLAM问题是递增的、实时的处理数据并矫正机器人位姿。比如基于粒子滤波的SLAM的处理思路是假设机器人知道当前时刻的位姿,利用编码器或者IMU之类的惯性导航又能够预测下一时刻的位姿,然而这类传感器有累计误差,所以预测完以后,再将每个粒子的激光传感器数据或者图像

2015-10-12 11:03:58 57579 47

原创 航迹推演(Odometry)

做机器人底层程序的时候,经常用到航迹推演(Odometry),无论是定位导航还是普通的方向控制。航迹推演中除了对机器人位姿进行估计,另一个很重要的关系是移动机器人前进速度、转向角速度与左轮速度、右轮速度之间的转换。

2015-07-23 15:44:40 41337 12

原创 ROS 教程之 vision: 摄像头标定camera calibration

在上一个文章中,我们使用usb_cam包读入并发布了图像消息,但是图像没有被标定,因此存在畸变。ROS官方提供了用于单目或者双目标定的camera_calibration包。这个包是使用opencv里的张正友标定法,所以如果你有使用opencv标定的经验,可以直接标定,而不使用官方的程序。 官方也给出了单目的标定教程和双目视觉的标定教程。本教程基于usb_cam package 读取图像,然后使用官方例程进行标定。

2015-06-02 21:25:27 52209 25

原创 ROS : 修改ROS源代码(overlaying package)

ROS官方或者其他个人提供了很多package供大家使用,但是随着学习的深入,很多人可能想去修改这些package的源代码,ROS提供了一种称之为overlaying的机制。它允许ROS原有安装的package和你修改的package共存,譬如安装ROS的时候已经安装了用于二维SLAM的gmapping包,但是你要修改源代码,而又想保存好ROS原已安装的,ROS运行的时候还要能够找到你修改的那个package,而不是使用原装的,这时候overlaying机制就派上用场了。

2015-05-19 14:42:31 18536 9

原创 ROS 基础: 在同一个节点里订阅和发布消息

在一些应用中,可能有的人需要在同一个节点中实现订阅一个消息,然后在该消息的回调函数中处理一下这些数据后再发布到另一个topic上。

2015-05-07 21:52:38 22691 9

原创 python :使用 __getitem__ 和 __iter__ 可以使类成为一个迭代器

# -*- coding: utf-8 -*-class Library(object): def __init__(self): self.books = { 'title' : 'a', 'title2' : 'b', 'title3' : 'c', }

2015-04-17 20:10:27 4788

原创 ROS: global_planner 整体解析

在目前的ROS版本中,机器人全局路径规划使用的是navfn包,这在move_base的默认参数中可以找到base_global_planner (string, default: "navfn/NavfnROS")。而在navigation的源代码中还有一个global_planner的包,该包的源文件夹(navigation-hydro-devel\global_planner\src )下已经有了A*,Dijkstra等算法的实现。可是navfn的源程序中也有这两个算法的实现,貌似根本就没用到globa

2015-04-13 21:57:28 28875 13

原创 机器人局部避障的动态窗口法(dynamic window approach)

机器人局部路径规划方法有很多,ROS中主要采用的是动态窗口法(但是和原论文中的dwa方法不一样,具体见最后)。动态窗口法主要是在速度(v,w)空间中采样多组速度,并模拟机器人在这些速度下一定时间(sim_period)内的轨迹。在得到多组轨迹以后,对这些轨迹进行评价,选取最优轨迹所对应的速度来驱动机器人运动。该算法突出点在于动态窗口这个名词,它的含义是依据移动机器人的加减速性能限定速度采样空间在一个可行的动态范围内。

2015-04-10 19:23:54 114746 63

原创 ROS 教程之navigation: 用程序设定导航目标点

在做导航的过程中,目的地都是通过RViz界面手动设置的,很麻烦。那么能否通过程序设置目标点,让机器人自动在几个目标点之间来回循环呢?答案是肯定的,《Ros by Example volumn1》8.5.3节中也给出了答案。但是,本文给出一个更简单的例子,在机器人前方1m处设定目标点,文章内容几乎来自ROS navigation 官方wiki文档。 在进行下面的试验之前,希望你已经在自己的机器人上完成了使用move_base进行控制的任务。

2015-03-18 11:26:43 33397 23

原创 python + opencv: kalman 跟踪

之前博文中讲解过kalman滤波的原理和应用,这里用一个跟踪鼠标的例程来演示怎么在opencv里用自带的kalman函数进行目标跟踪,文章的内容对做图像跟踪有借鉴意义。文章主要是网络资源进行整理和简单解读,来源见参考。

2015-03-03 15:57:50 18770 3

原创 python + opencv: 解决不能读取视频的问题

解决python和opencv2.4不能播放视频的问题

2015-03-03 10:57:55 16226 7

原创 python : 将txt文件中的数据读为numpy数组或列表

很多时候,我们将数据存在txt或者csv格式的文件里,最后再用python读取出来,存到数组或者列表里,再做相应计算。本文首先介绍写入txt的方法,再根据不同的需求(存为数组还是list),介绍从txt读取浮点数的方法。

2015-01-08 11:11:20 186905 10

原创 ROS :为IDE配置环境变量

ROS hydro 自带安装好了opencv 2.4 为了在自己经常使用的开发环境Eric下调用,需要配置Eric的环境变量,好让它可以调用ROS的资源。1. 在 /usr/share/applications/ 文件夹下找到 eric的 桌面快键方式文件eric.desktop , 可能一开始你不确定这个文件名,可以使用下面命令进行查找: cd /usr/share/applic

2015-01-07 09:42:38 3532

原创 ROS 教程之 navigation :在 catkin 环境下创建costmap layer plugin

在做机器人导航的时候,肯定见到过global_costmap和local_costmap。global_costmap是为了全局路径规划服务的,如从这个房间到那个房间该怎么走。local_costmap是为局部路径规划服务的,如机器人局部有没有遇到行人之类的障碍。costmap就是栅格图,每个栅格里存放着障碍物信息。但是hydro里的costmap不是单独一个栅格图,而是将一个栅格图分成了很多层,

2014-12-29 21:34:20 26914 37

粒子滤波推导pdf

粒子滤波推导的博客的pdf版,详细推导了粒子滤波的由来,并且有例程代码。

2017-12-28

svo depth filter 推导补充材料

2016-07-25

李代数与计算机视觉

计算机多视角几何中经常看到李代数,指数映射之类的,和我们经常使用的旋转矩阵R不一样,这两个文档很好的说明了他们之间的关系,也可以翻看我的博文讲解http://blog.csdn.net/heyijia0327/article/details/50446140谢谢。

2016-01-03

粒子滤波代码

压缩包中有三个粒子滤波的演示程序,一个滤波,一个目标跟踪,一个机器人定位。关于效果,大家可以先看看http://blog.csdn.net/heyijia0327/article/details/41142679。再决定是否下载。

2014-11-15

空空如也

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

TA关注的人

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