1、Astra相机标定

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)无法对太近的物体精确测距。原理略

image-20210909103701194

1.1、标定前准备

棋盘格(标定板)

image-20210907171706358

奥比中光相机型号与相对应的launch启动文件

Launch文件启动相机型号
astra.launchAstra,Astra S,Astra mini,Astra mini S
astraplus.launchAstra plus
astrapro.launchAstra pro
embedded_s.launchDeeyea
dabai_u3.launchDabai
gemini.launchGemini

设备查看

image-20210909092021734

深度相机ID:2bc5:0403

彩色相机ID:2bc5:0501

出现这两个ID,说明设备已连接上。

1.2、标定

启动Astra相机

查看图像话题

image-20210908215708748

启动标定节点

size:标定棋盘格的内部角点个数,例如9X6,角点一共六行九列。

square:棋盘格的边长,单位是米。

image和camera:设置摄像头发布的图像话题。

1.2.1、彩色图标定

image-20210907180204879

标定界面

X:棋盘格在摄像头视野中的左右移动

Y:棋盘格在摄像头视野中的上下移动

Size :棋盘格在摄像头视野中的前后移动

Skew:棋盘格在摄像头视野中的倾斜转动

启动成功后,将棋盘格放入画面中心,变换不同位姿。系统会自主识别,最好的情况是【X】、【Y】、【Size】、【Skew】下面的线条随着数据的收集先由红色变黄再变绿,尽可能填充满。

image-20210907183329713

点击【CALIBRATE】计算相机内参,图片越多,时间越久,等待就好。(六七十张就差不多了,太多容易卡死)

image-20210907184245152

点击【SAVE】保存不标定结果,出现最下面一行,点击【COMMIT】,退出。

image-20210908220248183

标定结束后,标定结果存在【/tmp/calibrationdata.tar.gz】,可以移动出来看看内容

解压后,里面有刚刚标定的图片,一个ost.txt文件和一个ost.yaml文件。yaml文件是我们需要的,不过还需要修改才可以使用。

1.2.2、深度图标定

启动标定节点

size:标定棋盘格的内部角点个数,例如9X6,角点一共六行九列。

square:棋盘格的边长,单位是米。

image和camera:设置摄像头发布的图像话题。

其标定过程与彩色相机标定类似,不过深度相机标定可视化没有那么直观;只是在识别的时候显示标定结果,不识别的时候一片漆黑。比较难标定。我们可以再启动深度图像查看画面内容,如果看不太清楚,就再开一个彩色图像。

image-20210909094545422

以下操作与彩色相机标定类似,变换不同位姿。系统会自主识别,最好的情况是【X】、【Y】、【Size】、【Skew】下面的线条随着数据的收集先由红色变黄再变绿,尽可能填充满。点击【CALIBRATE】计算相机内参,图片越多,时间越久,等待就好。(六七十张就差不多了,太多容易卡死)点击【SAVE】保存不标定结果,出现最下面一行,点击【COMMIT】,退出。标定结束后,标定结果存在【/tmp/calibrationdata.tar.gz】,可以移动出来看看内容

解压后,里面有刚刚标定的图片,一个ost.txt文件和一个ost.yaml文件。yaml文件是我们需要的,不过还需要修改才可以使用。