一、 二维码定位的原理
本教程适用于使用仙工智能 SRC 控制器,并安装下视读码相机的移动机器人。
利用地面二维码定位,是移动机器人的一种常规定位方式。首先,需要提前在环境地面上布置好二维码,每个二维码都有其全局唯一 ID,并和场景的平面物理坐标绑定。当机器人的下视读码相机拍摄到二维码,通过解析其码标信息、以及相机与二维码的位置和角度偏差,机器人可以获取到当前时刻在全局的坐标和朝向。
在场景中布置好二维码,生成二维码地图之后,Roboshop 中的地图将如下所示:
当机器人运动路径经过二维码,利用视觉读码器就可以读取到机器人相对于二维码的偏差,对当前机器人的位置进行纠正,在两个二维码之间的路径上,机器人利用本身的里程和 IMU 数据融合进行相对定位。
二、读码相机介绍
2.1 原理说明
读码相机的本质也是一个相机,只是我们没有从这个相机中获取原始数据,而是直接获取了识别二维码的结果:
- 相机相对于二维码,X、Y 两个方向偏移量,以及角度偏移量。
- 二维码 tag 的 ID 号。
注意:PGV 仅仅只是倍加福的二维码相机产品,其他供应商也有类似功能产品。目前以 PGV 取代二维码相机的说法是不准确的。
2.2 选型对比
品牌 | 型号 | 接口 | 补光方式 | 安装高度 (扫码器距二维码的距离) | 精度误差 (x,y坐标/角度) | 支持控制器 | 推荐程度 | 使用注意事项 |
---|---|---|---|---|---|---|---|---|
倍加福 | PGV100-F200A-R4-V19 | RS485 (支持单总线多设备) | 自带光源,白色可见光 | 100 mm ± 20 mm | ±0.2mm / ±0.1° | SRC-800/2000/3000 | 中 | 只支持倍加福 tag 4x4 标签标准版本八个数字 |
倍加福 | PGV100R-F200-R4-1,5M | RS485 (支持单总线多设备) | 自带光源,红色可见光 | 100 mm ± 30 mm | ±0.2mm / ±0.1° | SRC-800/2000/3000 | 高 | 支持倍加福标准版本八个数字; 倍加福扩展版十四个数字两种(直接支持,不需要配置) |
Sick | GLS100系列 | RS485 (支持单总线多设备) | 自带光源,可见光 | 100 mm ± 10 mm | ±0.1mm / ±0.1° | SRC2000 | 低 | 使用 sick 专用二维码 |
海康 | MV-IM5005-02MWG | RS485 (不支持单总线多设备) | 自带光源,可见光 | 100 mm ± 20 mm | ±1mm (与模型文件填写z值一致) / ±0.1° | SRC2000 | 中 | 输出坐标是像素值,需要根据模型文件填的高度值转成坐标值,所以输出精度单位与模型文件填写高度相同;如遇地面不平,输出精度会下降 |
大华 | MV-R3138MG010 | RS485 (不支持单总线多设备) | 自带光源,可见光 | 100 mm ± 20 mm | 0.1mm / 0.1° | SRC-800/2000/3000 | 高 | 只支持倍加福 tag 4x4 标签标准版本八个数字 |
达泊 | DB-PC-A1D6(上视) | RS485 (不支持单总线多设备) | 无自带光源 | 3 m ~ 4 m | ±20mm(与安装高度和二维码全局坐标精度相关) | SRC2000 | 中 | 使用达泊专用二维码,二维码尺寸较大 13cm * 13cm |
2.3 参数配置
在使用前,读码相机需要专用的上位机软件进行参数配置。以 PGV 为例,其配置项主要有以下几点:
- 通信波特率
- 奇偶校验
- 设备地址(ID)
- 通信方式
- 光照强度
- 二维码尺寸
对自带光源的读码相机,如果光照强度设置过大,会导致相机无法正确识别到二维码。
2.4 功能说明
2.4.1 定位
使用场景:
使用二维码定位技术,进行机器人路径导航。
注意事项:
- 注意相机离地高度的范围,如果超出规定的范围会导致识别不到数据。
- 在使用相机定位时,不能在同一个视野中出现多个二维码。
- 需要使用专用水平仪进行二维码实施,否则会影响贴码的精度。
- 当二维码发生污损和褶皱时,可能会出现机器人精度问题。
- 除了单舵轮车,其余的车型都可以使用二维码定位,如麦轮,双轮差速,双舵轮。
参数名称 | 参数位置 | 单位 | 默认值 | 列表 | 支持版本 |
---|---|---|---|---|---|
localization | 模型文件-pgv-func | — | adjust |
| 3.3.4.20~latest |
使用二维码进行机器人导航 |
2.4.2 调整
使用场景:
- 使用下视相机,用于机器人和线边机构的精准对接,坐标精度 ±2mm,朝向角精度 0.1°,机器人可进行位置微调。
- 使用上视相机,用于钻入货架后,向上对准货架。
- 使用上视相机,保证行走时货架角度不偏。
注意事项:
- 1 场景的使用方式存在多车一致性问题,即使机器人到点精度高,其末端执行机构的精度也无法保证。优化方式为,将相机放置于末端的机构上,如料箱车。
- 2 和 3 这两种场景 不推荐使用。
- 通过识别货架腿,可以解决场景 2 中的问题。
- 通过增加顶升车接触面摩擦系数,防止货架打滑,可以解决场景 3 中的问题。
参数名称 | 参数位置 | 单位 | 默认值 | 列表 | 支持版本 |
---|---|---|---|---|---|
adjust | 模型文件-pgv-func | — | adjust |
| 3.3.4.20~latest |
机器人到达目标点,根据二维码的位置做调整 |
2.4.3 传感器返回参数说明
二维码信息 | 单位 | 备注 |
---|---|---|
tag_diff_x | m | x 方向偏差 |
tag_diff_y | m | y 方向偏差 |
tag_diff_angle | 弧度 | 角度偏差 |
tag_value | — | 二维码标签号 |
warning_code | — | 读码相机告警码 |
device_address | — | 读码相机设备地址(同模型文件 id) |
is_DMT_detected | — | 是否识别到二维码 |
error_code | — | 读码相机错误码 |
2.5 读码相机安装与配置
配置方法请参考:
达泊
SICK 读码相机
倍加福读码相机
大华读码相机
三、PGV 二维码部署
PGV 是一种专用读码相机,可拍摄、读取二维码信息,并反馈设备中心与二维码中心的位置、角度偏差。下文介绍 PGV 对二维码的要求。
3.1 PGV 二维码分类
1. 根据应用场景分类
- 导航用二维码:机器人未配置导航激光,通过读码相机识别地面的二维码导航。
- 二次定位用二维码:机器人已配置导航激光,通过读码相机识别地面(或料架底部)的二维码实现精定位。
2. 根据二维码类型分类
- 11 二维码,以下简称 单码,单码使用寿命相比 44 二维码更短
- 4*4 二维码
- 不支持使用 2*2 或 3*3二维码
3.根据读码相机型号使用不同的二维码
- 倍加福、大华品牌可以使用通用的倍加福4*4二维码,在Roboshop中二维码工具中选择PGV二维码即可打印。
- 海康读码相机使用的二维码样式如下图,在Roboshop二维码工具中选择**AMB-800K,**在我们标准产品中AMB-800K则使用此型号PGV。
3.2 生成二维码
工具:Roboshop Pro v2.4.1.38及以上版本
3.2 .1二维码生成工具
打开Roboshop Pro首页,在【其他】下选择【二维码工具】。
3.2.2 生成二维码
说明:实际可生成1-9999999编号的二维码。
- 生成 4*4 二维码
在二维码工具界面选择【PGV二维码】。根据实际需求生成二维码,其中:
- 二维码数量:数量范围选择 4,生成 4*4 的二维码。
- 起始编号:一般从1开始。
- 结束编号:根据需求填写。
- 生成单码
在二维码工具界面选择【PGV单个二维码】。根据实际需求生成二维码,其中:
- 版本:选择DM(14*14)。
- 起始编号:从1开始。
- 结束编号:根据需求填写。
- 实际打印出来的二维码尺寸可参考右侧二维码尺寸计算数据
3.2.3. 保存二维码
点击上图【生成】按钮,可将生成的二维码文件保存在期望路径。
图2 二维码4*4
3.3 打印二维码
- 打印机:ZEBRA ZT410 300dpi
- 打印纸:WE PET 90*90
- 碳带:RICOH 100*300
3.3.1 安装打印机部分
- 按照下图安装打印纸和碳带。
2. 安装好后,如下图所示,并连接电源,打开开关。
说明:碳带和打印纸需要卡紧,否则打印机提示任务暂停。
打印机驱动:链接 , 请安装驱动后使用 USB 线、网线将打印机和电脑连接(USB线、网线缺一不可)。
3.3.2 打印二维码
- 点击【打印】,进入【打印预览】界面。
2. 点击图示按钮,进入打印界面。
3. 选择打印机,点击【打印】按钮。
4. 打印完成。
说明:
- 每一个小二维码尺寸相同;
- 不需要裁剪,可直接使用;
- 目前的打印纸仅支持
2*2
、3*3(不显示中心坐标)
、4*4
打印; - 建议采用
4*4
,2*2
的二维码主要用于狭小区域,两者在技术上并无区别。
3.3.3 粘贴二维码
使用工具:
- 卷尺
- 覆膜纸:磨砂膜,110*110mm(图 3)
- 贴地仪器,至少两个(图 4)
导航用二维码粘贴要求:
- 两二维码间隔采用标准间距——1m,机器人转向处务必设置二维码。
- 二维码上的 X 轴与 Y 轴须与地面线条相对齐(误差控制在 3°以内)。
- 地面二维码编号需要按照 X 轴方向、Y 轴方向逐渐递增。
- 区域内二维码编号需保持唯一性,不得使用相同编号的二维码。
- 二维码 X 轴、Y 轴方向朝向建议尽量保持一致。
3.3.4 粘贴步骤
- 选择起点粘贴二维码,如下图所示。
2. 使用卷尺测出 1 米距离,与激光线平行。
3. 对准中心的坐标,粘贴。
4. 粘贴完成后进行覆膜。
四、标定
4.1 PGV 标定
注:此方法适用于安装有导航激光并且导航激光正确标定过的车辆。
如机器人上安装的为避障激光则需要使用PGV-里程计标定。
所需数据
PGV 标定需要采集:
- PGV 检测到的二维码位姿数据;
- 机器人里程计。
标定专用二维码区域
- 地面平整且较封闭的环境。
- 地面上仅需单张二维码。
标定方法
- 首先确保导航激光的标定数据正常。使用导航激光扫描标定用到单个二维码周围环境,并重定位机器人确保在地图中正确的位置。
- 将机器人开到二维码上面需要将机器人车头(X+方向)与二维码 X+ 方向对齐如下图。
- 在 Roboshop 运行状态中 PGV 选项的 is_DMT_detected 变为 True 之后即可。
- 打开标定选项,勾选 PGV 点击开始标定即可标定。
标定动作
令机器人身上待标定的 PGV 检测到二维码。然后执行如下动作:
- 调整机器人位姿,使 PGV 对齐到二维码中心;
- 前进-后退若干次;
- 围绕(模型文件所描述的)PGV 中心旋转一周。
可调参数
参数名称 | 参数意义 | 备注 |
---|---|---|
PGVCalibSize | 前后往复直行的距离 | - |
PGVCalibLinSpeed | 前后往复直行的速度 | - |
PGVCalibRotSpeed | 绕 PGV 中心旋转的角速度 | - |
PGVCalibMoveCnt | 前后往复的来回数 | - |
注意事项
如果 PGV 不在机器人坐标系的 Y 轴上(以模型文件为准),而车辆又无法全向移动,则标定动作的步骤 3 无法执行,会导致标定失败。
由于 PGV 能够检测到二维码的范围很小,而标定过程中又是围绕模型文件中所描述的 PGV 位置旋转,所以如果模型文件中 PGV 外参误差较大,则可能导致采集到的数据过少,使得辨识不准确。因此请正确配置模型文件中的 PGV 参数。
4.2 PGV-里程计标定
PGV-里程计标定适用于未装备勾选了用于定位的激光雷达设备,同时装备了下视 PGV 的双轮差动车(这样的车辆始终依靠检测二维码进行定位)。每个下视 PGV 都对应一个该类型的标定项。
所需数据
PGV-里程计标定需要采集:
- 源自 PGV 的车辆定位数据;
- 行走电机编码器数据。
标定专用二维码区域
鉴于 PGV-里程计标定过程中,需要尽可能多地获取源自 PGV 检测到的二维码位姿信息的定位数据,因此需要一个二维码密集的区域进行标定。该区域最简单的形式为一个连续的条状二维码区域,例如:
此条状二维码区域同时还具有如下属性(参见下图):
- 二维码坐标系的x轴对应于条状区域的长边;
- 二维码区域中,二维码坐标系下x负方向那一端的二维码称为起始二维码,开始执行 PGV-里程计标定时机器人应位于 PGV 可检测到此二维码的范围内。
请联系技术支持人员索取该专用二维码条带或咨询设置该专用二维码区域的更多要求。
除需铺设该二维码区域外,还需要在地图中正确绘制这些二维码的位置和姿态,以便车辆能够正确地利用二维码
标定方法
- 首先确保机器人中激光雷达设备未勾选用于定位。
- 控制机器人到达起始二维码的位置,使PGV看到整条二维码中的起始二维码如下图。
- 确保Roboshop 运行状态中 PGV 选项的 is_DMT_detected 变为 True。
- 打开标定选项,勾选 PGV 点击开始标定即可标定。
标定动作
使机器人在初始状态下能用待标定的 PGV 检测到起始二维码,开始标定后机器人将执行如下动作:
- 调整机器人位姿,使 PGV 对齐到起始二维码中心;
- 前进-后退若干次;
- 原地逆时针-顺时针旋转若干次。
可调参数
参数名称 | 参数意义 | 备注 |
---|---|---|
PGVOdomCalibLength | 前后往复直行的距离 | - |
PGVOdomCalibSpeed | 前后往复直行的速度 | - |
PGVOdomCalibAngle | 往复旋转的角度 | - |
PGVOdomCalibRotSpeed | 往复旋转的角速度 | - |
PGVOdomCalibGoBackandForthCnt | 前后往复直行的来回数 | - |
PGVOdomCalibRotBackandForthCnt | 往复旋转的来回数 | - |
五、二维码导航设置
- 现场贴放完二维码之后,在 Roboshop 首页选中机器人,此时在工具栏右侧会出现开始识别按钮:
- 点击“开始识别”,然后将机器人手动控制到二维码上方。机器人停止运动后,Roboshop 地图界面上,会将刚识别到的二维码绘制出来。将机器人依次控制到所有二维码上方,识别完成后,点击“停止识别”。将当前地图上传,就成功完成对二维码的标记工作。
方法一:
在 Roboshop 地图编辑模式,选择站点工具,在靠近二维码的任意位置落下一个 AP 站点(其他类型站点同理)。拖动此 AP 点,当其靠近二维码时,会自动吸附至二维码上。
方法二:
a.先框选所有的二维码
b.使用右键点击任意二维码,选择批量创建LM点,可以自动创建二维码上面所有的站点。也可以选择单个二维码右键创建单LM点。(此功能要求RoboshopPro-2.4.1.36版本以上才可以实现)
- 按照上一步骤,在所有二维码上建立站点,并规划路线。
注意:
- 地图上二维码的朝向一定要与实际地面上二维码的朝向一致;
- AP 点的方向可以根据 .smap 的实际需要进行调整;
- 在 .smap 上保证二维码的编号与现实位置一一对应。
- 选择需要使用二维码导航的区域,在地图编辑中,在
区域
->高级区域
中选择二维码区域
,覆盖在需要二维码导航的地区(TagArea 区域务必覆盖所有需要二维码导航的站点及线路)。
- 区域配置完成后,保存并推送地图。机器人运行到该区域后,将自动切换为二维码定位,离开该区域后,自动切换为激光定位。
六、注意事项
6.1 报警码说明
Error52121
提示:pgv model param config error.
触发条件:
- 读码相机模型配置错误时,会触发这个报警码。
解决方式:
- 检查读码相机模型文件
xUnit``xRange``yUnit``yRange``angleUnit
配置是否合理。 - 重启机器人后,拉取模型文件,重新配置读码相机模型。
Error52127
提示:PGV connection error.
触发条件:
- 当读码相机与 SRC 通信断开时,会触发这个报警码。
解决方式:
- 检查读码相机的通信线是否断开。
- 检查读码相机参数配置是否错误。
- 检查模型文件 brand 配置是否错误。
Error52128
提示:PGV info with mismatched device id.
触发条件:
- 读码相机上报信息与模型配置信息不符,会触发这个报警码。
解决方式:
- 检查读码相机的模型配置。
- 更换读码相机。
Error52301
提示:Cannot detect tag after some distance.
触发条件:
- 当使用二维码进行定位时,机器人看到上一个二维码开始行走一段距离后看不到下一个二维码。
解决方式:
- 检测是不是地面打滑导致机器人偏离线路。
- 两个二维码粘贴的距离大于设置的阈值,导致机器人还没有看到下一个二维码就开始报警
Error54053
提示:Tag cannot be seen.
触发条件:
- 使用纯二维码定位时看不到二维码,会触发这个报警码。
解决方式:
- 在使用过程中,由于看不到二维码会报此警告,看到二维码后可以清除。
Error54070
提示:PGV cannot find codes.
触发条件:
- 二次定位时看不到二维码,会触发这个报警码。
解决方式:
- 将参数配置中的 PGV_Time 调大,增大报错阈值。
- 检查读码相机和二维码距离是否合适。
- 将模型文件读码相机 xRange 和 yRange 调大。