Skip to main content

Classical vs learned

A deterministic task state machine is an explicit flowchart: select product → reserve → plan grasp → execute → attach → insert → survey → commit → verify (plus recover/fault). Same inputs → same transitions. It owns authority.

An advisory ML / LLM model may suggest a recovery choice (retry_segment, resume_at_recovery_state, abandon_task) but cannot invent new primitives, skip reservations, or bypass MoveIt collision checks. Schema validation, circuit breakers, and re-authorization at execution time keep it untrusted.

Classical perception here is also deterministic vision, not a learned controller. Remote learned inference is a future boundary: still advisory and perception-shaped, never the task authority.

Why it matters here​

Models advise; C++ state machines and MoveIt decide. The reasoner is off by default and can only choose among the enumerated, more cautious recovery primitives.

┌──────────────────────────────────────┐
│ Task SM + MoveIt + world state │ ← authority
└────────────────▲─────────────────────┘
│ enumerated primitives only
┌────────────────┴─────────────────────┐
│ Optional reasoner (HTTP, audited) │ ← advisory, default off
└──────────────────────────────────────┘

This project​

PiecePath
Task SMrestocker_task_executor/…/restock_task_machine.hpp
Coordinator…/src/restock_action_coordinator_node.cpp
Candidatesgrasp_candidates.cpp, placement_candidates.cpp
Recovery gate…/src/recovery_advice_gate.cpp
Reasonerrestocker_reasoner/

The reasoner is an advisory sidecar: it may only choose among enumerated recovery primitives. Any remote inference stays behind the same observation/advice contracts.

References​