johan ahlm michalove

Open Source Robotic Cars

25 Dec 2019 - melbourne, australia

In the August of 2019 we launched a new open source platform for robotics education and research in the form of a DIY robotic racecar and a suite of software and tutorials to get started.

The project, known as the Multi-agent System for non-Holonomic Racing (MuSHR), was the completion of a year’s worth of dedicated effort by many members of the Personal Robotics Lab, in addition to several undergraduate volunteers. Our launch MuSHR received press in GeekWire, Communications of the ACM, and some blogs.

From prototype to platform

Dub Car: my first robocar prototype. Taken in 2017.
Dub Car: my first robocar prototype. Taken in 2017.

The first robotic racecar project at UW began in 2016 when Colin Summers and I tried to teach ourselves robotics by building our own robot car (questionably named “Dub Car”) under the supervision of Prof. Dieter Fox. In doing so, I became proficient using ROS, programmed my first driver, and for the first time experienced the joy of seeing hardware that you built come to life. We continued the project into the summer of 2017, when Colin and I were at JPL: I have fond memories of the first time the car drove wirelessly. We were, of all places, in a Caltech library!

In the fall of 2017, Prof. Sidd Srinivasa and Prof. Dieter Fox funded the construction of a suite of MIT RACECARs for use in a handful of undergraduate and graduate robotics courses (one of which I took!). While the cars themselves were excellent, they were also expensive to build (over $2k per car), and Sidd knew it would be possible to make a cheaper version.

Three generations of mushr cars. Left to right: RACERCAR, v2, v3
Three generations of mushr cars. Left to right: RACERCAR, v2, v3

Patrick Lancaster, our resident fabrication wizard, spent several months prototyping a new, low-cost version of the car. We interated through several designs, first the v2 which had a 3D printed enclousure, a low cost chassis, and a more economic lidar. As we tested this model, the Nvidia Jetson Nano came to market. This allowed us to maintain access to a GPU in a small footprint without incurring the cost of the Jetson TX2. In including the Jetson nano and some small hardware changes (such as new batteries), the v3 roboracer came about (which is the model we made open source).

The navigation demo

The experience of programming an autonomous vehicle. Also the MuSHR logo.
The experience of programming an autonomous vehicle. Also the MuSHR logo.

In addition to lowering the cost of the hardware, we also wanted to ship the car with a ready-to-go autonomous navigation stack. By providing basic autonomy as a starting point, new users can chose to develop any aspect of the car without needing to rebuild the full stack from scratch. To know when we had achieved a sufficient level of robustness, we set the goal of a navigation demo that would be successful when we navigated a loop in the basement 10 times without error.

Matthew Rockett and I developed a controller framework that could run several types of model predicitive control, and we also experimented with different localization regimes–ultimately sticking with the classic particle filter. While developing the controller, I had the privilege of working closely with Dr. Sanjiban Choudhury. His clear-eyed approach to analyzing robotic systems was incredibly instructive. Throughout our process we built a number of tools and data analysis pipelines for getting to the bottom of the observed error. He and Sidd both subscribe to a rigorous methodology that I can best summarize as “uncompromising why”: keep digging deeper, build any tool you need, roll the linear algebra by hand, apply the physics models, whatever it takes to understand why your robot is not doing as expected. Only then do you begin developing a fix.

Suffice to say, after several months we achieved 10 error-free runs. Our configuration was adequately robust that we could run several cars in tight sequence without collision. You can see the demo video on the mushr website.

Reception and the MuSHR donation program

We received some press for MuSHR from our local tech news outlet and several AI-focused newsletters and blogs around the web. Sidd also shared our project on social, but even so I was surprised by the diversity of the people our project reached. Nearly half of our website traffic is from China, and within a couple months we were cited by the Amazon DeepRacer paper. We’ve also been in touch with college students around the world who are building MuSHRs for their capstone projects or autonomous vehicle clubs.

To lower the barrier to entry even further, we also created a “MuSHR Donation Program” where applicants can submit a proposal to receive one or more cars free of charge, no strings attached. Here too we received a surprising breadth of applicants, from a local high school’s library, to a makerspace in Brazil.

Landings over launches

I’m thankful for having been a part of an incredible team and this remarkable project. The path from teaching myself robotics with a DIY racecar, to creating the kit I would have wanted only three years ago is not one I would have foreseen. Nor was breadth of international research and student groups who took up our platform.

I recently heard the expression “focus on landings over launches”. In this spirit, MuSHR has hit the road running. But where it goes next will determine the success of this project.