程序员必知:一起做RGB

简介: 程序员必知:一起做RGB

前言

2016.11 更新

增加了对16.04的支持。

整理了过时的代码。

  SLAM,即Simultaneous //代码效果参考:http://www.ezhiqi.com/bx/art_7579.htmlLocalization and Mapping,中文译作同时定位与地图创建,是近几十年里机器人领域有重大发展的研究方向。作为自主机器人的核心技术,SLAM在机器人导航、控制、生产等方面都有着重要的研究意义。尤其在二十一世纪,以视觉传感器为中心的视觉SLAM技术,在理论和方法上都经历了明显的转变与突破,正逐步从实验室研究迈向成熟的市场应用。在国外研究如火如荼之际,它在国内的研究尚处于起步阶段。有关SLAM的中文资料、书籍更是难以一见。然而,随着机器人技术得到国家的重视,越来越多的青年研究者、学生正逐渐跨入这片领域。本文档则试图为这些刚走进SLAM的同事们,提供一些简单而实际的参考。

  小萝卜:师兄!你上面写的都是些什么东西啊!

  师兄:都是些没什么卵用的废话啊……但是没这些东西文档就不上档次啊。

  小萝卜:师兄!你别干这些无聊的事情了!赶紧教我做SLAM啊!

  师兄:前言才写了一段,读者会觉得我在敷衍他们的吧。算了,不管了,前两天让你跑的rgbd-slam怎么样了?

  小萝卜:跑起来了!然后呢?

  师兄:然后你就可以调调参数,改改代码啥的啊。

  小萝卜:师兄!我看不懂!

  师兄:呃这个……

  小萝卜:师兄!你给我写一个SLAM程序吧!

  师兄:呃这个……

  小萝卜:赶紧写啦师兄!写完了你请我吃饭!

  师兄:吃饭啊,那好吧……

  于是,师兄就开始写这本文档了。由于师兄也不知道什么时候会写完,所以他每写一段就拿给小萝卜看(然后请他吃饭)。还好小萝卜热情很高,每次师兄给他写好的代码,都拿回去仔细看而且跑了。这也给了师兄很大动力继续往下写。

本文的目标

  本文将带领读者自己动手去写一个RGB-D SLAM程序。

  因为我相信只有通过自己写程序,才能真正懂得slam的原理。

  小萝卜:为什么要写一个SLAM程序,而不采用现有的代码呢?

  - 师兄:为了更深的理解。

一个完整的程序含有大量的算法//代码效果参考:http://www.ezhiqi.com/bx/art_1437.html 与GUI的代码,你读一遍需要多久?弄清楚原理要多久?

别人工具都做好了,代码都写完了,参数也调好了,你拿过来运行。那顶多给别人做一下评测。

你迟早要自己写代码。

  另一方面,自己写程序,不代表要用C++实现矩阵的线性代数。基本的库我们还是会用的。

  我们要用的库:OpenCV, PCL, g2o.

  还等什么?赶紧动手吧!

预备知识与编程环境

  编程环境:ubuntu 12.04。建议读者和我们使用一样或类似的环境。如果你(出于酷或者其他什么原因)就//代码效果参考:http://www.ezhiqi.com/zx/art_5974.html是要用Arch/Fedora/Mac,请你自己配环境。

  必备软件的安装:

OpenCV

推荐从源代码安装的模式。编译过程需要一点时间。

Step 1.

下载OpenCV源代码:

目前(2015.6)较好的版本是2.4系列,因为3.0系列还不完善(主要是没文档)。请把它下载到电脑上随意一个目录下。

在下载过程中,你可以安装依赖项。基本的依赖项是底下那些,直接拷贝到终端执行。

1 sudo apt-get install build-essential libgtk2.0-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy python-tk libtbb-dev libeigen2-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev

Step 2.

把OpenCV解压到下载目录中,用cmake编译再安装.

mkdir build

cd build

cmake ..

make

sudo make install

编译过程需要一点时间,长短视你机器的配置而定。慢一点的可能一下午就过去了,请顺便找点其他事干干例如看场电影之类的。

相关文章
|
9月前
|
前端开发
|
11月前
SVG RGB 与 HSL 区别与使用
SVG RGB 与 HSL 区别与使用
58 0
|
算法
关于YUV转RGB的一些理论知识
YUV与RGB转换的那点事
494 0
|
前端开发
[前端CSS高频面试题]如何画0.5px的边框线(详解)
[前端CSS高频面试题]如何画0.5px的边框线(详解)
257 0
Photoshop - CMYK 和 RGB 区别是什么?
Photoshop - CMYK 和 RGB 区别是什么?
237 0
Photoshop - CMYK 和 RGB 区别是什么?
|
传感器 编解码 算法
你真的了解眼里所见的色彩吗?(一文总结RGB/HSV/Lab)
你真的了解眼里所见的色彩吗?(一文总结RGB/HSV/Lab)
218 1
autojs颜色转换rgb与hsl互转2
autojs颜色转换rgb与hsl互转2
108 0
|
JavaScript Android开发 开发者
autojs颜色转换rgb与hsl互转
牙叔教程 简单易学
185 0
fbh
less学习——Color 函数
LESS 提供了一系列的颜色运算函数. 颜色会先被转化成 HSL 色彩空间, 然后在通道级别操作: lighten(@color, 10%); // return a color which is 10% *li...
fbh
1336 0