Back to work

Robotics / 2023 / Validated in simulation

Autonomous Retail Intelligence Robot

A ROS-based autonomous retail robot combining real-time shelf perception, multi-object tracking, autonomous navigation, customer-request handling, and ERP synchronisation.

Role

Sole engineer (MSc dissertation)

Organisation

MSc Robotics, Heriot-Watt University Dubai

Disciplines

Robotics / Perception / Autonomous Systems / AI Integration

Status

Validated in simulation

Autonomous Retail Intelligence Robot preview

What this system solves

Brick-and-mortar retail still depends on manual stocktakes, paper customer requests, and inventory data that drifts out of sync with what is actually on the shelves. A robotic system that can see, navigate, and update business records continuously is operationally valuable but rarely shown end-to-end.

System overview

Built on the Husarion ROSbot 2 Pro platform in Gazebo, ARIR uses YOLO-family detectors with DeepSORT tracking to maintain a stable inventory view across frames, publishes product locations through ROS topics, synchronises state to an Odoo ERP via XML-RPC, and accepts customer requests that drive guided navigation through move_base.

Architecture

System flow

CameraYOLODeepSORTInventoryOdoo ERP
  • RGB/Depth camera frames are consumed by a perception node running YOLO inference.
  • DeepSORT maintains track identities across frames and feeds a debounce buffer that promotes a detection into inventory only after stable observation.
  • An inventory aggregator publishes product locations on a ROS topic and persists changes to CSV and Odoo via XML-RPC.
  • Independently, gmapping builds the store map while move_base handles path planning and obstacle avoidance.
  • A customer-request handler converts requests into goal poses and routes the robot to the appropriate shelf coordinates.

Engineering decisions

Track, then count

Frame-by-frame detections produce visible double counts when products briefly leave and re-enter the field of view. DeepSORT track IDs plus a debounce buffer mean an item is only added or removed from inventory after stable observation, not on every frame.

ERP synchronisation is idempotent

Odoo state is the source of truth. The robot pushes diffs scoped to a stable product key so re-running a route or replaying a buffer cannot corrupt counts.

Navigation and perception are decoupled

The navigation graph (gmapping + move_base) does not depend on the perception pipeline. Customer requests are independent goal sources, so perception failures degrade gracefully into guided navigation only.

What I built

  • Designed the perception → tracking → inventory state → ERP pipeline as a single end-to-end system.
  • Trained and integrated YOLO detectors for shelf product classes; tuned DeepSORT for stable IDs under motion.
  • Built the ROS nodes that convert detections into product locations and publish them to the navigation and ERP layers.
  • Implemented Odoo XML-RPC synchronisation with idempotent inventory updates.
  • Set up the gmapping + move_base navigation stack and integrated customer-request handling.

Validation and results

  • Autonomous navigation, perception, and ERP synchronisation evaluated in Gazebo with multiple shelf layouts.
  • Customer-request flow validated end-to-end: voice/text input → product lookup → guided navigation → arrival.
  • Detector evaluated against held-out images; tracker stability checked across multiple simulated camera passes.

Limitations

  • Evaluation was primarily in simulation; physical robot trials were limited by hardware access.
  • Dataset diversity was constrained — generalisation to unseen store layouts requires additional training data.
  • Model training was cloud-dependent; the pipeline assumes pre-trained weights at runtime.
  • Perception → ERP synchronisation introduces non-zero latency that needs further measurement on production-class hardware.

What would come next

  • Hardware-in-the-loop evaluation on a real ROSbot 2 Pro with on-board inference.
  • Switch from lexical product matching to embedding-based queries for fuzzier customer requests.
  • Add health and freshness monitoring on the Odoo synchronisation path for production deployments.

Media gallery

Retail simulation with real-time detection overlays
Retail simulation with real-time detection overlays
Customer location request and response workflow
Customer location request and response workflow
SLAM map and multi-camera visualization
SLAM map and multi-camera visualization
YOLOv5 model testing output
YOLOv5 model testing output
Training metrics and convergence curves
Training metrics and convergence curves
System architecture and data-flow methodology
System architecture and data-flow methodology