Skip to content

7. 动作 ​

动作是移动机器人在执行订单过程中需要执行的具体操作,如取货、放货、充电、开关门等。

7.1 动作概述 ​

如果移动机器人支持除行驶外的其他动作,这些动作通过附加在节点或边上的 actions 数组来指示,或通过 instantActions 主题发送,或通过动作区域配置。

在边上执行的动作只能在移动机器人在边上时运行。在节点上触发的动作可以运行任意长时间,并且应该是自我终止的(如持续5秒的音频信号或取货动作在取货完成后结束)或成对制定(如 "activateWarningLights" 和 "deactivateWarningLights")。

7.2 即时动作 (Instant Actions) ​

即时动作是车队控制发送给移动机器人要求立即执行的动作。与订单中的动作不同,即时动作不依赖于订单的执行进度。

即时动作通过 instantActions 主题发送。

即时动作的特点 ​

  • 立即执行,不等待订单完成
  • 可以带有参数
  • 可能需要一定时间完成
  • 可以被拒绝或失败
  • 阻塞类型始终为 'NONE'

即时动作示例 ​

  • 暂停移动机器人而不更改当前订单
  • 暂停后恢复订单
  • 激活信号(视觉、音频等)

无效即时动作 ​

当移动机器人收到无法执行的 instantAction 时,应报告 'INVALID_INSTANT_ACTION' 错误,级别为 'WARNING',并将 instantAction 的 actionId 作为 errorReference。

7.3 动作阻塞类型 ​

动作具有不同的阻塞类型,定义了动作执行时允许的其他行为:

阻塞类型自动驾驶并行执行
NONE允许允许
SINGLE允许不允许
SOFT不允许允许
HARD不允许不允许

动作执行顺序 ​

多个动作的顺序定义了移动机器人执行它们的顺序。动作的并行执行由各自的 blockingType 控制。

图 1:处理多个动作图 1:处理多个动作

当移动机器人到达要执行新动作的点时(即到达节点、边或动作区域),动作按动作数组的相同顺序入队。该队列按图 1 所示持续处理。如果队列中任何动作的 blockingType 是 'SOFT' 或 'HARD',移动机器人应停止自动驾驶。如果动作的 blockingType 是 'NONE' 或 'SOFT',则收集并行执行。如果要执行 blockingType 为 'SINGLE' 或 'HARD' 的动作,所有已收集的并行动作应在开始该动作之前 'FINISHED' 或 'FAILED'。如果队列中不再有 blockingType 为 'SOFT' 或 'HARD' 的动作,移动机器人可以恢复自动驾驶。'FINISHED' 或 'FAILED' 的动作应从队列中移除。

7.4 动作状态 ​

动作在执行过程中会经历多个状态:

状态说明
INITIALIZING动作正在初始化准备
WAITING等待执行(在订单中定义的位置)
RUNNING正在执行
PAUSED已暂停(如安全区域被违反)
FINISHED成功完成
FAILED执行失败
RETRIABLE可以重试(如果启用重试且之前失败)

7.5 预定义动作 ​

VDA 5050 定义了一组标准化的动作类型。所有移动机器人应支持 cancelOrder、startPause 和 stopPause 这三个动作。

7.5.1 动作列表 ​

动作类型反向动作说明幂等即时节点边区域
startPausestopPause激活暂停模式,停止自动驾驶是是否否否
stopPausestartPause停用暂停模式,恢复运动和动作是是否否否
startHibernationstopHibernation进入休眠模式,停止发送状态消息是是否否否
stopHibernationstartHibernation退出休眠模式,恢复正常操作是是否否否
shutdown-有序关闭移动机器人,断开 MQTT 连接是是否否否
startChargingstopCharging激活充电过程是是是否否
stopChargingstartCharging停止充电过程是是是否否
initializePosition-重置移动机器人的位姿是是是否否
enableMap-启用之前下载的地图是是是否否
downloadMap-触发新地图下载是是否否否
deleteMap-删除移动机器人内存中的地图是是否否否
downloadZoneSet-触发区域集下载是是否否否
enableZoneSet-启用之前下载的区域集是是是否否
deleteZoneSet-删除区域集是是否否否
clearInstantActions-清除所有已完成的即时动作是是是否否
clearZoneActions-清除所有区域动作是是是否否
stateRequest-请求移动机器人发送新状态是是否否否
logReport-请求生成日志报告是是否否否
pickdrop请求移动机器人取货否否是是否
droppick请求移动机器人放货否否是是否
detectObject-检测物体(负载、充电位等)是否是是是
finePositioning-精确到达目标位置是否是是是
waitForTrigger-等待触发器触发是否是否是
trigger-通知移动机器人可以继续是是否否否
retry-重试当前处于 RETRIABLE 状态的动作是否否否否
skipRetry-跳过重试,将动作设为 FAILED是否否否否
cancelOrder-尽快停止移动机器人是是否否否
factsheetRequest-请求发送 factsheet是是否否否
updateCertificate-下载并激活新证书集是是否否否

