Robotics Fleet Management Integration
Overview
| Attribute |
Value |
| Context |
Robotics Fleet Management |
| Pattern |
Partnership |
| Direction |
Bidirectional |
| Protocol |
Apache Kafka + WebSocket |
| Topics |
robotics.tasks.*, process-path.routing.* |
Integration Summary
Process Path and Robotics Fleet Management have a partnership for coordinating robotic picking and transport operations. Robots deliver pods to pick stations and transport totes between zones.
flowchart LR
subgraph PP["PROCESS PATH"]
TR[Tote Routing]
IC[Induct Coordination]
CP[Capacity Planning]
end
subgraph RF["ROBOTICS FLEET"]
PD[Pod Delivery]
TT[Tote Transport]
PP2[Path Planning]
BM[Battery Management]
end
TR <-->|Events + WebSocket| TT
IC <-->|Task Requests| PD
CP <-->|Capacity Events| PP2
Robot Task Coordination Sequence
sequenceDiagram
participant PP as Process Path
participant RF as Robotics Fleet
participant ROBOT as Robot AMR-015
participant STATION as Induct Station
PP->>RF: ToteTransportRequestEvent
Note right of PP: Transport TOTE-789<br/>to INDUCT-03
RF->>RF: Select optimal robot
RF->>ROBOT: Assign transport task
ROBOT->>ROBOT: Navigate to tote
ROBOT->>ROBOT: Pick up tote
ROBOT->>STATION: Transport tote
ROBOT->>RF: Task completed
RF->>PP: RobotTaskCompletedEvent
Note left of RF: Delivery confirmed<br/>45.5m traveled
PP->>PP: Trigger induct process
Events Published by Process Path
ToteTransportRequestEvent
Purpose: Request robot to transport tote
Topic: process-path.robotics.requests
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| {
"specversion": "1.0",
"type": "com.paklog.processpath.transport.request.v1",
"source": "/process-path-service",
"id": "evt-transport-123456",
"time": "2025-01-20T10:05:00.000Z",
"data": {
"requestId": "REQ-TRANSPORT-123456",
"shipmentId": "SHP-123456",
"toteId": "TOTE-789",
"origin": {
"type": "PICK_STATION",
"stationId": "PICK-STATION-05",
"zone": "ZONE-A"
},
"destination": {
"type": "INDUCT_STATION",
"stationId": "INDUCT-03",
"zone": "AFE-ZONE"
},
"priority": "NORMAL",
"slaCutoff": "2025-01-20T16:00:00Z",
"requestedAt": "2025-01-20T10:05:00Z"
}
}
|
InductReadyEvent
Purpose: Signal tote ready for induct, request robot if needed
Topic: process-path.robotics.requests
1
2
3
4
5
6
7
8
9
10
11
| {
"type": "com.paklog.processpath.induct.ready.v1",
"data": {
"shipmentId": "SHP-123456",
"toteId": "TOTE-789",
"inductStationId": "INDUCT-03",
"itemsInTote": 3,
"arrivalMethod": "ROBOT_DELIVERY",
"expectedArrivalTime": "2025-01-20T10:08:00Z"
}
}
|
Events Consumed from Robotics
RobotTaskCompletedEvent
Purpose: Track tote delivery, trigger next step
Topic: robotics.tasks.completed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| {
"specversion": "1.0",
"type": "com.paklog.robotics.task.completed.v1",
"source": "/robotics-fleet-management",
"id": "evt-robot-123456",
"time": "2025-01-20T10:08:00.000Z",
"data": {
"taskId": "TASK-2025-01-20-001234",
"taskType": "TOTE_TRANSPORT",
"robotId": "ROBOT-AMR-015",
"robotType": "AMR",
"shipmentId": "SHP-123456",
"toteId": "TOTE-789",
"originLocation": "PICK-ZONE-A-12",
"deliveryLocation": "INDUCT-STATION-03",
"taskStartedAt": "2025-01-20T10:05:30Z",
"taskCompletedAt": "2025-01-20T10:08:00Z",
"travelDistanceMeters": 45.5,
"travelTimeSeconds": 150,
"batteryLevelAfter": 72
}
}
|
PodDeliveredEvent
Purpose: Track pod arrival at pick station
Topic: robotics.tasks.pod-delivered
1
2
3
4
5
6
7
8
9
10
11
12
| {
"type": "com.paklog.robotics.pod.delivered.v1",
"data": {
"taskId": "TASK-POD-001",
"robotId": "ROBOT-AGV-008",
"podId": "POD-A-1234",
"pickStationId": "PICK-STATION-05",
"skusOnPod": ["SKU-WIDGET-001", "SKU-GADGET-003"],
"pendingPicks": 5,
"deliveredAt": "2025-01-20T10:07:00Z"
}
}
|
RobotCapacityEvent
Purpose: Monitor robot fleet capacity
Topic: robotics.fleet.capacity
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| {
"type": "com.paklog.robotics.capacity.v1",
"data": {
"fleetId": "FLEET-WH001",
"totalRobots": 50,
"availableRobots": 35,
"busyRobots": 12,
"chargingRobots": 3,
"utilizationPercent": 70,
"avgTaskQueueDepth": 2.5,
"avgTaskCompletionTime": "PT3M",
"timestamp": "2025-01-20T10:00:00Z"
}
}
|
Robot Task Types
Pod Delivery (for Robotic Picking)
sequenceDiagram
participant PP as Process Path
participant RF as Robotics Fleet
participant ROBOT as Robot AGV
participant POD as Storage Pod
participant PICK as Pick Station
PP->>RF: Request pod with SKUs
RF->>ROBOT: Assign pod retrieval
ROBOT->>POD: Retrieve from storage
ROBOT->>PICK: Deliver to station
RF->>PP: PodDeliveredEvent
Note over PICK: Picker picks items
ROBOT->>POD: Return to storage
Tote Transport (for AFE Induct)
sequenceDiagram
participant PP as Process Path
participant RF as Robotics Fleet
participant ROBOT as Robot AMR
participant TOTE as Tote
participant INDUCT as Induct Station
Note over PP: Pick complete
PP->>RF: ToteTransportRequest
RF->>ROBOT: Assign transport
ROBOT->>TOTE: Pick up tote
ROBOT->>INDUCT: Transport
RF->>PP: TaskCompletedEvent
Note over INDUCT: Operator takes tote
Conveyor Bypass (for Special Handling)
flowchart LR
ITEM[Oversized Item] -->|Too large for conveyor| PP[Process Path]
PP -->|Robot transport request| RF[Robotics Fleet]
RF -->|Direct transport| PACK[Pack Station]
style ITEM fill:#ffcccc
Capacity Coordination
Robot Fleet Impact on Routing
Process Path considers robot availability in routing decisions:
1
2
3
4
5
6
7
8
| {
"pathScoring": {
"robotDependentPaths": ["AFE_ROBOTIC_PICK", "SPECIAL_HANDLING"],
"currentRobotUtilization": 70,
"robotCapacityScore": 80,
"adjustment": "NORMAL"
}
}
|
Robot Bottleneck Detection
1
2
3
4
5
| If robot utilization > 90%:
1. Reduce routing to robot-dependent paths
2. Prefer conveyor-based transport
3. Alert Operations
4. Request additional robots from standby
|
Priority Coordination
SLA-Based Robot Priority
1
2
3
4
5
6
7
| {
"requestId": "REQ-TRANSPORT-123456",
"priority": "HIGH",
"priorityReason": "SLA_CRITICAL",
"slaPriority": "RED",
"expectedRobotAssignment": "PT30S"
}
|
| SLA Priority |
Robot Priority |
Expected Assignment |
| GREEN |
NORMAL |
< 2 min |
| YELLOW |
HIGH |
< 1 min |
| RED |
CRITICAL |
< 30 sec |
Zone Coordination
Robots operate in defined zones with Process Path coordination:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| {
"zones": [
{
"zoneId": "ZONE-A",
"robotsAssigned": 10,
"currentTasks": 8,
"avgTransitTime": "PT2M",
"congestionLevel": "NORMAL"
},
{
"zoneId": "AFE-ZONE",
"robotsAssigned": 15,
"currentTasks": 14,
"avgTransitTime": "PT3M",
"congestionLevel": "HIGH"
}
]
}
|
WebSocket Integration
Real-time robot position updates via WebSocket:
1
2
3
4
5
6
7
8
| // WebSocket connection for real-time updates
ws.onmessage = (event) => {
const update = JSON.parse(event.data);
if (update.type === 'ROBOT_POSITION') {
// Update robot position on map
// Track tote/shipment progress
}
};
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| {
"type": "ROBOT_POSITION",
"robotId": "ROBOT-AMR-015",
"position": {
"x": 125.5,
"y": 78.2,
"heading": 45
},
"carryingTote": "TOTE-789",
"shipmentId": "SHP-123456",
"destinationStation": "INDUCT-03",
"eta": "PT45S",
"timestamp": "2025-01-20T10:07:30Z"
}
|
Error Handling
| Error |
Robotics Action |
Process Path Action |
| Robot breakdown |
Reassign task |
Monitor delay, may reroute |
| Path blocked |
Reroute robot |
Track impact on SLA |
| Battery critical |
Return to charge |
Reassign, update capacity |
| Tote not found |
Report error |
Investigate, alert ops |
| Collision avoided |
Log event |
Track congestion patterns |
| Metric |
Target |
Description |
| Task assignment time |
< 30 sec |
Time to assign robot |
| Task completion time |
< 5 min |
Avg transport time |
| Fleet utilization |
70-85% |
Optimal utilization |
| Collision events |
0 |
Safety metric |
Monitoring
Key Metrics
robotics_tasks_requested_total
robotics_tasks_completed_total
robotics_fleet_utilization_percent
robotics_avg_task_duration_seconds
process_path_robot_dependent_routing_total
Alerts
- Robot fleet utilization > 95%
- Task assignment delay > 2 min
- Multiple robots in error state
- Collision avoidance event rate spike