- World + object placement — 20
- Detection node + metadata correctness — 25
- Zenoh publishing + key design — 20
- Ingest worker + idempotent DB writes — 25
- Reproducibility report — 10
Background — Zenoh + ROS 2 + TurtleBot
Watch these before you begin, then study the reference implementation.Zenoh/ROS 2 Bridge Presentation and TurtleBot4 Demo
The TurtleBot demo walkthrough starts at 25:25.
Live RMW Zenoh Workshop
Reference: zturtle-python
The zturtle-python demo shows a working TurtleBot3 controlled entirely over Zenoh — it subscribes to Twist messages for wheel velocity, publishes a camera feed, and handles WiFi network transitions by reconnecting to a new peer/router. Study this implementation before designing your detection event pipeline.Environment Requirements
You will run:- TurtleBot3 maze simulation (provided repo)
- ROS 2 Humble
- Zenoh router (
zenohd) - PostgreSQL
- Python 3.10+
/odom/tf,/tf_static/camera/image_raw(or your configured camera topic)/cmd_vel
1. Maze Object Placement
Bench layout
Modify the maze world:- Create 3–4 benches touching maze walls.
- Bench height must allow camera visibility.
- Place 3–5 objects per bench.
- Use COCO-class objects only (cup, bottle, book, laptop, mouse, etc.).
- Each bench must have a different object set.
Deliverable
Createworld_assets.md containing:
- Bench IDs
- Bench approximate poses
- Object list per bench
- Two screenshots per bench from robot camera view
2. Detection Node
Implement a detector process that:- Subscribes to the camera topic
- Runs object detection (Ultralytics YOLO recommended)
- Extracts bounding boxes, class, confidence
- Samples robot state at the same timestamp
Required metadata per frame
From image message:- timestamp
- frame_id
- width, height, encoding
/odom:
- x, y, yaw
- vx, vy, wz
- base frame
- camera frame
- base→camera transform (4×4) if available
3. Zenoh Event Publishing
Start Zenoh
Run a Zenoh router:Key expression design
All detection events must use:Detection event JSON schema
Publish JSON with this structure:Reliability rule
Ensure correctness by:- UUID
event_id - Monotonic
sequenceper run - Idempotent database inserts
4. PostgreSQL Schema (Required)
5. Zenoh Ingest Worker
Implement a Zenoh subscriber that:- Subscribes to
maze/**/detections/v1/* - Parses JSON
- Inserts rows in one transaction
- Ignores duplicates via constraints
- Logs failures
Deliverables
- Detector code
- Zenoh publisher logic
- Zenoh ingest worker
- SQL schema
- world_assets.md
- Run report with counts and class histogram

