在这一小节中我们将会介绍如何使用Intel的Realsense D415相机的RGB部分进行内参的标定,除此之外也会使用笔记本电脑自带的摄像头进行标定以让每一位同学都能有机会进行操作。在给Realsense相机进行标定之前我们需要:
- 安装最新的Intel® RealSense™ SDK 2.0
- 安装Realsense与ROS通信的Package:realsense-ros
- 安装用于相机标定的Package:camera_calibration
安装依赖Package
首先是安装最新的Intel® RealSense™ SDK 2.0,可以按照官方repo的文档进行安装。首先添加注册服务器的public key,之后检查代理配置,接下来就是将服务器加入到仓库列表中安装需要的四个package即可:
sudo apt-key adv --keyserver keys.gnupg.net --recv-key C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C8B3A55A6F3EFCDE
export http_proxy="http://<proxy>:<port>"
sudo add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo xenial main" -u
sudo apt-get install librealsense2-dkms
sudo apt-get install librealsense2-utils
sudo apt-get install librealsense2-dev
sudo apt-get install librealsense2-dbg
如果需要更新一个功能包可以使用这两句命令:
sudo apt-get update
sudo apt-get upgrade
接下来是安装Realsense与ROS通信的Package:realsense-ros。首先是进入到我们ROS的工作空间中将Package的代码下载下来并切换到对应的分支,之后就是编译和进行安装:
cd ~/catkin_ws/src
git clone https://github.com/IntelRealSense/realsense-ros.git
cd realsense-ros/
git checkout `git tag | sort -V | grep -P "^d+.d+.d+" | tail -1`
cd ..
catkin_make clean
catkin_make -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Release
catkin_make install
在安装之前需要确保依赖项已经安装过,在这一节课我们假设你已经学习过前面的课程并安装了必要的功能包。如果在编译过程中出错可以直接尝试使用下面这行命令获取缺失的功能包:
sudo apt-get install ros-kinetic-缺失的功能包
在编译好之后将Realsense相机通过USB线连接到电脑上后,可以使用这行命令检查是否安装成功并驱动相机:
roslaunch realsense2_camera rs_camera.launch
出现了下面的结果就说明安装成功了:
可用rosrun rqt_image_view rqt_image_view
选择/camera/color/image_raw
查看相机收到的图像信息。需要说明的是,相机获取图像信息是有一个帧率的,如果你的计算机无法处理高帧率的图像可以在launch文件中修改color_fps
和depth_fps
等参数以防止出现溢出现象。
最后一部分就是安装用于相机标定的Package:camera_calibration。这个Package的安装可以参考ROS Wiki的内容,首先将放在Github托管的程序下载在你的ROS工作空间里,
cd ~/catkin_ws/src
git clone -b kinetic https://github.com/ros-perception/image_pipeline
cd ../
catkin_make
或者也可以简单粗暴的使用apt-get进行安装:
sudo apt-get install ros-kinetic-camera-calibration
Realsense相机标定
之后可以选择自己打印或者购买相机标定需要的标定板,本节课中我们使用的标定板型号为GP150-12*9
,有了标定板之后就可以开始进行相机标定了:
roslaunch realsense2_camera rs_camera.launch
rosrun camera_calibration cameracalibrator.py --size 11x8 --square 0.01 image:=/camera/color/image_raw camera:=/camera --no-service-check
如上面的命令所示,首先需要启动我们的realsense相机,之后再调用相机标定的程序,之后的参数分别是标定板的型号、方块的边长、图像的话题和相机的前缀。需要注意的是我们购买的标定板显示的是12*9,但是在运行程序时输入的参数size
指的是角点的数量,因此需要设置为11*8程序才能正常运行;除此之外,由于realsense相机并没有提供/set_camera_info
的服务,因此需要在参数中增加--no-service-check
,而且标定完成后的的结果只能保存而不能直接应用给相机。
如上图所示,正确运行的程序可以看到很多被彩色点标注的角点,在标定时需要按照X方向、Y方向、垂直方向也就是远近和倾斜一共四个因素移动标定板,直到每一个横条都显示为绿色时就可以点击Calibrate
计算内参矩阵了,计算需要耗时半分钟或者更久,结束之后点击Save
保存标定的结果就可以啦!标定的结果如下所示:
在ost.yaml和ost.txt中记录了相机标定得到的内参矩阵,之后我们可以在编程中使用OpenCV或其他你喜欢的工具调用这一矩阵对获得的图像进行去畸变的操作,这部分内容我们就不在本课程中进行介绍了。接下来让我们简短的介绍如何使用笔记本电脑自带的相机进行标定。
USB相机标定
首先使用下面这行命令去安装usb相机在ROS下的驱动程序:
sudo apt-get install ros-kinetic-usb-cam
通常不会出现什么问题,接下来就和之前的内容一样启动camera_calibration
程序,不过要根据usb_cam的话题消息进行一些改变:
rosrun camera_calibration cameracalibrator.py --size 11x8 --square 0.01 image:=/usb_cam/image_raw camera:=/usb_cam
之后便是一样的标定过程,需要说明的是标定计算结束并成功保存时将会出现下面的画面,保存的文件位置在/tmp/calibrationdata.tar.gz
:
总结
在本节课中我们介绍了Intel® RealSense D415相机的SDK和驱动程序的安装,ROS中相机标定程序camera_calibration的安装,演示了使用D415相机和笔记本电脑的usb相机进行内参标定的方法和注意事项。