生成点云

深度摄像机的原理

RGBD-SLAM(一)——深度摄像机

一. 使用速感M3获取RGB和Depth

用速感的demo获取彩色和深度图像,用cv::Mat存储后可以存成图片

二. 相机内参标定

深度相机内参的标定

相机标定(Camera calibration)原理
根据相机坐标系到图像坐标系之间的关系,得到的转换是由相机的内参K确定的。

内参、外参、畸变参数

再根据世界坐标系到相机坐标系,得到世界坐标系到像素坐标系之间的转换,而这个转换就是相机内参 K,相机外参 R 和 t,以及畸变参数 D 经过一系列的矩阵变换得到。

Kinect深度图和RGB的标定配准

【OpenCV】双目测距(双目标定、双目校正和立体匹配)

双目标定

深度摄像机的标定思路:用红外光照射棋盘格,遮住红外发射器,得到两个深度摄像头的红外图,再用双目标定的方法对深度摄像头进行标定。进而得到深度摄像机的内参。

深度图和RGB的配准(如果不给深度图上色,可以暂时不需要配准)

深度图像配准(Registration)原理
配准的目的就是想让深度图和彩色图重合在一起,即是将深度图像的图像坐标系转换到彩色图像的图像坐标系下。

图像配准指的是获取的两幅或多幅图像进行匹配、叠加的过程。最终需要在变换空间中寻找一种最有效的变换,这种变换能够使两幅图像之间在某种意义上达到匹配

kinect 2.0 SDK学习笔记(四)–深度图与彩色图对齐

配准的思路:根据深度摄像机和rgb相机的内参,再由同一棋盘格在两个相机坐标系上的位置计算出两个摄像头之间的R,T变换关系。从而得到rgb相机上的像素点对应于深度摄像头的像素点,再知道rgb上每个像素点的深度信息

根据相机的外参(相机相对于世界坐标系的位姿R,T)得到三维点云的世界坐标

世界坐标系:用机器人中心建立的坐标系

三. 由深度图生成点云

深度图转点云原理

代码:利用Kinect深度图像生成三维点云

参考:结合彩色图和深度图创建点云(OpenCV+OpenNI+PCL)

源码demo见savePoint项目 或者 高博的slambook的ch13章的pointcloud_mapping.cpp

读取彩色和深度图像,利用摄像头的内参生成三维的点云

三. 用生成的点云识别并去除地面

四. 将去除地面的点云视作障碍物,压到平面上和激光的栅格地图结合

地面如果是斜面如何处理?
但如果障碍物在机器人的高度之上,则可以认为机器人可以通过,并不是障碍物。

点云转换成octoMap

octoMap再转换成grid_map

目前,将自己生成的点云利用维达的grid_map demo,rviz中看不到正确的grid_map。调整参数后成功看到正确的grid_map