7.5.2 动作详细参数 ​

取放动作 ​

pick - 取货

参数类型必填说明
lhdstring否负载处理设备标识(如 LHD1)
stationTypestring否站点类型(floor/rack/passiveConveyor/activeConveyor)
stationNamestring否站点名称
loadTypestring否负载类型(如 EPAL/INDU)
loadIdstring否负载标识
heightfloat64否负载底部相对于地面的高度
depthfloat64否深度(叉车用)
sidestring否侧面(如 conveyor)

drop - 放货 参数与 pick 相同。

地图操作 ​

downloadMap

参数类型必填说明
mapIdstring是地图标识
mapVersionstring是地图版本
mapDownloadLinkstring是地图下载链接
mapHashstring否地图哈希值(可选)

enableMap

参数类型必填说明
mapIdstring是地图标识
mapVersionstring是地图版本

deleteMap

参数类型必填说明
mapIdstring是地图标识
mapVersionstring是地图版本

区域集操作 ​

downloadZoneSet

参数类型必填说明
zoneSetIdstring是区域集标识
zoneSetDownloadLinkstring是区域集下载链接
zoneSetHashstring否区域集哈希值

enableZoneSet

参数类型必填说明
zoneSetIdstring是区域集标识

deleteZoneSet

参数类型必填说明
zoneSetIdstring是区域集标识

位置初始化 ​

initializePosition

参数类型必填说明
xfloat64是X 坐标
yfloat64是Y 坐标
thetafloat64是方向角(弧度)
mapIdstring是地图标识
lastNodeIdstring是最后一个节点 ID

充电动作 ​

startCharging / stopCharging 无额外参数。

暂停/休眠 ​

startPause / stopPause 无额外参数。

startHibernation

参数类型必填说明
wakeUpTimestring否唤醒时间(ISO 8601)

stopHibernation 无额外参数。

证书更新 ​

updateCertificate

参数类型必填说明
servicestring是服务类型(如 'MQTT')
keyDownloadLinkstring是密钥下载链接
certificateDownloadLinkstring是证书下载链接
certificateAuthorityDownloadLinkstring否证书颁发机构下载链接

7.6 动作参数格式 ​

动作参数以 JSON 对象数组的形式传递:

json
{
  "actionType": "pick",
  "actionId": "action-001",
  "blockingType": "HARD",
  "actionParameters": [
    {
      "key": "deviceId",
      "value": "device-01"
    },
    {
      "key": "loadId",
      "value": "load-001"
    }
  ]
}

参数支持的数据类型:

  • string
  • integer
  • float
  • boolean
  • object
  • array

7.7 动作执行与节点/边的触发 ​

节点动作触发 ​

到达节点时,该节点上定义的所有动作被添加到执行队列。动作可以:

  • 自我终止(如音频信号持续5秒)
  • 成对执行(如 activateWarningLights / deactivateWarningLights)

边动作触发 ​

在边上执行的动作只能在移动机器人在边上时运行。动作从进入边开始执行,到离开边结束。

动作状态转换 ​

动作状态转换图示

  1. INITIALIZING → RUNNING:初始化完成后开始执行
  2. RUNNING → PAUSED:因安全区域违反等暂停
  3. RUNNING → FINISHED:成功完成
  4. RUNNING → FAILED:执行失败
  5. RUNNING → RETRIABLE:可重试的失败
  6. PAUSED → RUNNING:恢复执行
  7. PAUSED → FAILED:无法恢复
  8. RETRIABLE → RUNNING:通过 retry 动作重试
  9. RETRIABLE → FAILED:通过 skipRetry 跳过

基于 VDA 5050 Version 3.0.0