Robot Design Studio — Spring 2026 | Northwestern University
A 3-DOF dexterous robotic finger designed and built as the Mechanical Engineering capstone project. The finger uses a 4-bar linkage mechanism and is validated through a whack-a-mole reaction-time benchmark.
The main ROS 2 software stack. Includes Drake-based simulation, inverse kinematics, joint-space control, AprilTag/RealSense vision, and launch files for both simulation and hardware. This is the top-level entry point for running the finger.
Low-level firmware running on a Teensy 4.1 that interfaces with an ODrive Pro over CAN for torque-controlled actuation of the DJI M2006 motors. Communicates with the ROS stack over serial using a lightweight binary protocol.
ROS 2 package that acts as the bridge between the whack-a-mole web app and the robot. Runs a C++ Boost.Beast WebSocket server alongside the rclcpp executor, publishing target pixel coordinates, hit reaction times, and miss events as standard ROS topics.
The whack-a-mole web app itself — a Next.js app designed to run on an iPad. Displays targets at random positions after random delays, measures tap reaction times with sub-millisecond precision, and streams events to the robot over WebSocket. Includes a standalone Python WebSocket server for use outside of ROS.
KiCad schematics for the finger's electrical system — effectively a wiring diagram covering motor driver connections, CAN bus, encoder interfaces, and power routing. See schematic.pdf for a quick overview without opening KiCad.
GitHub Pages project website showcasing the team, design, and results. Live at speedster-team.github.io/Speedster-Website.
iPad (whackmole web app)
│ WebSocket
▼
whackamole_ros2 ──────► robotic-finger (ROS 2 control stack)
│
motor-control
(Teensy 4.1 firmware)
│
ODrive Pro → DJI M2006 motors