kinect2的标定
我用的是ubuntu14.04LTS,ROS 版本是indigo,kinect v2,我是用双系统装的ubuntu,关于怎么使用安装kinect2的安装以及使用的都在github上有着详细的说明
Kinect2 开源驱动:libfreenect2
kinect2--> ros的bridge:iai_kinect2
sudo apt-get install build-essential cmake pkg-config libturbojpeg libjpeg-turbo8-dev mesa-common-dev freeglut3-dev libxrandr-dev libxi-dev
Bus 002 Device 002: ID 045e:02d9 Microsoft Corp. 就说明连上了。
接下来可以测试了。
新打开一个终端,运行
roslaunch kinect2_bridge kinect2_bridge.launch
获取Kinect数据
再新打开一个终端,运行
rosrun kinect2_viewer kinect2_viewer
就可以正常显示图像了
一般在使用前 ,我们都会矫正,就是所谓的计算相机的内外参数,一般使用的方法都是张正友标定法的理论,理论知识就不在赘述,其实当时看都是能看懂的一旦让自己完全从头推理就懵逼了
首先呢我们的矫正步骤就是,我们得有标定模板,这如果你之前下载了iai_kinect2在kinect2_calibration文件下是有标定模板的 你可以随意打印一个模板等着后期的标定使用
那么我就按照github的教程教你如果去矫正kinect2 以下 就是github给出的具体的步骤,对于其中的参数我们一般按照要求给就OK了,对于kienct 2的标定并不需要说把红外发射器给遮住 然后使用红外LED去矫正的,这是针对kinect1的,之前我矫正过kinect1 确实是需要把红外发射装置给遮住,然后才能矫正深度信息,
Detailed steps:
- If you haven't already, start the kinect2_bridge with a low number of frames per second (to make it easy on your CPU):
rosrun kinect2_bridge kinect2_bridge _fps_limit:=2 (这一步就是要启动ROS的kienct 2的驱动货都kienct2的原始数据)
- create a directory for your calibration data files, for example:
mkdir ~/kinect_cal_data; cd ~/kinect_cal_data(这是为了创建一个文件,存储我们用于矫正的照片)
- Record images for the color camera:
rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 record color (这命令就是开始矫正深度相机的RGB相机,对于后面的参数我们可以知道
chess5x7x0.03(是棋盘的大小 可以用尺子量一下的) record(记录保存下下) color
) - Calibrate the intrinsics:
rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 calibrate color
- Record images for the ir camera:
rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 record ir
- Calibrate the intrinsics of the ir camera:
rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 calibrate ir
- Record images on both cameras synchronized:
rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 record sync
- Calibrate the extrinsics:
rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 calibrate sync
- Calibrate the depth measurements:
rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 calibrate depth
- Find out the serial number of your kinect2 by looking at the first lines printed out by the kinect2_bridge. The line looks like this:
device serial: 012526541941
- Create the calibration results directory in kinect2_bridge/data/$serial:
roscd kinect2_bridge/data; mkdir 012526541941
- Copy the following files from your calibration directory (~/kinect_cal_data) into the directory you just created:
calib_color.yaml calib_depth.yaml calib_ir.yaml calib_pose.yaml
- Restart the kinect2_bridge and be amazed at the better data.
还要好多就不在写了
通常遇到最多的就是这种问题,但是这个问题并不影响我们的矫正
[ERROR] Tried to advertise a service that is already advertised in this node [/kinect2_calib_1458721837266890808/compressed/set_parameters]
[ERROR] Tried to advertise a service that is already advertised in this
node [/kinect2_calib_1458721837266890808/compressed/set_parameters]
真正影响我们的是我们输入的参数 比如ROS的开发包给例子是使用棋盘格6*8的棋盘,正方形的边长为0.03米 但是我们的棋盘可能并并不是那么小的,这时候要使用我们的
棋盘的话就要注意给的参数了。比如用的是长有9个,款有7个正方形的标定棋盘,这时候我们的参数是6*8*0.05,参数一定要给准确,不然会出现错误的 啊、
而且就是在同一个文件下使用命令,