Self-driving cars are quickly moving from sci-fi to reality, with dozens of companies, including Mercedes-Benz, General Motors, Nissan, Tesla Motors, Audi, and Google already actively testing fully functioning prototypes on actual roads. Furthermore limited autonomous functionality such as parking and even highway driving (using a combination of cruise-control and safe following distance) is available now in high-end consumer vehicles. Designing and developing partial to fully autonomous cars is a growing industry that is likely to continue growing at a rapid rate over the next few decades.
Current autonomous vehicles vary widely, from those designed from ground up in both hardware and software to be self-driving, to systems of sensors and software making up just the "brains" of an autonomous driver that can be retro-fitted to a standard existing car in order to convert it to a self-driving car. In general all current self-driving cars include dozens of hardware sensors of several types (lidar, radar, cameras, gps, compass, etc.), as well as of course lots of software to interpret all of the incoming data and determine the appropriate action for the car to take. Most current cars drive using only local data from their own sensors, though this still means the autonomous driver has far more information than a human driver can access, which is one of the big potential benefits of autonomous vehicles. Imagine how much safer human drivers could be if they could "see" in every direction at once!
Even more promising is the future possibility of networked self-driving cars that can share data in order to "see" what's happening around blind corners or miles ahead. The hardware already exists to share this type of data among self-driving cars, but the more difficult aspect is creating the software to best use the abundance of information.
This past year one of my comps groups made great progress on implementing the basic autonomous driving of a car using a simulation that provided the physics of the car, its sensors, and the world around it. They had to spend much of their time finding an appropriate simulation, implementing the required sensors, and developing a code structure that would allow them to implement the algorithms for the "brain" of the car. They created a solid base that can now be built on to implement more complex aspects of the self-driving software.
The goal of this project will be to design and analyze algorithms to control an autonomous vehicle. This vehicle will exist in a software simulation only, as I have as yet been unable to convince Carleton to provide an actual physical car... Something about safety, and cost, and I suppose a few other reasonable excuses... The focus of this project will be on the "brain" of the car itself, not any impressive graphics or anything. Conveniently this past year's group already did the work of finding an appropriate physics simulator, implementing a virtual car with many of the required sensors, and creating a simple world through which the car can navigate. That means next year's group will be able to move on to implementing more complex (and fun!) aspects of autonomous driving.
Currently the car is able to do the following
The goals of next year's project would be to develop a much more sophisticated brain for the car, allowing it to drive in a wide range of realistic situations. There are many possibilities to explore, and the project will be somewhat flexible given group members' interests (e.g. you could focus more on individual car behavior using fancy camera algorithms, or you could focus on using data from a networked community of self-driving cars to see beyond the local car's environment, etc.) Here are some examples of abilities you might add
This project is very flexible with lots of potential directions and components available. So most important is simply interest in this topic! Things that may be useful include: algorithms, any experience in physics/electronics/sensors, experience working with simulations/modeling, knowledge of graphics/linear-algebra, etc.