The interns show off their final project, creating a real playable version of Mario Kart with a functional item system. Check out how we rigged up our system with servos, pneumatics, and wireless communication to make a real playable version of one of our all-time favorite games!
Classic Video Games + GoKarts +cRIO + RFID = Awesome
Real-Life Mario Kart - Episode 7
FAQ
Where is the Real-Life Mario Kart set up available?
Unfortunately we were only able to rig up the karts temporarily at Austin’s Park in Austin, TX, so there is no permanent setup. Our goal is to inspire others to create their own systems. We'd be happy to help you build your own, just contact us.
Wait, did you run over real bananas?
For the banana item, we used plastic fruit and duct taped the RFID card inside the bunch. The first car to come into range with the RFID must hold the item in their kart for two seconds in order for it to be activate. Once the bananas are activated, the next kart to come into range will have the steering locked to one side using a hydraulic piston.
What's the deal with "May-rio" Kart?
Tim is from New Jersey. He talks funny. What are you going to do?
So are they actually driving the karts?
Yes, each player drives their own kart like in a normal race. Each item gives a bonus or punishment. For instance, the mushroom unlocked 100% throttle (normally 75%) for five seconds, and the bananas lock your steering to one side for three seconds.
System Overview
Introduction
The goal of this project is to recreate Nintendo’s Mario Kart game in real life. This involves building a system to control the movements of a full sized go-kart as well as a wireless communication system. The end result is a go-kart system where each player can race around a track and pick up items that alter the behaviors of the go-karts. Special Thanks to Austin's Park for letting us modify their karts and track.
System Overview
The go-karts behave normally until an item is detected. RFID tags embedded into each item transmit signals to the readers located on each kart. The NI CompactRIO (cRIO) device processes these signals and outputs the signals to control the corresponding pneumatic valves and servo motors that control the movement of the go kart. Two pneumatic cylinders control the steering and one cylinder controls the brake. The governor, or speed limiter, is controlled with two servo motors.
The units for the items listed in the following sections refer to the amount needed per kart.
Steering Control
The pneumatic system for controlling the steering consists of:
2 cylinders
2 three-way normally closed valves
1 high-pressure air tank
Each cylinder is positioned so that the rod is connected to the wheel bracket. The movement of each cylinder is controlled by a valve. The valve normally exhausts so that the steering can be freely controlled by the go-kart driver. When the valve closes, the pressurized air passes through to the cylinder and the rod extends, locking the wheel in a rotated position.
Brake Control
The pneumatic system for braking consists of:
1 cylinder
1 three-way normally closed valve
1 high-pressure air tank (shared with the steering control)
The cylinder is positioned so that the rod is extended and connected to the back of the brake pedal. With the valve open, the air exhausts and the brake behaves normally. Once the valve closes, air passes to the cylinder and the rod retracts, pulling the brake pedal downward, forcing the kart to brake.
Governor Control
What was used:
2 servo motors
The go-karts that were used for this project had a governor that could be adjusted by simply pushing a pin in the back of the car. We attached two servo motors to allow us control over the governor. One servo was attached so that when it rotated, the pin was pushed in fully, allowing a full boost in speed. The other servo was attached so that when it rotated, the pin was pulled back completely, cutting off the gas.
Electronic Control
Our electronic control system consisted of:
NI cRIO-9014
NI 9401 DIO Module
NI CompactRIO (Compact Reconfigurable Input/Output) is a real-time controller that we programmed with LabVIEW. The CompactRIO device was responsible for processing signals received from the RFID reader, communicating with the central
Steering Control System
Brake Control System
compactRIO Controller
host computer, and outputting the appropriate signals to control the behavior of the go-karts. These signals are outputted through the NI 9403 module, which was used to send digital high and low signals to the pneumatic valves as well as PWM (Pulse Width Modulated) signals to the servo motors. We used FPGA code to control the NI 9403 module.
RFID Serial Reader
Item Penalties / Rewards
Active RFID Tag
Software Overview
Introduction
For this project we had to create a program that could not only control the kart's mechatronic components, but also communicate with a base station to establish the game framework. We created two separate sets of code one that ran on the base station PC and another set that ran on each of the four go-karts. NI CompactRIO is a multi-layered platform with a Real-Time computer and an FPGA target. The Real-Time computer allowed us to connect over WiFi and process tag information, while the FPGA allowed us to connect everything to the inputs and outputs of our system. All of our code for this project is written in LabVIEW.
Go-Kart Code
Each go-kart has identical code running on a CompactRIO controller. Most of the time the code just sits and waits while the user operates the car, but when it receives a signal it can actuate one of many functions. Then the CompactRIO device would receive a signal from an RFID tag directly through the reader, or get a signal via WiFi from the central command center.
Central Command Center
Our system used a central PC connected to a WiFi router to keep track of all of the items. When one of the karts detects an item, the CompactRIO device on that kart will send a signal to the command center PC. When an item is picked up it is added to an array of items with properties like a timestamp when it was picked up, who picked it up, and if it has been deployed. Items like mushrooms activate right away for the player who first picked it up, but players must hold bananas in their kart for at least two seconds to activate them. The second player to detect the banana RFID tag will get "hit".
The Base Station Front Panel
The Base Station Block Diagram Code
Item Detection
What we used:
Wavetrend Serial Port Reader RX300
Wavetrend Personnel Tags TG501
To implement the item system, we turned to RFID (Radio Frequency Identification) technology. By implanting active tags in each of the items and connecting a reader to the serial port of each CompactRIO device, we were able to detect items as they came in the vicinity of each kart. We chose to use active rather than passive tags due to the increased range of detection. Active tags actively send out signals due to a built-in battery. This allows active tags to be detected within a range of at least several meters. Passive tags are unpowered and can only send out a signal when they are close enough to a reader to draw power from it. This gives a typical detection range of only a few inches. One unique feature of the system that we used was that the readers could detect not only the tag IDs but also the strengths of the signal from each tag. This allowed us to determine the distance from the tags to the readers.
Communication System
1 wireless router per kart
1 central wireless router
Each kart was outfitted with a wireless router that was connected to the CompactRIO controller. By having a central host router, all of the routers could be linked up to the same network. Therefore, each CompactRIO device could communicate wirelessly with the central computer. The central computer can access each CompactRIO device and allow manual control of the movements of each kart. To share information between each controller, we used Network-Published Shared Variables.