Background

Raspberry Pi
Raspberry Pis (‘RPi’) has commoditized the implementation of networked devices. As they are effectively miniaturized computers running on a Linux-based operating system, RPis can serve as the central compute nodes of many sensory-based objects.

little_pi

Pi Car Initiative

In our design project, we worked as a subset of Professors Gonzalez and Zhang’s autonomous vehicle initiative (‘Pi Car’). As part of an interdisciplinary team, our objective was to build small and compact vehicle prototypes, using Raspberry Pi Model 3B+ boards, on which future students may test driving programs on.

Communication Framework for Pi Car

Our team specifically focused on the software layer of this task — building communications logic to receive and send real-time input data to an Raspberry Pi nested within the car. This data is composed of metrics arriving from multiple sources, including an infrared motion capture system, encoders, and an inertial measurement unit (IMU). We also created a program to aggregate these data frames for other applications on the Pi to receive at specified frequencies. as well as a simple interface to view these metrics on a web server. In addition, a major facet of this project was the frequent collaboration with the mechanical and electrical engineering teams on vehicle design and sensor interfacing.

Vehicle Position Tracking – Infrared Motion Capture System

For this project, we made use of the Motive Optitrack camera set installed in Professor Gonzalez’s Dynamics Lab. This system can track infrared markers within a defined space at up to 120fps, and can serve as a useful positioning tool for the Pi Car.

 

motive-screen

lab-cameras

GPIO pins

The Raspberry Pi comes with a set of 40 General Purpose Input-Output (GPIO) pins that allow the device to interface with different hardware components. These pins are essentially the physical interface between the Raspberry Pi and the outside world. In our project, we utilize these GPIO pins to connect hardware components and read-in sensor data from them.

rp2_pinout

Raspberry Pi GPIO pinout