KinectV2标定

时间:2018-12-24
本文章向大家介绍KinectV2标定,主要包括KinectV2标定使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

KinectV2的一些参数

1.硬件组成&参数
彩色摄像机:

19201080;30 or 15 FPS;多种图像格式可选(例如:RGBA–.png;YUV–MPEG压缩)
2.红外投影机:
主动投射近红外光谱,生成可被红外摄像机读取的激光散斑;
512
424;30 FPS;每像素16bit
3.深度(红外)摄像机:
测量范围:0.5 ~ 4.5 m;
每像素16bit(该数据表示从深度摄像机到该物体的距离,单位:mm)

*备注:彩色点和深度图点的坐标系原点均为左上角
*参考:
https://wenku.baidu.com/view/cd21be3149d7c1c708a1284ac850ad02de8007cd.html?re=view

使用iai_kinect2標定过程

https://github.com/code-iai/iai_Kinect2

采集Kinect2的图像
cd ~/catkin_ws/

*确认配置环境
source devel/setup.bash //如果在用户配置文件中gedit ~/.bashrc中改变了其内容,则运行前需要再运行该句配置一遍,否则执行下句时会出现BUG

运行roslaunch
roslaunch kinect2_bridge kinect2_bridge.launch

打开一个新终端,显示图像
rosrun kinect2_viewer kinect2_viewer sd cloud//查看点云图512424
rosrun kinect2_viewer kinect2_viewer//和上面指令功能一样?QHD:960
540

保存图片
单击图片+按空格键----默认自动保存在catkin_ws文件夹中

採用QHD分辨率使用kinect2_calibration
参考:https://hk.saowen.com/a/6a4c27b2513f41ddf7017e4e789ba2bd1ff49c956ebb69951faffcd04998fc91
1.修改kinect2_calibration.cpp文檔如下:
a)K2_TOPIC_HD 改為 K2_TOPIC_QHD
b)把文檔中涉及到分辨率1920x1080都改成960x540,這一步非常重要,不然校正出來的內參還是按照HD分辨率進行校正

2.編譯進程
cd ~/catkin_ws
catkin_make -DCMAKE_BUILD_TYPE=“Release”
參考“http://www.bubuko.com/infodetail-2151412.html”

参考:http://www.mamicode.com/info-detail-1886444.html
1311-1313这三行命令:
std::string topicColor = “/” + ns + K2_TOPIC_HD + K2_TOPIC_IMAGE_MONO;
std::string topicIr = “/” + ns + K2_TOPIC_SD + K2_TOPIC_IMAGE_IR;
std::string topicDepth = “/” + ns + K2_TOPIC_SD + K2_TOPIC_IMAGE_DEPTH;

正好和上面的输出信息:
Topic color: /kinect2/hd/image_mono
Topic ir: /kinect2/sd/image_ir
Topic depth: /kinect2/sd/image_depth
对应,因此把 K2_TOPIC_HD 改为 K2_TOPIC_QHD 即可。保存。然后重新编译

** 相机外参 Vs 手眼标定
相机外参:是相机坐标系和世界坐标系之间的对应关系;
手眼标定:是相机和机械手之间的关系。
如果将世界坐标系和机械手坐标系重合?

标定之后呢,会得到kinect2彩色头、深度头、红外头的内参和外参,它们都以(万恶的)yaml模式存储在你的机器内。kinect2_bridge会自动检测你的标定文件,对深度图进行校正。之后slam过程主要使用彩色头的内参哦!