4 changed files with 179 additions and 4 deletions
@ -0,0 +1,170 @@ |
|||||
|
### 硬件接口 |
||||
|
|
||||
|
connector-cl2 通讯 |
||||
|
|
||||
|
MQTT Package |
||||
|
|
||||
|
|
||||
|
### 任务结构 |
||||
|
|
||||
|
所有的任务,都分为3个层级 |
||||
|
|
||||
|
```text |
||||
|
第一级 业务任务 BizTask |
||||
|
第二级 预执行任务 PlanTask |
||||
|
第三级 设备指令任务 DiviceTask |
||||
|
|
||||
|
比如 |
||||
|
|
||||
|
[树形展开]+ 第一级任务列表 BizTask 业务任务 |
||||
|
[树形展开]+ 预执行任务1.1 PlanTask |
||||
|
[树形展开]+ 预执行任务1.2 PlanTask |
||||
|
[树形展开]+ 预执行任务1.3 PlanTask |
||||
|
设备执行任务1.3.1 DeviceTask1 |
||||
|
设备执行任务1.3.2 DeviceTask1 |
||||
|
设备执行任务1.3.3 DeviceTask3 |
||||
|
``` |
||||
|
|
||||
|
|
||||
|
### 任务拆解 |
||||
|
|
||||
|
#### 业务任务 BizTask |
||||
|
```javascript |
||||
|
RCS.dispatchTask({ |
||||
|
type: 'carry', // 任务类型 |
||||
|
agv: 'cl2', // 指定车辆 |
||||
|
lpn: 'pallet1124', // 托盘ID, 用于校验 |
||||
|
from: '27', // 起始点位 |
||||
|
to: '20' // 目标点位 |
||||
|
}); |
||||
|
``` |
||||
|
业务任务是用户发起的任务,通常是通过 LCC 控制中心的界面来发起。 |
||||
|
|
||||
|
com.galaxis.rcs.task.TaskManager 会将任务拆解为多个预执行任务 PlanTask。 |
||||
|
比如下面的指令 |
||||
|
|
||||
|
#### 发送 |
||||
|
|
||||
|
##### 移动 robotMove |
||||
|
|
||||
|
```javascript |
||||
|
{ |
||||
|
type: 'robotMove', |
||||
|
robotId: '机器人编号', // 机器人设备ID |
||||
|
startWayPoint: '24', // 起点Id, WayPointId |
||||
|
endWayPoint: '16', // 终点ID, WayPointId |
||||
|
armRotiation: numer // 货叉/机械臂,相对于头的角度, 逆时针为正 |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
LCC 控制中心使用的是第一人称视角参照系。**`FirstPerson`** |
||||
|
|
||||
|
CL2 和 CLX 使用的是货叉朝向和方向正负系。比如: 凯乐士CL2使用 |
||||
|
|
||||
|
```json |
||||
|
[{ "X": 3, "Y": 5, "Speed": 1200 }, { "X": 1, "Y": 5, "Speed": -1000}] |
||||
|
``` |
||||
|
|
||||
|
那么,从 LCC 控制参考,转换为 CL2 / CLX 控制参考,应当使用方法为: **`FirstPersonToCl2.convertMoveCommand()`** |
||||
|
|
||||
|
|
||||
|
##### 转动 robotRotation |
||||
|
|
||||
|
```javascript |
||||
|
{ |
||||
|
type: 'robotRotation', |
||||
|
robotId: '机器人编号', |
||||
|
worldRotation: 90 // 转动身体到世界角度 90 度 |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
|
||||
|
##### 取货 robotLoad |
||||
|
|
||||
|
```javascript |
||||
|
{ |
||||
|
type: 'robotLoad', |
||||
|
robotId: '机器人编号', |
||||
|
storeBarCode: '地标二维码编号', // 用于校验 |
||||
|
boxItem: '容器ID', // 托盘或周转箱ID,用于校验 |
||||
|
rackItem: '货架ID', // 源货架/层/列/格 |
||||
|
bay: '列', |
||||
|
level: '层', |
||||
|
cell: '格' |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
|
||||
|
##### 放货 robotUnload |
||||
|
|
||||
|
```javascript |
||||
|
{ |
||||
|
type: 'robotUnload', |
||||
|
robotId: '机器人编号', |
||||
|
storeBarCode: '地标二维码编号', // 用于校验 |
||||
|
rackItem: '货架ID', // 目标货架/层/列/格 |
||||
|
bay: '列', |
||||
|
level: '层', |
||||
|
cell: '格' |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
|
||||
|
##### 充电 robotCharger |
||||
|
|
||||
|
```javascript |
||||
|
{ |
||||
|
type: 'robotCharger', |
||||
|
robotId: '机器人编号', |
||||
|
chargerItem: '20' // 充电位ID |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
|
||||
|
|
||||
|
#### 接收 |
||||
|
|
||||
|
##### 位置/姿态/电量/等其他数据上报 |
||||
|
|
||||
|
```javascript |
||||
|
{ |
||||
|
type: 'reportState', |
||||
|
locationX: number, // 目前所在位置 |
||||
|
locationY: number, |
||||
|
lookAtX: number, // 第一人称视角望向的位置 |
||||
|
lookAtY: number, |
||||
|
armRotation: number, // 货叉/机械臂相对于头的偏移角度,逆向旋转角度为正 |
||||
|
totalBatteryCapacity: number, // 总电池容量 |
||||
|
remainingBattery: number, // 剩余电池容量 |
||||
|
alermLevel: number, // 报警层级 1=全界面警告 / 2=当前层警告 / 3=不警告 |
||||
|
LED: string // LED 灯状态 |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
|
||||
|
##### 心跳上报 |
||||
|
|
||||
|
```javascript |
||||
|
{ |
||||
|
type: 'heartbeat', |
||||
|
createTime: number // 相对于 1970年以来的毫秒总数,时间戳 |
||||
|
} |
||||
|
``` |
||||
|
|
||||
|
|
||||
|
|
||||
|
### 基于硬件接口的监控及动画显示 |
||||
|
|
||||
|
|
||||
|
|
||||
|
store_location_map |
||||
|
|
||||
|
location_code |
||||
|
|
||||
|
item |
||||
|
|
||||
|
bay |
||||
|
|
||||
|
level |
||||
|
|
||||
|
cell |
||||
Loading…
Reference in new issue