没有合适的资源?快使用搜索试试~ 我知道了~
永久更新链接:相关代码及数据:https://github.com/zsirui/slam-python.git第一篇:从图像到点云(Python 版)原文链接
资源详情
资源评论
资源推荐
用 python 学习 rgbd-slam
最近开始学习 ros,然后搜索 slam 教程,看到高翔大神写的《一起做 rgbd-slam》系列,
很有启发,也很佩服,但是高翔大神用的都是 c++,本人比较喜欢 python,所以想把文章中
的代码改成 python 版本,也好记录一下自己的学习心得。
原文链接:
高博博客:
http://www.cnblogs.com/gaoxiang12/tag/%E4%B8%80%E8%B5%B7%E5%81%9ARGB-
D%20SLAM/
ROSClub 链接: http://rosclub.cn/portal.php?mod=list&catid=9&page=7
时间规划:
《一起做 rgbd-slam》高博原文一共 9 篇,加上我个人水平有限,数学也不高,所以前
期先做原文代码验证及其自己补充学习,有些可能写的不对,这个也在所难免,所以预计时
间为一个月,大概从 2017 年 2 月 10 日-2017 年 3 月 30 日,这里先立一个 flag,万一呢。
永久更新链接:
ROSClub:http://www.rosclub.cn
相关代码及数据:https://github.com/zsirui/slam-python.git
第一篇:从图像到点云(Python 版)
原文链接:
http://www.cnblogs.com/gaoxiang12/p/4652478.html
http://rosclub.cn/post-75.html
0x00 准备
软件:ubuntu14.04、ros-indigo-desktop-full、python2.7、pip 等
硬件:asus xtion pro、电脑
依赖库:OpenCV(强烈建议使用 3.0 以上版本,本教程所有代码使用的是 OpenCV3.2.0 版)、
Numpy、PCL
依赖库安装:
pip:sudo apt-get install python-pip
OpenCV:
(1)如果安装了 ros,用自带的就可以
(2)编译安装 OpenCV(推荐使用)
编译安装步骤(参考地址:http://www.cnblogs.com/asmer-stone/p/5089764.html)
1.依赖关系:
GCC 4.4.x or later
CMake 2.8.7 or higher
Git
GTK+2.x or higher, including headers (libgtk2.0-dev)
pkg-config
Python 2.6 or later and Numpy 1.5 or later with developer packages (python-dev, python-
numpy)
ffmpeg or libav development packages: libavcodec-dev, libavformat-dev, libswscale-dev
[optional] libtbb2 libtbb-dev
[optional] libdc1394 2.x
[optional] libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev, libdc1394-22-dev
注:官方文档中虽然说其中一些依赖包是可选的,但是最好还是都装上,以防出问题。
以上依赖包可使用以下命令安装:
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev
libjasper-dev libdc1394-22-dev
2.安装 cmake-gui(用于生成 OpenCV 编译文件):
sudo apt-get install cmake-gui
3.下载 OpenCV 源代码:
可以从 OpenCV 官网直接下载:http://opencv.org/downloads.html
也可以使用 git 命令行直接 clone:
cd ~/<my_working_directory> //比如工作目录为 opencv 即,cd ~/opencv
git clone https://github.com/Itseez/opencv.git
git clone https://github.com/Itseez/opencv_contrib.git
进入 OpenCV 源代码目录,创建 build 文件夹:
cd ~/<my_working_directiory>/opencv
mkdir build
使用 cmake-gui 生成编译文件:
打开 cmake-gui 后,在 source code 栏选择 OpenCV 源 代 码 所 在 目 录 ( 例 如 :
/home/username/workplace/opencv),在 build 栏中填写刚才新建的 build 文件夹(例如:
/home/username/workplace/opencv/build)如下图所示:
点击 Configure 按钮,会弹出如下图所示的提示框,点击 Finish 按钮即可:
接下来 cmake 会检查所有依赖库以及其他各可选部分版本,这个过程中 cmake 会下载一个
名为 ippicv 的库,但经常会出现下载失败而导致 configure 失败,建议手动下载(下载地
址:
https://raw.githubusercontent.com/Itseez/opencv_3rdparty/81a676001ca8075ada498583e4166
079e5744668/ippicv/ippicv_linux_20151201.tgz)后放入
/home/username/workplace/opencv/3rdparty/ippicv/downloads/linux-
808b791a6eac9ed78d32a7666804320e 文件夹中。检查完毕后需要修改
OPENCV_EXTRA_MODULES_PATH 内容,如下图所示:
修改完后再点击 Configure 按钮,如果依旧有红色高亮显示条目,则再次点击 Configure 按
钮,等待所有条目均不再高亮显示后点击 Generate 按钮,退出 cmake-gui 程序,在命令行里
进入/home/username/workplace/opencv/build 目录,输入以下命令:
make -j8
sudo make install
sudo ldconfig
[注] 建议勾选 BUILD_EXAMPLE 选项,选用了不同的摄像头时需要先对摄像头进行标定,
OpenCV 示例中有提供标定程序。
Numpy:pip install numpy (可能需要管理员权限)
PCL:先安装基本 pcl 库,再去 git 上下载 python 版 pcl 接口
步骤:(Ubuntu 下,其他 Linux 发行版本安装办法参见:
http://pointclouds.org/downloads/linux.html)
1) 通过 PPA 安装完整 PCL 库
sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl
sudo apt-get update
sudo apt-get install libpcl-all
2) 安装 python-pcl
在 github 上下载 python-pcl(地址:https://github.com/strawlab/python-pcl)
解压后进入 python-pcl 目录,输入命令:sudo python setup.py install 即可,如果报错,可能
缺少依赖库。使用命令 sudo pip install cython 安装 python-pcl 的依赖库后再执行安装命令即
可。
在 ROS 中,我们输入以下命令可以让 kinect 运行:
roslaunch openni_launch openni.launch
如果 kinect 连接在电脑上,可以通过输入下面命令:
rosrun image_view image_view image:=/camera/rgb/image_color
这样在启动起来的 rviz 界面中就可以看到 kinect 获取的图像信息
不 过 , 如 果 手 头 没 有 kinect , 可 以 使 用 下 面 提 供 的 两 张 图 片 ( 来 源 :
http://www.cnblogs.com/gaoxiang12/p/4652478.html)来作为测试数据使用,改组图片的相机
内参矩阵为
或者使用自己手中深度摄像头获取的图片信息来作为测试数据使用(需要提前对摄像头进行
标定):
这里的两张图片中,左边是 RGB 数据图片,右边的是深度数据图片
接下来,我们将编写一段 python 脚本将这两张图片数据转换成 3D 点云数据。
0x01 获取相机内参矩阵(标定相机)
不同的深度摄像头具有不同的特征参数,在计算机视觉里面,将这组参数成为相机的内参矩
阵 C。格式为:
其中,
f
x
,
f
y
指相机在
x
轴和
y
轴上的焦距,
c
x
,
c
y
是相机的光圈中心,这组参数是摄像头生
产制作之后就固定的。获取这组参数,只有通过相机标定。
首先,在一张 A4 大小的纸上打印 86 的黑白棋盘格作为标定板,使用摄像头拍摄不同角度
的带有完整标定板的图片,数量在 1020 张之间,图片上一定要能够完整识别黑白格的边
界交点。将 OpenCV 中编译好的示例程序中的 cpp-example-calibration 和 cpp_example-
imagelist-creator 的二进制程序(二进制程序保存在<opencv_source>/build/bin 下)复制到图
片目录中,在终端中切换到图片目录,输入以下命令:
./cpp_example_imagelist_creator image_list.xml *.png
./cpp_example_calibration -w=7 -h=5 -n=12 -o=camera.yml -op -oe image_list.xml
第一条命令是用于生成标定程序所需的图片列表,图片信息保存在 image_list.xml 中;第二
条命令是根据图片列表进行标定,-w 表示标定板横向有 7 个交点,-h 表示纵向有 5 个交点,
-n 表示图片一共有 12 张,-o 是输出文件保存在 camera.yml 中,-op 和-oe 是将检测到的点
和相机外参一并输出到文件中。camera.yml 文件内容如下(完整文件数据内容过长,省略部
分数据):
%YAML: 1.0
---
calibration_time: "Wed 08 Mar 2017 09:35:01 AM CST"
nframes: 12
image_width: 640
image_height: 480
board_width: 7
board_height: 5
square_size: 3.2869998931884766e+01
aspectRatio: 1.
flags: 2
剩余53页未读,继续阅读
英次
- 粉丝: 20
- 资源: 306
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0