Skip to content

7. 动作

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

7.1 动作概述

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

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

7.2 即时动作 (Instant Actions)

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

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

即时动作的特点

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

即时动作示例

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

无效即时动作

当移动机器人收到无法执行的 instantAction 时,应报告 'INVALID_INSTANT_ACTION' 错误,级别为 'WARNING',并将 instantActionactionId 作为 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 定义了一组标准化的动作类型。所有移动机器人应支持 cancelOrderstartPausestopPause 这三个动作。

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

参数类型必填说明
xfloat64X 坐标
yfloat64Y 坐标
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. INITIALIZINGRUNNING:初始化完成后开始执行
  2. RUNNINGPAUSED:因安全区域违反等暂停
  3. RUNNINGFINISHED:成功完成
  4. RUNNINGFAILED:执行失败
  5. RUNNINGRETRIABLE:可重试的失败
  6. PAUSEDRUNNING:恢复执行
  7. PAUSEDFAILED:无法恢复
  8. RETRIABLERUNNING:通过 retry 动作重试
  9. RETRIABLEFAILED:通过 skipRetry 跳过

基于 VDA 5050 Version 3.0.0