This page is a list of all the current members of AVP_HS and what they are working on. Each one of them are incredibly bright high school students with their own story.

Simon Chow, Clayton Meyer, Sameer Suri

GPU Optimization

The GPU group has two main jobs. First, they have to translate other groups' code so that it can run on the LattePanda GPU; this decreases processing time and improves the car's responsiveness to turns. Second, they have to make sure that the source control is organized and up to date. They test other groups' code and verify that it all works together without errors. In the future, they would like to provide higher level access to the GPU, so that it is easier to extend and expand upon this year's software.

Colton Jelsema, Vikram Kashyap

Hardware Integration

The hardware group's main responsibility is translating other groups' software into actual car movements. This includes integrating and testing code from different groups, wiring the LattePanda computer, and programming the Arduino microcontroller. The Arduino turns all the program's outputs into the car's outputs. First, it inputs from program to serial port, then goes to the Arduino. After, it reads pin numbers and angles and turns them into Pulsewidth Modulation (PWM.) Hardware Integration also includes the kill switch which stops the car. They are working on stopping the car on timeout or if it loses connection and displaying error messages. Another major job of the group is to keep the car's software up to date, integrate other groups' code, run tests, and make the car run.

Joshua Bromley, Riley Jones, Nathan Purwosumarto

Image Processing

The image group is responsible for turning real-world images into a format useful to a computer. They manage the camera's Bayer8 input and process it in different ways for different groups. For example, they convert it to a black and white image for the steering group but convert it into a simplified color image for the speed group. One problem the image group faces is dealing with image noise, which includes background objects and irregular lighting. They are currently using an erosion filter to remove this noise and make the image easier to process. Lastly, they deal with how the image is displayed on the software. In the future, the image group would like to utilize real-time threshold adjustment to change certain parameters based on the image as well as better line detection.

Jonathan Edelman, Eric Fan, Kevin Man, Rudy Peralta

Raspberry Pi

The Raspberry Pi group sought to make the car cheaper while maintaining sufficient processing power. They decided to replace the LattePanda with a Raspberry Pi and the camera with a Raspicam. The first step to replacing the LattePanda was to implement the Arduino's functions on the Raspberry Pi. Next, they had to get the Raspicam to send the image data to the program. The current camera outputs Bayer8 encoding, which is then debayered into RGB format. Luckily for them, the Raspicam already has software to pull image data from the camera in any format using the terminal.Using the Raspberry Pi could reduce the cost by hundreds of dollars, so their next step would be to create a car using the Raspberry Pi instead of the LattePanda setup.

William Adriance, Matthew Alexander, Derek Schwartz, Brett Zonick

Speed Control

The speed group is responsible for adjusting the speed of the car. This includes stopping at stop lights and stop signs, as well as slowing down around sharp corners and curves. They use information from the steering group to control the car's speed, and they use the simplified color image from the image group to detect important features in the scene. Recently, this group has been working on creating stopping code that uses the size of objects in the real world to determine the best location to stop.

Carl Bergstrom, Nathan Ng, Kevin Paulsen


The steering group's responsibility is to keep the car inside the lane. This includes determining the location of the lane lines (with the help of the image group) and adjusting the angle of the car's front wheels to compensate for steering error. They are also responsible for steering the car between lanes and using proportional control for smooth steering. Currently, they are working on creating a model-based approach to steering the car which includes mapping out the track for later use without a camera.

Ryan Bernstein, Rudy Peralta


This group is responsible for making sure that the website works, that it has accurate information on it, and that it looks good. They also had to keep in mind that the site would be the hub of the program and needs to have ample options for contact and questions.