<aside>
🧱
What this is
A reusable reference for building a robot / physical AI perception stack with stable interfaces, measurable performance, and graceful degradation.
What this is not
- Can incorporate additional sensors (LiDAR, radar) later without breaking upstream interfaces.
A vehicle-specific implementation doc. Vehicle, sensor, and compute choices belong in the “Platform profile” section.
</aside>
1) Goal
Deliver a camera-first perception pipeline that:
- Runs on an edge compute target.
- Publishes a stable interface contract to downstream consumers (planning, autonomy, UI).
<aside>
✅
Definition of Done (overall)
- Perception publishes a stable contract topic set (messages, frames, rates).
- Latency and FPS are measured and logged in real time.
- Pipeline runs for sustained duration without crashes and with bounded degradation behavior.
</aside>
2) Platform profile (fill per deployment)
Use this section to specialize the stack for a particular robot / vehicle.
- Middleware: ROS 2
- Compute target: (e.g., Jetson Orin Nano, x86 + GPU, etc.)
- Primary sensor: (e.g., front camera)
- Secondary sensors (optional): (e.g., LiDAR later)
- Operating modes:
- camera-only (default)
- fused (when secondary sensors are present)
- Out of scope: HiL (unless explicitly added)
3) Interface contract (freeze early)
These are the outputs that downstream modules will consume. Keep names and semantics stable across platforms.
Required outputs
/perception/drivable_grid
- Type: choose one and freeze:
nav_msgs/OccupancyGrid or grid_map-style grid
- Frame: choose one and freeze:
base_link or odom
- Update rate target: 10 to 20 Hz