BS ECE · Carnegie Mellon · May 2028

zhaojinchu@cmu.edu github.com/zhaojinchu linkedin.com/in/zhaojinc


AN-002 · Embedded & Robotics · In progress
Started Jul 2026

Shmoobot: a ballbot driven by feel


1.0Abstract

The Shmoobot is the Microdynamic Systems Laboratory’s ballbot: a robot that balances on a single ball and, until this summer, could only be driven with a physical controller. I built a PyQt GUI wired into the ROS 1 nodes it runs on, adding keyboard and mouse control, and then a teleoperation mode that drives it from the lab’s maglev haptic device with force feedback, so the operator’s hand gets information back from the robot instead of only sending commands to it.

At a glance

Parameter Value
Status In progress
When and where Summer 2026, Microdynamic Systems Laboratory, Carnegie Mellon
My part Undergraduate researcher: the GUI and the teleoperation mode
Built with ROS 1, PyQt; the lab’s 6-DOF maglev haptic device as the controller
Before Driven only with a physical controller
After Keyboard and mouse from a PyQt GUI, or the haptic device with force feedback
On show Robotics & AI Discovery Day, Carnegie Mellon, Sep 16 2026
The Shmoobot ballbot standing in the lab: a tall mast on a ball drive, with batteries, a compute module and a depth camera at the top
The Shmoobot in the lab, August 2026.

The robot

A ballbot balances on a single ball, so the loop that keeps it upright is also the loop that moves it. The Shmoobot is the lab’s, and until this summer it took commands only from a physical controller. As with the haptics write-up, the robot belongs to the lab: the pictures show it in the room and in the demo, not its internals.

A GUI over ROS 1

I built a PyQt GUI wired into the ROS 1 nodes the Shmoobot runs on, adding keyboard and mouse control where the robot previously accepted only a physical controller.

Driving it by feel

Then the fun part: a teleoperation mode that drives the ballbot from the lab’s maglev haptic device, with force feedback, so the operator’s hand gets information back from the robot instead of only sending commands to it. The device, and the controller I built for it, have their own page: maglev haptic controller.

Split view: on the left a hand on the haptic device with the ballbot’s depth and colour camera feeds on a monitor; on the right the ballbot rolling across the lab floor

Teleoperation: the hand on the device (left) drives the ballbot (right), and the robot’s camera feeds come back to the monitor. Ten seconds of the demo video.

What’s next

Demoing and presenting the Shmoobot at CMU’s Robotics & AI Discovery Day on September 16.

← All projects