ubuntu20.04安装IAI Kinect2 for OpenCV 4

在尝试使用iai_kinect2对kinectv2进行标定时遇到错误,包括re-projectionerror过大和OpenCV相关异常。为了解决问题,作者参考了一个兼容opencv4的fork仓库并进行安装。在编译过程中遇到了两个错误,分别是缺少python3-empy模块和PCL的C++标准问题。通过指定Python执行路径和修改CMakeLists.txt文件解决了这些问题。最终成功运行kinect2_bridge和kinect2_viewer来查看相机画面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装

安装iai_kinect2之前先安装kinect v2的驱动libfreenect2,相关教程看这篇博客
之前写过安装iai_kinect2的教程,但是该库在进行kinect v2标定的时候会出现下面的问题,详情看issue

When I run: rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 calibrate sync, it displays [INFO] [CameraCalibration::calibrateExtrinsics] re-projection error: 6.92399e-310
[INFO] [CameraCalibration::calibrateExtrinsics] Rotation:
[]
[INFO] [CameraCalibration::calibrateExtrinsics] Translation:
[]
[INFO] [CameraCalibration::calibrateExtrinsics] Essential:
[]
[INFO] [CameraCalibration::calibrateExtrinsics] Fundamental:
[]

When I run: rosrun kinect2_calibration kinect2_calibration chess5x7x0.03 calibrate depth
Error:
[INFO] [DepthCalibration::calibrate] frame: ./0000_depth.png
terminate called after throwing an instance of'cv::Exception'
what(): OpenCV(4.2.0) ../modules/calib3d/src/calibration.cpp:259: error: (-5:Bad argument) Input argument is not a valid matrix in function'cvRodrigues2'
Abandoned (core dumped)

该issue中给出能够在opencv4.x成功标定的fork仓库,所以下面直接安装该仓库

cd ~/catkin_ws/src/
git clone https://github.com/paul-shuvo/iai_kinect2_opencv4.git
cd iai_kinect2_opencv4
rosdep install -r --from-paths .
cd ~/catkin_ws
catkin_make -DCMAKE_BUILD_TYPE="Release" 

编译的时候会报错,下面列出解决办法

错误1:Unable to find either executable ‘empy’ or Python module ‘em’… try installing the package ‘python3-empy’

这是因为catkin找的python版本为anaconda下面的版本,所以需要改为指定采用下面的命令

catkin_make -DCMAKE_BUILD_TYPE="Release"  -DPYTHON_EXECUTABLE=/usr/bin/python3

错误2:pcl_conversions build error: PCL requires C++14 or above

在下面对应的包里面的Cmakelist.txt 的第一行加上set( CMAKE_CXX_STANDARD 14)再重新编译
image.png

验证
cd ~/catkin_ws
source devel/setup.bash
roslaunch kinect2_bridge kinect2_bridge.launch

现在就可以成功运行了(如果不成功开一个新窗口运行一下roscore试试?),现在只是搭好桥bridge,还需要通过以下命令看到相机画面

rosrun kinect2_viewer kinect2_viewer kinect2 sd cloud
### ROS Noetic Calibration 安装教程及相关方法 #### 1. 安装依赖项 在安装 `calibration` 工具之前,需确保已正确设置 ROS 环境并完成必要的依赖包安装。可以通过以下命令来安装所需的依赖工具: ```bash sudo apt update sudo apt install python3-catkin-tools ros-noetic-cmake-modules rosdep init rosdep update ``` 对于特定项目中的依赖关系,可运行如下命令以自动解析和安装缺失的依赖[^1]。 ```bash rosdep install --from-paths src --ignore-src --rosdistro noetic -y ``` --- #### 2. 编译 cam_lidar_calibration 软件包 如果需要实现相机与激光雷达之间的标定功能,则可以参考 `cam_lidar_calibration` 的编译过程。此软件包适用于 ROS Noetic 版本,并提供了完整的标定流程支持[^2]。 克隆源码至工作空间后执行以下操作: ```bash cd ~/catkin_ws/src git clone https://github.com/your-repo/cam_lidar_calibration.git cd .. catkin_make source devel/setup.bash ``` 上述步骤完成后即可启动节点进行测试。 --- #### 3. 使用 Kinect v2 进行标定 针对 Kinect V2 设备,在 Ubuntu 20.04 和 ROS Noetic 下可能会遇到一些兼容性问题。例如,错误提示 `'CV_IMWRITE_PNG_COMPRESSION' was not declared in this scope` 表明 OpenCV版本不匹配或未正确定义宏变量[^4]。 解决办法之一是更新本地 OpenCV 至最新稳定版 (建议使用 OpenCV 4.x),或者修改代码文件 `/home/lwc/catkin_ws/src/iai_kinect2/kinect2_calibration/src/kinect2_calibration.cpp` 中第 113 行的内容为更通用的形式: ```cpp // 替代原参数定义方式 int compressionLevel = 9; // PNG 压缩级别范围通常为 0~9 params.push_back(compressionLevel); ``` 重新构建工程后再尝试运行程序。 --- #### 4. MoveIt! 配置与仿真环境搭建 当涉及机械臂运动规划时,MoveIt 是一个强大的框架选项。为了将其集成到 ROS Noetic 并用于实际应用案例中,可以从官方仓库获取资源[^3]: ```bash cd ~/catkin_ws/src git clone https://github.com/kinovarobotics/kinova-ros.git cd .. rosdep install --from-paths src --ignore-src --rosdistro noetic -y catkin_make source devel/setup.bash ``` 随后按照文档指引创建自定义配置文件以及虚拟场景描述模型。 --- #### 总结 通过以上介绍的方法能够顺利完成基于 ROS Noetic 的多种传感器联合标定任务及其关联开发需求。无论是摄像头、LiDAR 数据融合还是机器人动作控制领域均具备较强适用价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值