Personal project · Viam

ViamGreeter

An autonomous trade-show booth greeter: a webcam spots passersby and an SO-101 arm turns, points, beckons, and waves at each one.

Real SO-101 arm

Simulated SO-101 in Viam's 3D scene

Overview

Greeter is an autonomous booth greeter built on the Viam platform as part of Viam's at-home technical exercise. A fixed webcam and a pre-trained person detector find and track people walking past a booth, and an SO-101 robotic arm engages each one: it turns toward them, points, beckons them over, and waves before moving on to the next person.

How it works

  • Perception loop: the webcam feed runs through Viam's vision service and a people-detection model. A tracker confirms new people and estimates their bearing relative to the arm.
  • Behavior state machine: Idle → Point (new confirmed person) → Beckon (after 2.5 s) → Wave (after two beckons) → Idle. If the person leaves the view for 2 s, any greeting state returns to Idle.
  • Motion loop: gesture poses are generated and sent to the arm continuously, with a speed setting for running gently on real hardware.
  • Sim or real: one setting in .env switches between Viam's simulated SO-101 and a physical SO-101 arm.
  • Tested: unit tests cover the math, gestures, and tracking with no robot needed, and helper scripts check the connection and live detections before the arm ever moves.

My role

Solo project: design, implementation, testing, and documentation.

Gallery