kinect2的矫正

我用的是ubuntu14.04LTS,ROS 版本是indigo,kinect v2,我是用双系统装的ubuntu,关于怎么使用安装kinect2的安装以及使用的都在github上有着详细的说明

Kinect2 开源驱动:libfreenect2

kinect2--> ros的bridge:iai_kinect2

安装

安装libfreenect2,这个libfreenect2据说是它的驱动包,希望是稳定的,放在home目录下;

git clone https://github.com/OpenKinect/libfreenect2.git

安装好libfreenect2的依赖项

sudo
apt-get install build-essential cmake pkg-config libturbojpeg
libjpeg-turbo8-dev mesa-common-dev freeglut3-dev libxrandr-dev libxi-dev

安装libusb

sudo apt-add-repository ppa:floe/libusb

sudo apt-get update

sudo apt-get install libusb-1.0-0-dev

安装GLFW3

cd libfreenect2/depends

sh install_ubuntu.sh

sudo dpkg -i libglfw3*_3.0.4-1_*.deb

不要用sudo apt-get install安装glfw3,但可以用sudo apt-get remove libglfw3-dev卸载它。

所有以包形式安装的包都可以sudo apt-get remove来卸载它

接着编译库

cd ..

mkdir build && cd build

cmake ..

make

sudo make install

这时候插上kinect的数据线

运行lsusb,如果下面出现Bus 002 Device 003: ID 045e:02c4 Microsoft Corp.
Bus 002 Device 002: ID 045e:02d9 Microsoft Corp. 就说明连上了。

运行

./bin/Protonect

如果提示no device connected,是因为你的虚拟机默认设置是接usb2.0的口,而kinect v2要接usb3.0的口,所以要做出更改,但是用虚拟机装的ubuntu是连不上kinect的。

如果是要重装或是重新编译libfreenect2,则

cd

sudo rm -rf /usr/local/include/libfreenect2

cd /usr/local/lib

sudo rm -rf libfreenect2.so libfreenect2.so.0.2 libfreenect2.so.0.2.0

cd OpenNI2/Drivers

sudo rm -rf libfreenect2-openni2.so  libfreenect2-openni2.so.0

ROS接口安装

对于已经安装了Ros Indigo的Ubuntu14.04来说,使用下面的命令

cd ~/catkin_ws/src/

git clone https://github.com/code-iai/iai_kinect2.git

cd iai_kinect2

rosdep install -r --from-paths .

cd ~/catkin_ws

catkin_make -DCMAKE_BUILD_TYPE="Release"

rospack profile

rosdep install -r --from-paths .这一步可能会报错,但这个报错是正常的,不用管,不会影响最终结果。

接下来可以测试了。

新打开一个终端,运行

cd ~/catkin_ws/

catkin_make

source ./devel/setup.bash

