Wiki:http://wiki.ros.org/camera_calibration
官网链接:https://orbbec3d.com/develop/
Astra相机:https://github.com/orbbec/ros_astra_camera
开发者社区:https://developer.orbbec.com.cn/download.html?id=53
由于摄像头内部与外部的一些原因会给图像带来极大的失真,主要是径向变形和切向变形,导致直线变的弯曲,离图像中心越远的像素,失真越严重。为了避免数据源造成的误差,需要针对摄像头的参数进行标定。标定本质上是借助一个已知确定的空间关系(标定板),通过分析拍照的图片像素,逆向推出相机固有且真实的参数(内参)。
红外深度相机测距的缺点 :
(1)无法对黑色物体精确测距,因为黑色物质可吸收红外线,红外线无法返回,则无法测距。
(2)无法对镜面反射物体精确测距,因为只有当深度相机处在镜面物体的中垂线上时,接收器才可接收到反射的红外线,且会导致过度曝光。
(3)无法对透明物体精确测距,因为红外线可穿过透明物体。
(4)无法对太近的物体精确测距。原理略
一个已知尺寸的大棋盘。本教程使用9x6棋盘格和20毫米正方形,标定的时候要展平。
校准使用棋盘格的内部顶点,因此“10x7”棋盘使用内部顶点参数“9x6”,如下例所示。
什么规格的标定板都可以,只不过改一下参数就好。
空旷一点的区域,没有障碍物和标定板图案
通过 ROS 发布图像的单目相机
棋盘格(标定板)
奥比中光相机型号与相对应的launch启动文件
Launch文件 | 启动相机型号 |
---|---|
astra.launch | Astra,Astra S,Astra mini,Astra mini S |
astraproplus.launch | Astra Pro plus |
astrapro.launch | Astra pro |
embedded_s.launch | Deeyea |
dabai_u3.launch | Dabai |
gemini.launch | Gemini |
设备查看
lsusb
深度相机ID:2bc5:050f
彩色相机ID:2bc5:060f
出现这两个ID,说明设备已连接上。
启动Astra相机
xxxxxxxxxx
roslaunch astra_camera astraproplus.launch
查看图像话题
xxxxxxxxxx
rostopic list
启动标定节点
xxxxxxxxxx
# 彩色图
rosrun camera_calibration cameracalibrator.py image:=/camera/rgb/image_raw camera:=/camera/rgb --size 9x6 --square 0.02
size:标定棋盘格的内部角点个数,例如9X6,角点一共六行九列。
square:棋盘格的边长,单位是米。
image和camera:设置摄像头发布的图像话题。
标定界面
X:棋盘格在摄像头视野中的左右移动
Y:棋盘格在摄像头视野中的上下移动
Size :棋盘格在摄像头视野中的前后移动
Skew:棋盘格在摄像头视野中的倾斜转动
启动成功后,将棋盘格放入画面中心,变换不同位姿。系统会自主识别,最好的情况是【X】、【Y】、【Size】、【Skew】下面的线条随着数据的收集先由红色变黄再变绿,尽可能填充满。
点击【CALIBRATE】计算相机内参,图片越多,时间越久,等待就好。(六七十张就差不多了,太多容易卡死)
点击【SAVE】保存不标定结果,出现最下面一行,点击【COMMIT】,退出。
标定结束后,标定结果存在【/tmp/calibrationdata.tar.gz】,可以移动出来看看内容
xxxxxxxxxx
sudo mv /tmp/calibrationdata.tar.gz ~
解压后,里面有刚刚标定的图片,一个ost.txt文件和一个ost.yaml文件。yaml文件是我们需要的,不过还需要修改才可以使用。
启动标定节点
xxxxxxxxxx
rosrun camera_calibration cameracalibrator.py image:=/camera/ir/image_raw --size 9x6 --square 0.02
size:标定棋盘格的内部角点个数,例如9X6,角点一共六行九列。
square:棋盘格的边长,单位是米。
image和camera:设置摄像头发布的图像话题。
其标定过程与彩色相机标定类似,不过深度相机标定可视化没有那么直观;只是在识别的时候显示标定结果,不识别的时候一片漆黑。比较难标定。我们可以再启动深度图像查看画面内容,如果看不太清楚,就再开一个彩色图像。
xxxxxxxxxx
rqt_image_view
以下操作与彩色相机标定类似,变换不同位姿。系统会自主识别,最好的情况是【X】、【Y】、【Size】、【Skew】下面的线条随着数据的收集先由红色变黄再变绿,尽可能填充满。点击【CALIBRATE】计算相机内参,图片越多,时间越久,等待就好。(六七十张就差不多了,太多容易卡死)点击【SAVE】保存不标定结果,出现最下面一行,点击【COMMIT】,退出。标定结束后,标定结果存在【/tmp/calibrationdata.tar.gz】,可以移动出来看看内容
xxxxxxxxxx
sudo mv /tmp/calibrationdata.tar.gz ~
解压后,里面有刚刚标定的图片,一个ost.txt文件和一个ost.yaml文件。yaml文件是我们需要的,不过还需要修改才可以使用。