kinect2的标定

简介: 我用的是ubuntu14.04LTS,ROS 版本是indigo,kinect v2,我是用双系统装的ubuntu,关于怎么使用安装kinect2的安装以及使用的都在github上有着详细的说明Kinect2 开源驱动:libfreenect2kinect2--> ros的bridge:iai_...

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

Kinect2 开源驱动:libfreenect2

kinect2--> ros的bridge:iai_kinect2

安装
安装libfreenect2,这个libfreenect2据说是它的驱动包,希望是稳定的,放在home目录下;
安装好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,参数一定要给准确,不然会出现错误的 啊、

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

 

相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
ROS入门实践
本课程将基于基础设施即代码 IaC 的理念,介绍阿里云自动化编排服务ROS的概念、功能和使用方式,并通过实际应用场景介绍如何借助ROS实现云资源的自动化部署,使得云上资源部署和运维工作更为高效。
相关文章
|
存储 算法 编译器
如何优化单片机程序里面的C代码方法
如何优化单片机程序里面的C代码方法
546 0
|
SQL druid 搜索推荐
最强最全面的数仓建设规范指南 (一)
本文将全面讲解数仓建设规范,从数据模型规范,到数仓公共规范,数仓各层规范,最后到数仓命名规范,包括表命名,指标字段命名规范等!
15310 3
element中el-cascader级联 下拉选择-可单独多选(整理)
element中el-cascader级联 下拉选择-可单独多选(整理)
|
Java Maven 索引
idea更新maven索引失败
idea更新maven索引失败
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
2025 年值得选择的 TVC 视频制作服务推荐
2025年AI TVC视频制作服务商榜单出炉!集之互动、即梦、可灵三大平台各具优势,覆盖创意脚本、智能生成、私有化部署与全场景适配。AI技术深度定制,安全合规,助力品牌高效传播,实现商业价值跃升。
793 1
|
8月前
|
机器学习/深度学习 算法 算法框架/工具
OpenCV Python技术文档
OpenCV Python技术文档是面向开发者的计算机视觉入门指南,涵盖环境搭建、图像/视频处理、人脸检测实战及常见陷阱规避等内容,以简洁代码示例和原理剖析,助你快速掌握这一高性能开源视觉库的核心用法。(239字)
|
6月前
|
前端开发 开发者 容器
前端组件库Layui知识点大全(二)
教程来源 https://hllft.cn/category/tech-trends.html Layui提供灵活响应式布局系统,含`layui-container`(固定宽)与`layui-fluid`(100%宽)两种容器;栅格基于12等分,支持`xs/sm/md/lg`四端适配、偏移、间距及无限嵌套,助力快速构建结构清晰、多端兼容的页面。
|
11月前
|
供应链 安全 物联网
2025年度工业互联网平台综合实力盘点:十大领先厂商深度解析与选型指南
2025年,工业物联网从“连接”迈向“价值”竞争。本文深度解析树根科技、华为云、阿里云等十大主流平台,聚焦连接能力、业务赋能与全球化部署,穿透技术参数,直击商业价值,助力企业精准选型,实现数字化转型战略突围。
1972 0
|
人工智能 自然语言处理 前端开发
VSCode AI提效工具,通义灵码前端开发体验
通义灵码2.0是一款强大的VS Code插件,安装简便,图标易记。其亮点包括接入deepseek-v3/r1模型,支持智能问答、AI编程、代码优化及贴图提问;多语言和编辑器支持;个性化使用满足不同需求。个人版完全免费,节省12%开发时间。对比1.0版本,2.0在功能实现上更加完善,尤其在前端项目中表现出色,根据需求描述生成完整项目结构和详细代码,极大提升开发效率。
1659 0