一、2D相机介绍
2D 相机只能获取像素尺度下的 2D 平面图像信息,所以称为 2D 相机。仙工智能目前适配了多种 2D 相机供客户选择使用。相比较于一般的 2D 相机,工业相机搭载优异的图像传感器,动态范围高,信噪比好,图像质量优异,故被仙工智能选择在项目上使用。
型号 | 分辨率 | 输出频率 | 通讯接口 | 是否为工业相机 | 用途 |
---|---|---|---|---|---|
海康 | 2448×2048 | 网口 | 是 | 识别 | |
大恒 | 2448×2048 | 网口 | 是 | 识别 | |
通用USB相机 | 1920×1080 | USB | 否 | 研发测试 |
二、2D相机成像原理
相机将三维世界中的坐标点(单位为米)映射到二维图像平面(单位为像素)的过程能够用一个几何模型进行描述。这个模型有很多种,其中最简单的称为针孔模型。针孔模型是很常用,而且有效的模型,它描述了一束光线通过针孔之后,在针孔背面投影成像的关系。在初中物理课堂上,我们可能都见过一个蜡烛投影实验:在一个暗箱的前方放着一支点燃的蜡烛,蜡烛的光透过暗箱上的一个小孔投影在暗箱的后方平面上,并在这个平面上形成了一个倒立的蜡烛图像。在这个过程中,小孔模型能够把三维世界中的蜡烛投影到一个二维成像平面。
三、内参说明
根据本章第一节中小孔成像原理,可以得知真实世界的物体通过如下公式的转换到像素平面,其中 u 和 v 代表着在像素平面的坐标,(X, Y, Z) 为真实世界的坐标,用 P 表示,那么公式中的K 就被称为时内参矩阵。
参数名称 | 参数位置 | 单位 | 默认值 | 最小值 | 最大值 | 支持版本 |
---|---|---|---|---|---|---|
fx | 模型文件-camera | 像素 | 0 | — | — | 3.3.4.20~latest |
以像素为单位的焦距 | ||||||
fy | 模型文件-camera | 像素 | 0 | — | — | 3.3.4.20~latest |
以像素为单位的焦距 | ||||||
cx | 模型文件-camera | 像素 | 0 | — | — | 3.3.4.20~latest |
相机光轴在图像坐标系中 x 轴方向的偏移量 | ||||||
cy | 模型文件-camera | 像素 | 0 | — | — | 3.3.4.20~latest |
相机光轴在图像坐标系中 y 轴方向的偏移量 |
理想情况下 fx 和 fy 是相等的,根据小孔成像原理可以的出来一个关于焦距 f 的方程式,但是图片存在宽和高,从两个方向来计算就会得到两个 f ,理想情况下宽高的比例是不变的,所以两个方程式求出的 f 也是相同的,然而在现实中,两个 f 求出来会有细微的差距。
四、 畸变
为了获得好的成像效果,我们在相机的前方加了透镜。透镜的加入对成像过程中光线的传播会产生新的影响: 一是透镜自身的形状对光线传播的影响,二是在机械组装过程中,透镜和成像平面不可能完全平行,这也会使得光线穿过透镜投影到成像面时的位置发生变化。由透镜形状引起的畸变称之为径向畸变。在针孔模型中,一条直线投影到像素平面上还是一条直线。可是,在实际拍摄的照片中,摄像机的透镜往往使得真实环境中的一条直线在图片中变成了曲线①。越靠近图像的边缘,这种现象越明显。由于实际加工制作的透镜往往是中心对称的,这使得不规则的畸变通常径向对称。它们主要分为两大类,桶形畸变和枕形畸变,如下图所示。
桶形畸变是由于图像放大率随着离光轴的距离增加而减小,而枕形畸变却恰好相反。在这两种畸变中,穿过图像中心和光轴有交点的直线还能保持形状不变。除了透镜的形状会引入径向畸变外,在相机的组装过程中由于不能使得透镜和成像面严格平行也会引入切向畸变。如下图所示:
参数名称 | 参数位置 | 单位 | 默认值 | 最小值 | 最大值 | 支持版本 |
---|---|---|---|---|---|---|
k1 | 模型文件-camera | — | 0 | — | — | 3.3.4.20~latest |
径向畸变修正参数 | ||||||
k2 | 模型文件-camera | — | 0 | — | — | 3.3.4.20~latest |
径向畸变修正参数 | ||||||
k3 | 模型文件-camera | — | 0 | — | — | 3.3.4.20~latest |
径向畸变修正参数(可选) | ||||||
k4 | 模型文件-camera | — | 0 | — | — | 3.3.4.20~latest |
径向畸变修正参数(可选) | ||||||
k5 | 模型文件-camera | — | 0 | — | — | 3.3.4.20~latest |
径向畸变修正参数(可选) | ||||||
k6 | 模型文件-camera | — | 0 | — | — | 3.3.4.20~latest |
径向畸变修正参数(可选) | ||||||
p1 | 模型文件-camera | — | 0 | — | — | 3.3.4.20~latest |
切向畸变修正参数 | ||||||
p2 | 模型文件-camera | — | 0 | — | — | 3.3.4.20~latest |
切向畸变修正参数 |
通常认为,相机的内参在出厂之后是固定的,不会在使用过程中发生变化。有的相机生产厂商会告诉你相机的内参,而有时需要自己确定相机的内参,也就是所谓的相机内参标定。仙工智能提供了自动化的相机内参标定算法,具体使用步骤请参考二级文档。
五、通信
仙工智能可以支持以太网和 USB 两种模式通信的相机,目前我们主要使用以太网方式的相机。
注意:目前我们强烈不推荐使用 USB 的相机,主要有两方面的原因:
- USB 的相机连接容易松动,会偶发性地出现断连的情况
- 针对大数据的传输,USB 相机的速率不一定能达到要求
下面是以太网相机的配置参数:
参数名称 | 参数位置 | 单位 | 默认值 | 最小值 | 最大值 | 支持版本 |
---|---|---|---|---|---|---|
ip | 模型文件-laser | — | 192.168.192.100 | — | — | 3.3.4.20~latest |
激光雷达的ip(一般设置为192.168.192.网段) | ||||||
port | 模型文件-laser | — | 2111 | 0 | 9999 | 3.3.4.20~latest |
端口号 |
六、2D 相机配置参数
为了更方便的使用 2D 相机,仙工智能提供了一系列可以配置的参数。通过配置这些参数,可以实现在不同场景下使用。
参数名称 | 参数位置 | 单位 | 默认值 | 最小值 | 最大值 | 支持版本 |
---|---|---|---|---|---|---|
3Dcamera | 模型文件-camera | — | false | — | — | 3.3.4.20~latest |
如果是 3D 相机,选用;2D 相机不选用。 | ||||||
isUpside | 模型文件-camera | — | true | — | — | 3.3.4.20~latest |
若相机正装,则勾选。 | ||||||
isInArm | 模型文件-camera | — | false | — | — | 3.3.5.20~latest |
若相机是在复合机器人的机械臂上使用,则勾选。 | ||||||
isRealShow | 模型文件-camera | — | false | — | — | 3.3.5.20~latest |
若需要实时显示相机画面,则勾选。 |
七、外参
仙工智能规定相机的正交坐标系遵循右手定理,前方为 z 轴,右方为 x 轴,下方为 y 轴,见本章第一节中的成像示意图 。
相机观测物体的位置是以相机为坐标系中心得到的,需要将这些物体坐标转换到车体的坐标系下,在这种情况下需要知道相机在车体下的安装位置以得到相机坐标系与车体坐标系的相对位置,即相机的外参。
仙工智能通过自动化标定可以得出相机的外参,这部分的原理请参考标定章节。对于普通相机来说,外参需要知道六个参数:
参数名称 | 参数位置 | 单位 | 默认值 | 最小值 | 最大值 | 支持版本 |
---|---|---|---|---|---|---|
x | 模型文件-laser | m | 0 | -99 | 99 | 3.3.4.20~latest |
相机在车体坐标系下x轴方向的值 | ||||||
y | 模型文件-laser | m | 0 | -99 | 99 | 3.3.4.20~latest |
相机在车体坐标系下y轴方向的值 | ||||||
z | 模型文件-laser | m | 0 | -99 | 99 | 3.3.4.20~latest |
相机在车体坐标系下z轴方向的值,该值无关紧要 | ||||||
roll | 模型文件-laser | ° | 0 | -180 | 180 | 3.3.4.20~latest |
相机在车体坐标系下 x 轴的角度偏移值 | ||||||
pitch | 模型文件-laser | ° | 0 | -180 | 180 | 3.3.4.20~latest |
相机在车体坐标系下 y 轴的角度偏移值 | ||||||
yaw | 模型文件-laser | ° | 0 | -180 | 180 | 3.3.4.20~latest |
相机在车体坐标系下 z 轴的角度偏移值 |
八、报警码
仙工智能在使用 2D 相机的时候定义了一些报警码,以便在使用过程中出现问题通过报警码可以快速定位:
当相机没有连接上时,会触发连接失败的报错,具体如下:
Error52100
提示:can't connect with camera
触发条件:
- 相机未上电;
- 相机故障;
- 相机 ip 或者 port 不正确;
- 通讯线故障。
解决方式:
- 检查相机的状态;
- 通讯线是否畅通;
- 检查 IP 和 port 是否设置正确。
当相机出现接收不到数据,会触犯断联的报错,具体如下:
Error52103
提示:cannot receive camera data
触发条件:
- 相机未上电;
- 相机故障;
- 相机 ip 或者 port 不正确;
- 通讯线故障。
解决方式:
- 检查相机的状态;
- 通讯线是否畅通、;
- 对于采用 UDP 传输的,需要检查 IP 和 port 是否设置正确。