程序员必知:一起做RGB

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

前言

2016.11 更新

增加了对16.04的支持。

整理了过时的代码。

  SLAM,即Simultaneous //代码效果参考:中文译作同时定位与地图创建,是近几十年里机器人领域有重大发展的研究方向。作为自主机器人的核心技术,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

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

相关文章
|
6月前
|
JavaScript
Js 实现十六进制颜色值和RGB颜色值转换整理
Js 实现十六进制颜色值和RGB颜色值转换整理
146 0
|
15天前
|
存储 编解码 监控
RGB 和 YUV 区别
【10月更文挑战第26天】RGB和YUV在色彩表示原理、数据存储方式、应用场景以及转换关系等方面都存在着明显的区别,它们各自在不同的领域发挥着重要的作用。
|
5月前
技术笔记:SVG学习之stroke
技术笔记:SVG学习之stroke
84 0
|
6月前
|
计算机视觉
OpenCV中GRAY、HSV色彩空间的简介及与BGR色彩空间的转换演示(附源码 超详细)
OpenCV中GRAY、HSV色彩空间的简介及与BGR色彩空间的转换演示(附源码 超详细)
202 0
SVG RGB 与 HSL 区别与使用
SVG RGB 与 HSL 区别与使用
74 0
|
算法
关于YUV转RGB的一些理论知识
YUV与RGB转换的那点事
611 0
开源项目:RGB转BMP
开源项目:RGB转BMP
70 0
|
前端开发
[前端CSS高频面试题]如何画0.5px的边框线(详解)
[前端CSS高频面试题]如何画0.5px的边框线(详解)
288 0
Photoshop - CMYK 和 RGB 区别是什么?
Photoshop - CMYK 和 RGB 区别是什么?
470 0
Photoshop - CMYK 和 RGB 区别是什么?