CMU-Robotics-Club / RoboBuggy

99 problems, but a driver ain't one. (Push code, not buggies)
25 stars 5 forks source link
autonomous-driving buggy happyfuntimes robotics-club

RoboBuggy

A project of the Robotics Club at Carnegie Mellon University.

Codacy Badge

Buggy (also called Sweepstakes) is a race held annually since 1920 at Carnegie Mellon. Teams of 5 athletes (the pushers) push an un-motorized vehicle (a buggy) containing a driver around a 0.84 mile course in a relay format where the vehicle serves as the baton. Roughly half of the course is uphill, during which the pushers run and shove the buggy uphill. During the other - downhill - half, drivers are on their own to navigate tight turns at speeds of up to 35mph.

Borrowed from the CMU Buggy Alumni Association. Visit them to find out more.

In the robotics club we seek to help out robot overlords automate everyone and everything, so we're trying hard to replace a traditional buggy driver with our AI. Alice (the AI) successfully rolled on Raceday for the first time during Carnival 2017!

Team picture from Raceday 2015 Team picture from Raceday 2015.

Trevor pushing RoboBuggy at Fall rolls Trevor pushing Singularity on Hill 4 during early morning rolls.

The Buggies

Singularity Toothless Transistor
Singularity the Buggy with Alice the AI Transistor the Buggy
Inherited from a past incarnation of this project, Singularity has been rolling since 1999. She features a bolted aluminum frame that was originally built around a desktop computer. These days, she features a stylish mount for a Surface on top with the control electronics inside. Transistor was built for the 2015 season using modern carbon fiber shell technology. She was built to be accessible and maintainable as a platform for the future of Robobuggy. Debate within the team on what style she would wear was so fierce we chose to paint her chalkboard black, complete with a new chalking each race.

Looking for more technical docs? Check out the wiki!

System Overview

+-----------------+
|   Follow Car    |
|        +        |
|  Safety Driver  |
+-----------------+
         ||
         ||
         \/
+------------------+   +-------------------------+
|  Radio Receiver  |   |       Alice (AI)        |
+------------------+   +-------------------------+
         ||                        /\
         ||                        ||
         \/                        \/
+------------------------------------------------+
|           IO and Safety Controller             |
|                  (Arduino++)                   |
+------------------------------------------------+
                        /\
                        ||
                        \/
+------------------------------------------------+
|               Electromechanical                |
|       (Servo, Solenoids, Pots, Encoders)       |
+------------------------------------------------+
                        /\
                        ||
                        ||
         ____           ||
           \            \/
            \   _____________________
            _\./    \______/      \__\
           < ___o_________________o___\ 
--------------------------------------------------

System block diagram.

Our system architecture keeps a human in the loop all the time, even just to hit the emergency stop button. The human driver can either be sending drive commands (for AI training) or monitoring the AI. The command signals from the AI and human are mixed together (depending on operating mode) in the IO controller. Here we also do last level safety checks like stop on disconnection. The IO controller interfaces directly with the electromechanical systems to make braking, steering, and sensing happen. Find more information in the source directories below.

File Structure

The software system is separated into two main directories (sections):

This folder also contains:

Contributing

We have a contributions guide to get you started.

Sponsors

Special thanks to NVidia for providing Jetsons for us to host Alice on!

Think this project is cool? Please support the Robotics Club at CMU!