料箱机构
一、料箱机器人的组成
料箱机器人大体可以拆解为三个部分:
- 移动机器人底盘。
- 上层升降及缓存库位。
- 料斗机构。
1.1 底盘部分
底盘部分是典型的双轮差速结构,此处不再赘述。
1.2 上层升降及缓存库位
在 SEER 与海柔合作的型号中,上层升降机构使用铝型材进行搭建,升降电机使用增量编码器配合零位光电的方式进行标零,由于升降是由海柔自己的控制器进行控制的,同时提供了外部标零的 API 进行标零。
缓存库位的个数可以通过模型文件进行配置 container 的名称从而进行库位管理,这个库位管理即使机器人重新上电也能对此库位的信息进行恢复。
1.3 料斗机构
在 SEER 与海柔合作的型号中,由海柔的控制器进行整个料斗的控制,料斗的动作包括:
- 料斗旋转:使用增量编码器加光电的方式进行零位的标定。
- 料斗伸缩:使用增量编码器加光电的方式进行零位的标定。
- 料箱识别:使用2D相机进行识别,可以识别1)料箱的二维码(所有料箱统一)进行取料箱的定位;2)货架的二维码(所有库位统一)进行放料箱的定位;3)条形码,进行料箱独立编号的识别。
- 手指控制:使用 IO 进行控制,只有开合两种状态,不进行连续的位置反馈。
二、位置调整
2.1 取货
- 机器人到达取货点,在执行取货动作前,会先检测升降、伸缩臂、旋转、手指等各机构状态;
- 如果升降机构状态有异常,则会进行报错
Error53809: Lift has error, please zero the machine!
- 如果伸缩臂状态有异常,则会进行报错 Error53814: Stretch has error, please zero the machine!
- 如果旋转机构状态有异常,则会进行报错 Error53811: Rotate has error, please zero the machine!
- 如果手指状态有异常,则会进行报错 Error53816: Finger has error, please zero the machine!
- 如果各机构状态无异常,料斗到达库位处,对料箱上的二维码进行拍照识别;
- 如果连续10次未识别到二维码信息,则会进行报错
Error53835 :Rec fails! reach max times!
- 如果成功识别到二维码信息,料斗会根据识别结果调整位置进行取货;
- 如果料斗连续调整位置超过10次仍未完成,则会进行报错 Error53834: RecAdjust fails! reach max times!
- 如果料箱摆放位置有偏差或者伸缩臂伸出过短,导致取料箱时手指卡在料箱上,则需要根据实际情况手动摆放料箱或者调整手臂伸缩长度,机器人会进行报错 Error53816: Finger has error, please zero the machine!
- 如果料斗正常取到货架上的料箱,则查询自身背篓库位状态,并将料箱放至自身空背篓中;
- 如果自身背篓库位全满,则会进行报错 Error53821: All trays are full, can not load!
- 如果有空背篓,则料斗会将料箱放至空背篓中,各机构复位至初始状态,取货动作完成。
- 取货全过程会检测海柔控制器上报数据,若数据中有异常,则会进行报错 Error53802: Report data has error, failDescription: xxx, executionResult: xxx! 其中 executionResult 为海柔报错码,详情见4.3章。
💡 说明: 以上各报错情景根据报错码在4.1章脚本报错异常及快速处理方法中查看对应处理方法。
2.2 放货
- 机器人到达放货点,在执行放货动作前,会先检测升降、伸缩臂、旋转、手指等各机构状态;
- 如果升降机构状态有异常,则会进行报错
Error53809: Lift has error, please zero the machine!
- 如果伸缩臂状态有异常,则会进行报错 Error53814: Stretch has error, please zero the machine!
- 如果旋转机构状态有异常,则会进行报错 Error53811: Rotate has error, please zero the machine!
- 如果手指状态有异常,则会进行报错 Error53816: Finger has error, please zero the machine!
- 如果各机构状态无异常,料斗根据放货指令中的
goodsId
查询自身背篓库位,如果查询不到对应goodsId
则进行报错 Error53825: No such goods found, can not unload, goodsId: xxx! - 如果查询到对应
goodsId
则取出料箱至料斗中,料斗升至货架库位处,拍照识别库位及货架二维码; - 如果机器人识别到货架库位已有料箱,则进行报错 Error53832: The shelf has box. Cannot unload!
- 如果机器人识别货架库位为空,则拍照识别货架二维码,进行位置调整;
- 如果连续10次未识别到二维码信息,则会进行报错
Error53835 :Rec fails! reach max times!
- 如果料斗连续调整位置超过10次仍未完成,则会进行报错 Error53834: RecAdjust fails! reach max times!
- 如果识别调整正常,则料斗将料箱放至货架库位上,各机构复位至初始状态,取货动作完成。
- 放货全过程会检测海柔控制器上报数据,若数据中有异常,则会进行报错 Error53802: Report data has error, failDescription: xxx, executionResult: xxx! 其中 executionResult 为海柔报错码,详情见4.3章。
💡 说明: 以上各报错情景根据报错码在4.1章脚本报错异常及快速处理方法中查看对应处理方法。
三、注意事项
- 料箱机器人支持拼合单功能,会对自己身上的库位(缓存托盘)进行管理。
- 同样是密集货架,料箱机器人面临的环境是更友好的,因为货架本身是固定的(和潜伏顶升是有区别的)。
- 料箱车的识别对光线比较敏感,即使在有补光灯的情况下被阳光直射二维码也有可能无法识别。
- 针对 SRC2000 的造车方案,我们可以支持完全的由 SRC 控制所有电机的方案。
- 料箱车目前只用无线客户端,客户端是安装在机器人最顶上。
- 料箱车目前只支持带二维码的料箱识别,不支持纸箱,不支持双伸位。
四、料箱车异常快速处理手册
- 表1 料箱车报错信息及快速处理方法表,列出了料箱车所有可能出现的报错信息、报错解释及快速处理方案;
- 表2 其他常见异常及快速处理方法表,列出了其他常见的异常现象和快速处理方案;
- 表3 海柔上报数据报错信息查验表,列出了海柔控制器上报数据时的报错信息,可供查验和参考;
- 若现场发生的异常现象不属于本手册所列出范围,或快速处理方案无效,请及时建立 coding,描述现象和发生时间点并上传报错截图和日志文件。
4.1 脚本报错异常及快速处理方法
错误等级 | 报错码 ( 脚本V2.2.3版本以下) | 报错码 ( 脚本V2.2.3版本以上) | 报错内容 | 报错解释 | 处理方法 |
---|---|---|---|---|---|
Error | 53000 | 53800 | Task is wrong : xxx | 下发指令参数错误 | 检查指令参数 |
Error | 53000 | 53801 | Rec task is wrong : | 识别指令参数错误 | 检查识别指令参数 |
Error | 53000 | 53802 | Report data has error, failDescription: xxx, executionResult:xxx | 海柔上报数据异常 | 从4.3查看海柔报错信息。截报错图,取 RBK 日志,建coding |
Error | 53000 | 53803 | RBK version mismatch, please update rbk | RBK 版本不匹配 | 升级 RBK 及脚本文件 |
Error | 53000 | 53804 | Init trays error: | 背篓 Container 模型未配置或配置错误 | 检查Container 模型配置 |
Error | 53000 | 53805 | Failed to pick up the goods! xxx | 取货时货叉中部光电未检测到货物 | 检查货叉是否有安装光电,json 配置文件中是否启用了货叉传感器功能 |
Error | 53000 | 53806 | Fork upLimit DI is true, can not up! | 触发上限位光电 | 检查上限位光电及lift 参数 |
Error | 53000 | 53807 | Fork downLimit DI is true, can not down! | 触发下限位光电 | 检查下限位光电及lift 参数 |
Error | 53000 | 53808 | Fork limitDi is true, can not move! | 触发机械限位防坠开关 | 检查防坠开关 |
Error | 53000 | 53809 | Lift has error, please zero the machine! | 升降机构状态异常,需标零 | 检查升降机构状态,标零 |
Error | 53000 | 53810 | Stretch pos is not zero, cannot lift!!! | 伸缩机构不在初始位,无法升降 | 检查伸缩机构状态,标零 |
Error | 53000 | 53811 | Rotate has error, please zero the machine! | 旋转机构状态异常,需标零 | 检查旋转机构状态,标零 |
Error | 53000 | 53812 | Stretch pos is not zero, cannot rotate.!!! {} | 伸缩机构不在初始位,无法旋转 | 检查伸缩机构状态,标零 |
Error | 53000 | 53813 | Reach max stretch dist! | 伸缩臂到达最大长度 | 检查stretch 参数是否合理 |
Error | 53000 | 53814 | Stretch has error, please zero the machine! | 伸缩臂状态异常,需标零 | 检查伸缩机构状态, 标零 |
Error | 53000 | 53815 | No finger data in message! Ctu cannot lift or rotate or stretch! | 缺失手指机构数据 | 检查机器手指机构 |
Error | 53000 | 53816 | Finger has error, please zero the machine! | 手指机构异常,需标零 | 检查手指机构状态,标零 |
Error | 53000 | 53817 | VisionBinType Type is wrong: | binType 参数错误 | 检查binType 参数 |
Error | 53000 | 53818 | Rec no results. | 未识别到结果 | 检查相机是否对准目标,检查lift参数 |
Error | 53000 | 53819 | This good already exists: | 编号为goodsId 的货物已存在 | 检查货物配置数据 |
Error | 53000 | 53820 | This tray is full, can not load, tray: | 目标背篓已满,无法取货 | 检查货物配置数据 |
Error | 53000 | 53821 | All trays are full, can not load | 所有背篓已满,无法取货 | 检查货物配置数据 |
Error | 53000 | 53822 | Task is wrong in load with recAdjust: | 识别取货时参数错误 | 核对手册检查指令参数 |
Error | 53000 | 53823 | Task is wrong in unload with recAdjust: | 识别放货时参数错误 | 核对手册检查指令参数 |
Error | 53000 | 53824 | This tray is empty, can not unload: tray: | 目标背篓为空,无法放货 | 检查货物配置数据 |
Error | 53000 | 53825 | No such goods found, can not unload, goodsId: | 背篓中没有编号为goodsId 的货物,无法放货 | 检查货物配置数据 |
Error | 53000 | 53826 | Get the wrong goods in xxx floor, goodsId: xxx | unload 时取错料箱 | 核对订单 goodsId 和机器人背篓中的goodsId 否一致 |
Error | 53000 | 53828 | Fork has goods, cannot changePos! | 货叉中有货,不能执行换层操作 | 检查货物配置数据 |
Error | 53000 | 53829 | The target tray {tray_num} is null, cannot change goods | 初始背篓无货,不能换层 | 检查货物配置数据 |
Error | 53000 | 53830 | The target tray {tray_num} has goods, cannot change goods | 目标背篓有货,不能换层 | 检查货物配置数据 |
Error | 53000 | 53831 | ChangePosition0: not found goods: | 换层操作时,{changePosition0} 背篓中没有货物 | 检查货物配置数据 |
Error | 53000 | 53832 | The shelf has box. Cannot unload!! | 货架上有货,不能再放货 | 检查货架上是否有货 |
Error | 53000 | 53833 | VisionBinType Type is wrong: | binType 参数错误 | 检查binType 参数 |
Error | 53000 | 53834 | RecAdjust fails!!! reach max times. | 识别调整失败,超出最大调整次数 | 检查相机是否对准目标,检查lift 参数 |
Error | 53000 | 53835 | Rec fails! reach max times. | 识别失败,超出最大识别次数 | 检查相机是否对准目标,检查lift 参数 |
Warning | 55300 | 55800 | socket connection broken, send message failed! | 海柔控制器连接断开,发送指令失败 | 1. 检查网络问题 2. 检查海柔相关服务是否开启 3. 机器标零,料箱复位,订单重做 |
Warning | 55300 | 55801 | Please update rbk version: | 脚本与 RBK 版本不匹配 | 更新 RBK 版本(默认更新最新版本) |
Warning | 55300 | 55802 | ctu connect is overtime: {xxx}s | 与控制器连接超时 | 检查网络环境, 检查海柔相关服务是否开启, 重新执行 |
Warning | 55300 | 55803 | mode checking, ctu is connecting! | 正在检测运行模式,机器正在连接中 | 等待机器运行,直到出现超时警告或正常运行 |
Warning | 55300 | 55804 | please update rbk version: | RBK 版本不匹配 | 更新 RBK 版本(默认更新最新版本) |
Warning | 55300 | 55805 | ctu connect is overtime: {xxx}s | 与控制器连接超时 | 检查网络环境, 检查海柔相关服务是否开启, 重新执行 |
Warning | 55300 | 55806 | Finger status is not idle. Ctu cannot lift or rotate or stretch! | 手指状态错误 | 机器标零 |
Warning | 55300 | 55807 | Rec no results. | 拍照识别过程中未识别到目标 | 相机拍照过程中正常现象,可不用处理,若最终识别失败,会有相应报错提示 |
Warning | 55300 | 55808 | Picking robot is zero calibrating: | 机器正在标零 | 等待标零完成 |
Warning | 55300 | 55809 | Response time out: {xxx}s | 任务完成后回调通信响应超时 | 检查回调服务器是否开启,检查postAddr 参数是否正确 |
4.2 其他常见异常现象及处理方法
异常现象 | 快速处理方法 | 备注 |
---|---|---|
伸缩臂过长,撞货架 | 调整取放货指令中的stretch参数值 | 根据现场货架实际情况 调整参数进行测试 |
伸缩臂过短,手指卡料箱 | 调整取放货指令中的stretch参数值 | 根据现场货架实际情况 调整参数进行测试 |
自身背篓取放料箱时伸缩臂过长或过短 | 调整json配置文件中的stretchDist参数值 | 根据车型实际情况 调整参数进行测试 |
识别取货时,识别后二次抬升过高或过低 | 调整json配置文件中的rec_offz_box参数值 | 根据现场货架实际情况 调整参数进行测试 |
识别放货时,识别后二次抬升过高或过低 | 调整json配置文件中的rec_offz_shelf参数值 | 根据现场货架实际情况 调整参数进行测试 |
自身背篓取料箱时抬升偏低或偏高 | 调整json配置文件中的low0 - low4参数值 | low0 - low4 对应第 0 - 4层背篓 |
自身背篓放料箱时抬升偏低或偏高 | 调整json配置文件中的high1 - high4参数值 | high1 - high4 对应第 0 - 4层背篓 |
触发货叉限位报警 | 检查防坠手柄,检查限位DI配置 | 正确配置DI |
空箱检查异常 | 检查json配置文件中是否启用货叉传感器检测 | forkSensor参数 |
没有货物配置数据 | 检查模型文件是否配置了Container模型 | 熟悉模型文件配置 |
4.3 海柔控制器上报数据异常
报错码 | 错误解释 | 对应仙工报错码 |
---|---|---|
0x80000000 | 指令序号错误 | 无 |
0x80000001 | 指令解析错误 | 无 |
0x80000002 | 不支持的功能 | 无 |
0x80000003 | 调用顺序错误 | 无 |
0x80000004 | 错误的参数 | 无 |
0x80000005 | 资源申请失败 | 无 |
0x80000006 | 目标未能找到 | 无 |
0x80000007 | 目标超出限制 | 无 |
0x80000008 | 超过时间/次数限制 | 无 |
0x80000009 | 前置条件有误,或运行环境已发生变化 | 无 |
0x8000000A | 设备状态异常 | 无 |
0x8000000B | 接口访问受限 | 无 |
0x8000000C | 目标已经存在 | 无 |
0x800000FF | 未知错误 | 无 |
0x80000100 | 网络设备异常 | 无 |
0x80000101 | 网络连接断开 | 无 |
0x80000102 | 指令序号错误 | 无 |
0x80000103 | 通讯连接失败 | 无 |
0x80000104 | 通讯数据异常 | 无 |
0x80000200 | 手动保护 | 无 |
0x80000201 | 碰撞保护 | 无 |
0x80000202 | 限位保护 | 无 |
0x80000203 | 锁定保护 | 无 |
0x80000204 | 失控保护 | 无 |
0x80000300 | 设备通讯错误 | 无 |
0x80000301 | 设备已被占用 | 无 |
0x80000302 | 设备不能支持 | 无 |
0x80000303 | 设备功能失效 | 无 |
0x80000304 | 设备数据异常 | 无 |
0x80000400 | 目标库位为空 | 53900 |
0x80000401 | 目标库位占用 | 53901 |
0x80000402 | 目标背篓为空 | 53902 |
0x80000403 | 目标背篓占用 | 53903 |
0x80000600 | 定位信息无效 | 无 |
0x80000601 | 障碍物阻挡 | 无 |
0x80000602 | 负载超出限制 | 无 |
0x80000603 | 负载/装置错位 | 无 |
0x80000604 | 偏离行走路线 | 无 |
0x80000605 | 指令执行过程被打断 | 无 |
4.4 脚本配置文件注意事项
- 所有涉及修改配置参数的操作,请修改
ctuNoBlock.json
或ctuTask.json
配置文件即可,具体操作为修改对应参数的value
值,default
值仅供参考,可改可不改。 - 请勿轻易修改
ctuNoBlock.py
和ctuTask.py
文件中定义的参数值,请勿私自修改脚本代码内容。 - 更新和替换脚本文件时,无需更换
json
配置文件。 - 脚本文件
xxx.py
和配置文件xxx.json
,文件名称需保持一致。
最近更新 2022/11/28
有用
没用