CMU Lunar Rover

This page details my contributions to Carnegie Mellon’s effort to develop a low-cost, swarmable lunar-rover. Currently, the project has Phase II NASA funding, and we are hoping to land on the moon around 2020. Expect more information to be available down the road, but for now I am limited in what content I am allowed to share on this page, including the rover name. My role included many responsibilities including:

  • One of three main firmware developers for the onboard software
  • Lead operator interface developer
  • Validation and fabrication of the single board computer, as well as power systems work on the actual design and routing.

The majority of my work was done in Spring 2018 when I connected with the team for the first time since Summer 2016. I took a leading role with several other software team members to design from scratch the software and hardware for this generation of the rover. This initiative resulted in the first driving, functional SBC in nearly three years of development of the project prior to this work.

The Rover:

This is a test platform specifically for testing our avionics equipment and control software, and it does not represent the actual appearance and form of the final rover. However, it handles significantly well in sandbed testing, and is being entirely controlled by software built by the Spring 2018 avionics. The rover on the left was built to house our custom avionics system, and I created the laser cut board mounts. The rover on the right is a more flight-accurate prototype built to perform mobility and robustness tests. We took both rovers to NASA’s Glenn Research Facility in May 2018 to perform tests. Expect to see footage on Discovery Channel Canada’s “Daily Planet” program!


Here we are at the SLOPE lab at NASA’s Glenn Research Center for mobility testing.  You can see both the avionics-equipped rover and the mobility-testing rover which features a flight-representative carbon-fiber unibody and aluminum wheels. Behind our rovers is the much larger Scarab rover which was also designed at Carnegie Mellon University. Scarab was designed to drive in dark craters in the lunar polar regions, hence it’s lack of a solar array.

Rover demo:

This video shows obstacle navigation of the rover test bed:

This video shows reverse traversal of the rover test bed:


My primary contribution to the project was my work as one of three software engineers working on the firmware for the main processor. We developed software in C for a real-time operating system running on an automotive processor. Due to the critical nature of the mission, all software needs to be written safely with reliable execution, and we worked to the specifications outlined by JPL’s safe coding practices. A significant aspect of the software development is the fully-custom telemetry/command protocol, developed specifically for the high-latency, low-bandwidth application of space-robotics.

Overview of an Hercules RM42 Processor:

Operator Interface

I took the lead developer role on the software interface for the rover, which has been primarily used for testing our avionics pipeline. The interface displays, graphs, and logs real-time telemetry data from the rover, and allows for command and control of the rover’s various onboard systems. The interface was written in C++ using the Qt framework, and communicates via a TCP socket connected to the rover.


I worked closely with a colleague, Jae Choi, to develop a single-board computer (SBC) for the current iteration of the rover. To date, this is the most successfully avionics SBC that we have used, and it has resulted in nearly-flawless system bring-up. We have successfully driven three-phase brushless DC-motors (bldc), on-board IMU filtering, thermal monitoring, encoder feedback, and radio-operations from the main microprocessor, a Texas Instruments Hercules RM42.


Comparison to older boards:

3d model: