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!
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.
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.
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.
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.
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.
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 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.
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.
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.
Huge thanks to the engineers (and go kart tracks) that made this one possible:
Chris J. Culver