Amazing Self-Driving Car Projects

Udacity Self-Driving Car Engineer Nanodegree program students are taking their newly-mastered skills into the broader world, and their projects are incredible!

The talent and passion of students in Udacity’s Self-Driving Car Engineer Nanodeegree Program regularly astounds me. Here are five independent projects that students did outside of the program to build their skills as autonomous vehicle engineers.

OpenCV Python Neural Network Autonomous RC Car

Wang Zheng

Check out the autonomous hardware package strapped to the top of this tiny red range rover! And the various test track configurations it navigates. Super cool.

ConvNets Series. Spatial Transformer Networks

Kirill Danilyuk

Spatial Transformers are modules that can be inserted into convolutional neural network architectures to focus the network on the most important object in the image. This is helpful because scale and rotation make object localization (finding an object within an image) a complex problem.

“The STN is a differentiable module which can be injected in a convolutional neural network. The default choice is to place it right “after” the input layer to make it learn the best transformation matrix theta which minimizes the loss function of the main classifier (in our case, this is IDSIA).”

Building an Autonomous Car using a 1/10th Scale RC Car — Part 1

Eric Maggard

This is an awesome four-part series on building a miniature self-driving car from scratch, with a big emphasis on hardware and electrical engineering. Part 1 is ROS setup, Part 2 is the sensor suite, Part 3 is the microcontroller, and Part 4 is working with the NVIDIA Jetson TX1. This is quite the hacker project.

“The goal of this project is to build an autonomous base that can navigate the sidewalks of my subdivision. It will use GPS, LIDAR, and other sensors to navigate to GPS way points, avoid obstacles, and return to the start position.”

4K SSD Object Detection #1

Karol Majek

I love watching videos that students shoot themselves. Here Karol is applying a Single-Shot Detector (SSD) network to identify other vehicles on the road.

Building an affordable self-driving car development platform

Bogdan Djukic

Scaling up from miniature self-driving cars to human-sized self-driving cars, Bogdan outlines a self-driving car development platform accessible for under US$10,000. This does not include the sensor suite — just the drive-by-wire platform. He settled on the Renault Twizy and is looking for partners to work on this with him 🙂

“One of the main challenges in the self-driving car industry (among other things like technology itself, policy updates, ethical issues, etc.) is the barrier of entry. If you are a small start up building a local autonomous delivery service or a single engineer trying out latest deep learning approaches for car/traffic sign detection, it is incredible hard (sometimes even impossible) to get things off the ground and test your solution in the real world setting.”


These amazing engineers are skilled, passionate, and actively building. If you like the idea of engaging with innovators like these, you should enroll in the Udacity Self-Driving Car Engineer Nanodegree Program!

How Udacity Students Build Path Planners for Highway Driving

Many students describe the Path Planning Project as the most challenging project in the entire Udacity Self-Driving Car Engineer Nanodegree program. This is understandable. Path planning is hard! But it’s not too hard, and I’m going to tell you a bit about the project—and about path planning in general—in this post.

There are three core components to path planning: 1) Predicting what other vehicles on the road will do next, 2) Deciding on a maneuver to execute, in response to our own goals, and to our predictions about other vehicles, and 3) Building a trajectory to execute the maneuver we decide on.

This is a project that provides students a lot of freedom in how to implement their solution. Here are five approaches from our amazing students!

Reflections on Designing a Virtual Highway Path Planner (Part 1/3)

Mithi

I love Mithi’s series of posts on the Path Planning Project. Her first post covers the project outline and her solution design process. The second post covers her data structures and pipeline. The third and final post dives into the mechanics and math required to actually produce a path. This is a great series of posts for anybody thinking about building a path planner.

The goal is to create a path planning pipeline that would smartly, safely, and comfortably navigate a virtual car around a virtual highway with other traffic. We are given a map of the highway, as well as sensor fusion and localization data about our car and nearby cars .We are supposed to give back a set of points (x , y)in a map that a perfect controller will execute every 0.02 seconds. Navigating safely and comfortably means we don’t bump into other cars, and we don’t exceed the maximum speed, acceleration, and jerk requirements. Navigating smartly means we change lanes when the car in front of us is too slow.

Path Planning in Highways for an Autonomous Vehicle

Mohan Karthik

In contrast to Mithi’s articles, which take you through her process of building a path planner, Mohan’s writeup does a great job of describing the final result. In particular, I was interested to read about the voting system he used for deciding on lane changes.

Instead of quoting Mohan, I’ll share the flowchart he built:

Self-Driving Car Engineer Diary — 11

Andrew Wilkie

This installment of Andrew’s long-running “diary” covers the Path Planning Project at a high level, and details how it fits into the third term of the Nanodegree program. Like his fellow classmates, Andrew also found this to be a challenging project.

I found the path planning project challenging, in large part due to fact that we are implementing SAE Level 4 functionality in C++ and the complexity that comes with the interactions required between the various modules.

Udacity Self Driving Car — Project 11 Path planning

Shyam Jagannathan

Shyam’s post contains a particularly concise 6-point walkthrough of trajectory generation, which is both fundamental to building a path planner, and surprisingly challenging.

The trajectory generation part which is the most difficult is covered as part of the project walk-through by Aaron Brown and David Silver. LINK. They recommend using the open source C++ tk:spline() method to generate a 5th degree polynomial which help minimize jerk while accelerating, decelerating and changing lanes.

Highway Path Planning

Alena Kastsiukavets

Alena touches on several interesting points with her post. She focuses on cost functions, which she identifies as the most important part of the project. The post describes her finite state machine and the associated cost functions in detail, and describes how the car decides when to shift lanes. She also touches on how she merged the two branches of her path planner — one for the Nanodegree project, and one for the Bosch Challenge — to create a more generalized planner.

The most important part of the project is to define cost functions. Let’s say we are on a highway with no other cars around. In such situation, we should stay in the same lane. Constant lane changing is extremely uncomfortable, so my first cost function is change_lane_cost. We penalized our trajectory if we want to change lane. Honestly, I did a small trick for Bosch challenge. I did not penalize the trajectory if I want to move in the middle lane. It gives me more freedom with maneuvers. Otherwise, I can be stuck in the left-most and right-most lanes when my lane and middle lanes are busy.

Seeing our students working through these challenges, experiencing their solutions, and learning about their processes fills me with so much excitement about the future of this field—these students represent the next generation of self-driving car engineers, and based on the work they’re already doing, I am certain they’re going to be making incredible contributions. I am especially moved by their generosity in taking the time to share in such detail the work they’re engaged in, and it’s a real pleasure to share their articles with you.

~

Ready to start working on self-driving cars yourself? Apply for our Udacity Self-Driving Car Engineer Nanodegree program today!