一、背景
顶升机器人可以是差动车,双舵轮车,双轮差速模组车。在3.3.5.72+的版本后,顶升机器人可以是单舵轮车。
机器人顶起货物,可以通过识别自动规划路径去,也可以沿着客户绘制的线路过去。当到达工作点时可能会被障碍物阻挡,可以通过任务参数,线路参数,任务参数来屏蔽一些传感器。顶升取放所在流程中的位置如下:
任务指令
任务指令
任务指令
二、通过识别钻出货架
通过任务参数中指定 recGoOut 为 true,表示将采用相应识别文件,进行识别钻出货架。防止钻出货架时,被货架腿阻挡。目前只支持全向车,从货架中钻出。 其他车型将会忽略这个参数。
三、货架识别文件的配置
控制识别偏移量,控制识别距离的参数。
参数名称 | 参数位置 | 单位 | 默认值 | 最小值 | 最大值 | 支持版本 |
---|---|---|---|---|---|---|
rec_off_x | 识别文件-shelf | m | 0 | -99 | 99 | ~latest |
在识别坐标 x 方向的偏移量 | ||||||
rec_off_y | 识别文件-shelf | m | 0 | -99 | 99 | ~latest |
在识别坐标 y 方向的偏移量 | ||||||
rec_off_z | 识别文件-shelf | ° | 0 | -99 | 99 | ~latest |
在识别坐标角度偏移量 |
识别坐标系为右手坐标系,x 轴指向识别物体外侧,即为识别表面的外法向向量。
控制识别距离的参数为recDist
:表示识别货架的推荐识别距离。此距离为 AGV 到达识别点后与当前 AGV 的距离。如下图 AGV 正向识别导航到 AP 点所示。
四、顶升机构模型文件配置
3.3.5.68 及以前
参数名称 | 参数位置 | 单位 | 默认值 | 最小值 | 最大值 | 支持版本 |
---|---|---|---|---|---|---|
counterPointDI | 模型文件-jack | -1 | -1 | 80 | ~latest | |
对位光电DI,在顶升货物过程中,和顶着货物导航过程中都起作用。-1表示没有,可以为数组。 | ||||||
counterPointTime | 模型文件-jack | s | 1.0 | 0.01 | 10.0 | ~latest |
对位光电DI的滤波时间 | ||||||
loadTime | 模型文件-jack | s | 300 | 0 | 60000 | ~latest |
载货动作最长持续时间 | ||||||
unloadTime | 模型文件-jack | s | 300 | 0 | 6000 | ~latest |
卸货动作最长持续时间 |
counterPointDI 为顶升机构的对位光电,当机器人执行JackLoad
载货后,counterPointDI会起效。如果在载货过程中,或者在载货执行中,如果存在一个 counterPointDI 没有被触发,会报 warning 54028。
3.3.5.70 及以后
参数名称 | 参数位置 | 单位 | 默认值 | 最小值 | 最大值 | 支持版本 |
---|---|---|---|---|---|---|
counterPointDI | 模型文件-jack | -1 | -1 | 80 | ~latest | |
对位光电DI,只在顶升货物过程中,起作用,-1表示没有,可以为数组。,就会报错 | ||||||
counterPointTime | 模型文件-jack | s | 1.0 | 0.01 | 10.0 | ~latest |
对位光电DI的滤波时间 | ||||||
cargoDI | 模型文件-jack | -1 | -1 | 80 | ~latest | |
货物检测DI,只在顶货物导航中都起作用。-1表示没有,可以为数组。当存在一个DI没有触发,就会报错。 | ||||||
cargoDITime | 模型文件-jack | 1.0 | 0.01 | 10.0 | ~latest | |
货物检测DI的滤波时间 | ||||||
loadTime | 模型文件-jack | s | 300 | 0 | 60000 | ~latest |
载货动作最长持续时间 | ||||||
unloadTime | 模型文件-jack | s | 300 | 0 | 6000 | ~latest |
卸货动作最长持续时间 |
counterPointDI 为顶升机构的对位光电,当机器人执行JackLoad
过程中,counterPointDI会起效。如果在载货过程中,或者在载货执行中,如果存在一个 counterPointDI 没有被触发,会报 warning 54028。
cargoDI 为顶升机构的货物检测光电,当机器人加载货物后,cargoDI会起效。如果在载货导航,如果存在一个 cargoDI 没有被触发,会报 warning 54028。
五、顶升机器人识别角度的控制
在任务参数中增加rec_dir
用于指定识别时顶升机器人哪个角度朝向货物进行识别。rec_dir
后面的值单位为角度。
{
"id": "AP1",
"operation": "JackLoad",
"recognize":true,
"rec_dir": 0
}
2
3
4
5
6
{
"id": "AP1",
"operation": "JackLoad",
"recognize":true,
"rec_dir": 180
}
2
3
4
5
6
{
"id": "AP1",
"operation": "JackLoad",
"recognize":true,
"rec_dir": 90
}
2
3
4
5
6
{
"id": "AP1",
"operation": "JackLoad",
"recognize":true,
"rec_dir": -90
}
2
3
4
5
6
- 当任务中使用了
rec_dir
时,参数配置的recAdjust
配成 true/false 是不影响的,当不使用rec_dir
时,会查看recAdjust
。
参数名称 | 参数位置 | 单位 | 默认值 | 最小值 | 最大值 | 支持版本 |
---|---|---|---|---|---|---|
recAdjust | 参数配置-navigation | m | true | ~latest | ||
识别前是否要调整 |
六、JackLoad 和 JackUnload完成标志
顶升车执行JackLoad
动作时,会默认将顶升电机,抬升到顶升电机的最大高度maxLength
。如果顶升电机的motorDI
配置有upReached
,那么顶升电机抬升过程中到达maxLength
或者upReached
触发都认为到位。
顶升车执行JackUnload
动作时,会默认将顶升电机,下降到顶升电机的最小高度minLength
。如果顶升电机的minLength
为0,并且配置有zeroDI
,那么顶升电机下降到 0 位时,必须要 zeroDI
, 否则继续执行下降动作。如果顶升电机的minLength
不为0,并且配置有downReached
,那么顶升电机下降过程中到达minLength
或者downReached
触发都认为到位。
顶升机构
顶升机构
参数名称 | 参数位置 | 单位 | 默认值 | 最小值 | 最大值 | 支持版本 |
---|---|---|---|---|---|---|
maxLength | 模型文件-motor | m | 0.05 | -360.0 | 360.0 | 3.3.4.20~latest |
线性机电机的最大量程 | ||||||
minLength | 模型文件-motor | m | 0.0 | -360.0 | 360.0 | |
线性机电机的最小量程 |
七、顶升机器人先识别到点旋转后顶升
在有些场景下,需要机器人先识别钻入货架,再原地旋转特定角度jack_rot
,最后进行顶升。
3.3.5.66 版本后支持
{
"id": "AP1",
"operation": "JackLoad",
"jack_rot": 90, //顶升前,顶升车原地旋转的角度
"recognize":true
}
2
3
4
5
6
八、顶升机器人顶起来后指定货物在地图坐标系下角度
在有些场景下,机器人顶起货架,货架的坐标系不是和车子的坐标系平行,而是需要人为指定的。下面的例子时,机器人钻入原地旋转后90度后,顶起货架,货架的坐标系还是在世界坐标系的0度。
3.3.5.66 版本后支持
{
"id": "AP1",
"operation": "JackLoad",
"jack_rot": 90, //顶升前,顶升车原地旋转的角度,单位度
"goods_dir": 0, //首次加载货物,货物在世界坐标系的角度, 单位度
"recognize":true
}
2
3
4
5
6
7
九、顶升机器人取放货时,先识别目标点是否有障碍物
在有些场景下,顶升在卸货前,需要先识别目标点是否有栈板,如果有栈板了就报错,不再进行卸货。可以在导航指令中加入rec_target_obs
来实现此功能。
{
"id":"AP1",
"rec_target_obs":true, //顶升前,需要先识别目标点是否有障碍物。
"recfile":"pallet/p0001.pallet",
"recognize":true,
"operation":"JackUnload"
}
2
3
4
5
6
7
在有些场景下,顶升在取货前,需要先识别目标点是否有栈板,如果没有栈板了就报错,不再进行卸货。可以在导航指令中加入rec_target_obs
来实现此功能。
{
"id":"AP1",
"rec_target_obs":true, //顶升前,需要先识别目标点是否有障碍物。
"recfile":"pallet/p0001.pallet",
"recognize":true,
"operation":"JackLoad"
}
2
3
4
5
6
7
十、顶升机器人取货对位,可以设置对位距离
3.3.5.78 及以后
为了解决实际操作中遇到货架由于人工摆放 前后位置有误差(左右已经限位 所以都是前后偏差,由于货架比较特殊不适合利用货架识别功能),会经常发生到点后对位感应器失效的情况,导致顶升失效。
增加两个任务参数调整范围 jack_adjust_dist
和调整速度 jack_adjust_vel
,顶升车同样利用导航到AP点,距离到AP点的jack_adjust_dist
位置时,自动减速到 jack_adjsut_vel
,同时开始检查对位感应器,感应到则立即停止(若到AP点还没有感应到则继行驶超过 jack_adjsut_dist
报错并停车);然后确定对位感应ok,顶升并加载货架模型;等待新的导航任务,运行过程中货物检测 DI 感应不到停止,感应到则继续。
{
"id": "AP1",
"jack_adjust_dist": 0.1, // 单位 m
"jack_adjust_vel": 0.01, // 单位 m/s
"operation": "JackLoad"
}
2
3
4
5
6
如果在调整范围内没有出发对位DI,则报 52167 的错误码。
报错码
Error52800
提示:
- Jack byController Mode. Cannot Find Linear Motor
触发条件:
- 模型文件顶升设备配置错误。
解决方式:
- 需要检查 jack 机构的配置文件中的电机配置。
Error52801
提示:
- all Motors are empty!
触发条件:
- 模型文件顶升设备配置错误。
解决方式:
- 需要检查 jack 机构的配置文件中的电机配置。
Error52952
提示:
- Can't open Recfile, while ControllerJack. File: [x]。
触发条件:
- 识别文件无法找到。
解决方式:
- 需要检查识别文件路径和文件名是否存在。
Error52801
提示:
- Action Over Time [x]。
触发条件:
- 动作超时。
解决方式:
- 可能是顶升电机故障,或者是动作时长太短了。 可以将顶升模下文件中 loadTime 和 unloadTime 加大。
Warning54028
提示:checkDi is false. Di:
触发条件:
- 顶升载货时,没有触发 counterPointDI。
解决方式:
- 检查 counterPointDI 是否被触发,如果偶尔触发,偶尔不触发,则需要加大 counterPointTime。
Warning54306
提示:data is invalid:
触发条件:
- RGV 顶升车返回的用于测量顶升托盘高度的距离传感器数据为空。
解决方式:
- 需要检查 RGV 车子顶升托盘距离传感器的名字是否配置正确。
Error52801
提示:
- JackEnd is not in the action pool
触发条件:
- 机器人模型文件没有启用顶升设备,但是机器人受到了顶升任务
解决方式:
- 在模型文件中启用顶升任务。
Error52161
提示:
- The Goal has goods
触发条件:
- 顶升车放货前,识别到目标点有栈板
解决方式:
- 将目标点去掉栈板,或者修改识别文件
Error52961
提示:
- The Goal doesn't have goods. Cannot Load
触发条件:
- 顶升车取货前,识别到目标点没有栈板
解决方式:
- 将目标点增加栈板,或者修改识别文件
Error52167
提示:
- REACH GOAL LOAD NO DI
触发条件:
- 顶升车在调整范围内没有触发对位DI。
解决方式:
- 检查对位DI是否被触发,是否调整范围 jack_adjust_dist 太小,或者调整速度 jack_adjust_vel 太大.