All projects

2026

ROS2 · Computer Vision · TurtleBot3 · Human-Robot Interaction

Scout — Robot Guide Dog

Built Scout, a TurtleBot3-based robot guide dog with real-time crosswalk and traffic-light vision, LiDAR person-tracking, and a fail-safe velocity-gate stack — led perception and safety-control on a 4-person Human-Robot Interaction team.

Scout — Robot Guide Dog hardware

01

Approach & key decisions

  • Crosswalk and traffic-light vision

    A front-facing camera feeds two OpenCV nodes at ~5 fps. The crosswalk detector masks the floor ROI for bright bands, clusters them by vertical position, and only accepts a crosswalk when four or more bands widen consistently toward the bottom of the frame — mimicking the true perspective of tape strips receding into the distance. The traffic-light detector looks for a compact colored blob with a white 'signal housing' ring around it, which rejects any red or green object sitting on the floor that isn't an actual signal.

  • Layered, fail-safe velocity gating

    Nav2 never talks to the wheels directly. Its command passes through a vision gate (stops on a latched red light), a rear LiDAR guard (stops if the person we're leading falls behind or leaves the sensor's cone), and a final safety controller that arbitrates all three. Every input topic carries its own staleness timeout, and the default state for a stale or missing topic is always 'stop' — a crashed camera node or a disconnected LiDAR fails toward safety, never toward silently passing the last known-good velocity through.

  • Expressive feedback and Scout Connect

    A screen on the robot's head cycles through a 16-state expression set (default, happy, confused, angry, arrived, and more) driven by ROS2 events — traffic light color, obstacle detection, journey completion — so the robot's intent is legible without reading a screen. The companion app, Scout Connect, takes a spoken destination, announces route progress, and layers in haptic and audio cues so guidance doesn't depend on looking at a phone.

System spec

Platform
TurtleBot3 Burger on ROS2
Vision
OpenCV crosswalk + traffic-light detectors (Python)
Safety
Layered velocity gate: vision, rear LiDAR guard, arbiter
Sensing
Front/rear USB cameras + 360° LiDAR
App
Scout Connect — voice destination input, haptic/audio feedback
Tools
ROS2, Nav2, rclpy, OpenCV, Figma

02

Build gallery

TurtleBot3 stack: expression screen up top, front USB camera for crosswalk/traffic-light vision, LiDAR puck, and a Raspberry Pi tier driving everything below.
TurtleBot3 stack: expression screen up top, front USB camera for crosswalk/traffic-light vision, LiDAR puck, and a Raspberry Pi tier driving everything below.
Scout Connect, the companion app: tap-to-speak destination entry over an accessible, high-contrast interface with haptic and audio confirmation.
Scout Connect, the companion app: tap-to-speak destination entry over an accessible, high-contrast interface with haptic and audio confirmation.
The 16-state expression sheet. Each face is triggered by a ROS2 event — route found, red light, obstacle detected, arrival — so the robot's next move reads at a glance.
The 16-state expression sheet. Each face is triggered by a ROS2 event — route found, red light, obstacle detected, arrival — so the robot's next move reads at a glance.

03

Debugging timeline

  1. Crosswalk detector

    The first pass expected each crosswalk band to fill 30% of the frame width, so the narrow, distant stripes of the test crosswalk never triggered a detection.

    Replaced the single-contour-width check with Hough-line band clustering: group contours and lines by vertical position, then require four or more bands that widen toward the bottom of the frame, matching the real perspective of tape receding into the distance.

  2. Traffic-light detector

    Ordinary red objects on the floor — a backpack, a shirt — were being read as a red stop light, and a single noisy frame could clear a latched red early.

    Required a white ring around any colored blob before accepting it as a real signal housing, latched red immediately (fail toward stopping) but demanded three consecutive matching frames before accepting green, and only released a latched red after 1.5s of sustained absence.

  3. Rear LiDAR guard

    Treating every missed detection as 'person lost' made the robot stop constantly on ordinary follow jitter from someone walking a normal, uneven pace.

    Tracked distance over a rolling 1.2s window and fit a linear rate; only declared PERSON_FALLING_BEHIND after a sustained 0.08 m/s recession held for 0.8s, so brief jitter no longer triggered a stop while an actual drop-back still did.

  4. Safety arbitration

    With three independent nodes each feeding the final velocity gate, a silently stale topic — a crashed camera node, a disconnected LiDAR — could be indistinguishable from 'all clear' if the gate just kept passing the last command through.

    Gave every input source its own timeout and made 'stop' the default state until a fresh message arrived, so any dropped topic latched a hard stop instead of letting stale data pass as safe.

04

Results & final demo

  • Fail-safe velocity gate stopped Nav2 output within one 20 Hz control tick of a latched red light, verified against a mock red/green signal rig with zero false passes.
  • Crosswalk detector held a stable lock across the full test course after moving to multi-band clustering, versus missing distant stripes with the original single-contour approach.
  • Rear guard distinguished genuine drop-back from normal walking jitter using the 0.8s confirmation window, cutting spurious stops during live demo runs.

05

The problem

A trained service dog costs $25,000-$50,000+ and a working lifetime of 6-8 years, so a user relying on one from age 15 to 80 may need at least nine different dogs. Most people who could benefit from that independence never get access to it. Group 5 (Katie Chen, Keito Suzuki, Benjamin Baugier, and I) set out to build an MVP of a wheeled robot guide dog on a TurtleBot3: leash-guided like a real dog, but with cameras and LiDAR standing in for the training, plus a companion app for voice destination input and accessible feedback.

Next project