cd src

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:

  1. 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的原始数据)
  2. create a directory for your calibration data files, for example: mkdir ~/kinect_cal_data; cd ~/kinect_cal_data(这是为了创建一个文件,存储我们用于矫正的照片)
  3. Record images for the color camera: rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 record color   (这命令就是开始矫正深度相机的RGB相机,对于后面的参数我们可以知道chess5x7x0.03(是棋盘的大小  可以用尺子量一下的) record(记录保存下下) color
  4. Calibrate the intrinsics: rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 calibrate color
  5. Record images for the ir camera: rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 record ir
  6. Calibrate the intrinsics of the ir camera: rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 calibrate ir
  7. Record images on both cameras synchronized: rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 record sync
  8. Calibrate the extrinsics: rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 calibrate sync
  9. Calibrate the depth measurements: rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 calibrate depth
  10. 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
  11. Create the calibration results directory in kinect2_bridge/data/$serial: roscd kinect2_bridge/data; mkdir 012526541941
  12. 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
  13. 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,参数一定要给准确,不然会出现错误的 啊、

而且就是在同一个文件下使用命令,

时间: 2024-08-28 08:45:35

kinect2的矫正的相关文章

Kinect2入门+opencv画骨架+骨架数据

////////////////////////////准备工作/////////////////////////////// 首先需要下载安装Kinect2的SDK,下载地址如下: https://www.microsoft.com/en-us/download/details.aspx?id=44561 建议安装时从官网下载,之前有出现过拷贝的文件无法正常安装的情况. //注意V2.0以下版本为一代Kinect所用,一代Kinect推荐V1.8 相对于一代的Kinect,二代由于SDK只出过

基于EmguCV的摄像机标定及矫正

标签: EmguCV摄像头标定C# 2015-05-03 14:55 501人阅读 评论(6) 收藏 举报  分类: C# 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 前言 之前用OpenCV做过摄像机标定及矫正,现在平台换了,改用C#,就用EmguCV做一下,其实就是OpenCV的C#版. 在EmguCV中有两类摄像机标定的类,一个是CvInvoke类,一个是CameraCalibration类,两种标定效果差不多,只不过CvInvoke涉及的函数大多都是指针类型的

双摄像头立体成像(三)-畸变矫正与立体校正

畸变矫正是上一篇博文的遗留问题,当畸变系数和内外参数矩阵标定完成后,就应该进行畸变的矫正,以达到消除畸变的目的,此其一. 在该系列第一部分的博文中介绍的立体成像原理中提到,要通过两幅图像估计物点的深度信息,就必须在两幅图像中准确的匹配到同一物点,这样才能根据该物点在两幅图像中的位置关系,计算物体深度.为了降低匹配的计算量,两个摄像头的成像平面应处于同一平面.但是,单单依靠严格的摆放摄像头来达到这个目的显然有些困难.立体校正就是利用几何图形变换(Geometric Image Transforma

KINECT2通过ROS在线跑ORBSLAM2

source ~/.bashrc export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/user/ORB_SLAM2/Examples/ROS 上面这个一定要做,否则会出错说找不到路径和包之后按照orbslam2的github::https://github.com/raulmur/ORB_SLAM2编译ros节点:1.chmod +x build_ros.sh ./build_ros.sh 确保原程序可以编译 2.打开一个终端,运行:roslaun

kinect2跑高博的orbslam2的过程(仅供自己参考记录)

首先感谢高博的无私奉献!http://www.cnblogs.com/gaoxiang12/p/5161223.html 程序所在的目录为:/home/zty/catkin_ws/src/iai_kinect2/kinect2_viewer /src/kinect2_orb.cpp为修改的程序文件 /include/目录下面的头文件即为ORB_SLAM2/目录里面的头文件, kinect2_orb.cpp中将原来的#include "orbslam2/System.h"改为现在的#in

使用Kinect2作为Oculus游戏应用的输入设备

注: 文章写于2015年8月, 目前VR游戏Demo已经完结, 所以把上一次预研的一些经验分享出来, 希望对大家有所帮助 背景 初接触Oculus时, 从网上下载了一大堆的Demo来体验, 但是, 操作体验大都比较差, 特别是FPS类. 这也让我们意识到, 对于VR游戏, 最大的挑战还不是显示方式的变化, 而是交互方式. 在一个沉浸式的环境中, 最自然的交互就是最完美的方式. 其中基本的需求, 就是可以使用双手跟VR中的虚拟环境进行交互. 这么一来, 首先键鼠或手柄就被排除掉了, 我们只好针对市

Kinect2在线重建(Tracking and Mapping)

前言      个人理解错误的地方还请不吝赐教,转载请标明出处,内容如有改动更新,请看原博:http://www.cnblogs.com/hitcm/      如有任何问题,feel free to contact me at [email protected]      接上文KinectV2+Ubuntu 14.04+Ros 安装教程,已经完成Kinect2在Ubuntu14.04以及ROS Indigo的配置.   基本介绍 贴大图如下,视频在这里 http://yun.baidu.co

通过 TouchDesigner 提取 Kinect2 的点云信息

在TouchDesigner(之后称为TD)中提取Kinect2的点云这个效果在很早之前就已经实现了.TD的灵活之处不再赘述,如果需要将大量点云(准确来讲这个案例有1920*1080=2,073,600个点)超过2M的点的深度和颜色渲染出来并到达每秒超过30帧的速度,目前我想到的方法有且只有使用TD中的GLSL shader.GLSL的优势就是在于直接使用GUP并行处理所有的点,所以在这种应用中速度要比CUP快上成千上万倍.大概方向讲清楚了,先上个图看看效果. 从kinect方面我们需要两个图像

车牌识别--倾斜矫正

在车牌识别系统中, 车牌字符能够正确分割的前提是车牌图像能够水平,以至于水平投影和垂直投影能够正常进行.如果车牌倾斜没有矫正,那么水平投影和垂直投影,甚至铆钉都无法正常处理.所以,当车辆信息中获取车牌的第一步,应该是检查倾斜角度,做倾斜矫正. 倾斜矫正,这里使用的算法: 1.倾斜角度检测: 霍夫变换 关于hough变换,可以参考前面图像处理博文: http://blog.csdn.net/liujia2100/article/details/6989693   直线检测 http://blog.