← ALL PROJECTSMANIPULATION & PERCEPTION

SantaBot — Robotic Holiday Display

YEAR2025
STATUSCOMPLETE
ROLELead Software Architect — Team of 4
COURSEIntro to Robotics

// ABSTRACT

SantaBot is a dual-mode robotic workflow built for Duke's Introduction to Robotics course. The system implements a "perception-to-execution pipeline" where the arm autonomously identifies, grasps, and places Christmas ornaments in Santa Mode — then reverses the sequence in Grinch Mode. The project was first validated in Gazebo and RViz simulation, then successfully transitioned to a physical robot arm that performed the complete task sequence live during final presentations.

SKILLS

Motion PlanningKinematicsROS ArchitectureSimulation-to-Hardware TransferPython Design Patterns

TOOLS

PythonGazeboRVizSOLIDWORKSMotion PlanningKinematicsROS
// TECHNICAL WRITEUP

Project Overview

SantaBot was developed as a one-month team project for Duke's Introduction to Robotics course. The brief: design a robotic system that demonstrates core competencies in kinematics, motion planning, and system integration — with a festive theme.

The result was a dual-mode pipeline where a robotic arm autonomously stages and de-stages a Christmas scene, switching between "Santa Mode" (placing ornaments on a tree) and "Grinch Mode" (removing them).

System Architecture

The system was organized into three layers:

  1. Perception: Object detection identifying target positions (ornament holders on the tree model)
  2. Planning: Motion planning routines computing safe, collision-free trajectories between pick and place positions
  3. Execution: Cartesian control and grasp strategies for reliable object handling

This separation allowed the Santa and Grinch behavior sequences to share the same underlying planning primitives, with only the task order reversed.

Mechanical Design

I designed a modular, 3D-printable Christmas tree model in SOLIDWORKS. The tree was compartmentalized into stackable sections for assembly convenience — each section printed separately and assembled on-site. Ornament holders were dimensioned to provide consistent grasp targets.

Software Implementation

The control software was written in Python, organized around reusable planning methods:

  • pick(target): Approach, grasp, and lift from a specified target position
  • place(position): Move to target, lower, release, and retreat
  • santa_sequence(): Orchestrates pick-and-place for all ornament positions
  • grinch_sequence(): Reverses the santa sequence — retrieves ornaments and stacks them

Key motion planning decisions:

  • Cartesian control for straight-line approach and retreat to avoid knocking adjacent ornaments
  • Joint-space transitions between pick and place positions to maximize reachability
  • Explicit safe joint configurations used as waypoints between tasks

Simulation and Validation

The full system was developed and validated in Gazebo with visualization in RViz. Running in simulation first allowed rapid iteration on grasp strategies and joint-space waypoints without risk to hardware.

After simulation validation, the system was transferred to a physical robot arm with minimal modification — a direct consequence of the modular software architecture and careful calibration of the SOLIDWORKS tree model to match the physical environment.

Results

Both Santa and Grinch modes were fully implemented and validated in simulation. During the live final presentation, the physical robot arm completed the full task sequence with consistent, repeatable results — the system handled all ornament positions without manual intervention.