大家好!
我想分享一下我使用d435 型英特尔实感摄像头的经验。 如您所知,许多机器视觉算法都需要对相机进行初步校准 。 碰巧的是,在我们的项目中,我们使用ROS来构建自动化智能系统的各个组件。 但是,在研究了俄语语言的互联网之后,我没有找到关于该主题的任何明智的教程。 本出版物旨在填补这一空白。
软件先决条件
由于ROS在Unix系统上工作,因此我假设我们有Ubuntu 16.04系统可用。 我将不描述详细的安装细节,仅提供相应教程的链接。
- OpenCV2。 如何安装 。
- OpenCV-Python。 这里的一切都很简单:
sudo apt-get install python-opencv
安装RealSense驱动程序
- 首先,您需要安装相机的驱动程序 。
- 相机的ROS套件在这里 。 在发布时,最新版本为2.0.3。 要安装该软件包,您需要下载源代码并将其解压缩到ROS主目录中。 接下来,我们将需要安装它:
catkin_make clean catkin_make -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Release catkin_make install echo "source path_to_workspace/devel/setup.bash" >> ~/.bashrc source ~/.bashrc
测试相机
安装摄像机之后,我们需要确保驱动程序能够正常工作。 为此,我们通过USB连接相机并运行演示:
roslaunch realsense2_camera demo_pointcloud.launch
此命令将打开ROS可视化效果,您可以在其中看到在主题/camera/depth/color/points
注册的点云 :

相机校准
下面是OpenCV教程的改编版本。
import numpy as np import cv2 import glob
为了使此脚本正常工作,我们至少需要从相机接收10张棋chess图像。 为此,我们可以使用例如image_view ROS程序包或任何其他可以从USB摄像机获取屏幕截图的程序。 捕获的图像应放置在任何文件夹中。 图片示例:

执行脚本后,校准结果将保存到文件中
calibration.npy
。 然后可以将这些数据与以下脚本一起使用:
calibration_data = np.load('path_to_images/calibration.npy') mtx = calibration_data[0] dist = calibration_data[1] rvecs = calibration_data[2] tvecs = calibration_data[3]
结论
我们能够使用OpenCV2和ROS成功校准RealSense d435摄像机。 校准结果可用于跟踪对象,ruco标记,增强现实算法等许多应用中。 在下一篇文章中,我将详细介绍如何跟踪aruco标记。