This is the project repo for the final project of the Udacity Self-Driving Car Nanodegree: Programming a Real Self-Driving Car. For more information about the project, see the project introduction here.
The following is a system architecture diagram showing the ROS nodes and topics used in the project.
The code is built successfully and connects to the simulator: Thanks to code walkthrough lessons, the project is built and runs successfully. No errors observed with catkin_make
, source devel/setup.sh
and roslaunch launch/styx.launch
.
Waypoints are published to plan Carla’s route around the track: The waypoints are published to the /final_waypoint
topic in waypoint_update.py
(line 82). Acceleration and jerk limits are not exceeded. The top speed of the vehicle is limited to the km/h velocity set by the velocity ros param in waypoint_loader.py
.
Controller commands are published to operate Carla’s throttle, brake, and steering: dbw_node.py
and twist_controller.py
are implemented. The throttle and brake commands are published to the /vehicle/throttle_cmd
and /vehicle/brake_cmd
topics. The steering command is published to the /vehicle/steering_cmd
topic.
Successfully navigate the full track more than once: The vehicle successfully navigates the track more than once. You can find the captured video of the track down below.
The optional task of traffic light classification is not implemented. I do not have much time since my bundle subscription is almost expired. I will complete the task after graduation.
Please use one of the two installation options, either native or docker installation.
-
Be sure that your workstation is running Ubuntu 16.04 Xenial Xerus or Ubuntu 14.04 Trusty Tahir. Ubuntu downloads can be found here.
-
If using a Virtual Machine to install Ubuntu, use the following configuration as minimum:
- 2 CPU
- 2 GB system memory
- 25 GB of free hard drive space
The Udacity provided virtual machine has ROS and Dataspeed DBW already installed, so you can skip the next two steps if you are using this.
-
Follow these instructions to install ROS
- ROS Kinetic if you have Ubuntu 16.04.
- ROS Indigo if you have Ubuntu 14.04.
-
Download the Udacity Simulator.
Build the docker container
docker build . -t capstone
Run the docker file
docker run -p 4567:4567 -v $PWD:/capstone -v /tmp/log:/root/.ros/ --rm -it capstone
To set up port forwarding, please refer to the "uWebSocketIO Starter Guide" found in the classroom (see Extended Kalman Filter Project lesson).
- Clone the project repository
git clone https://github.com/udacity/CarND-Capstone.git
- Install python dependencies
cd CarND-Capstone
pip install -r requirements.txt
- Make and run styx
cd ros
catkin_make
source devel/setup.sh
roslaunch launch/styx.launch
- Run the simulator
- Download training bag that was recorded on the Udacity self-driving car.
- Unzip the file
unzip traffic_light_bag_file.zip
- Play the bag file
rosbag play -l traffic_light_bag_file/traffic_light_training.bag
- Launch your project in site mode
cd CarND-Capstone/ros
roslaunch launch/site.launch
- Confirm that traffic light detection works on real life images
Outside of requirements.txt
, here is information on other driver/library versions used in the simulator and Carla:
Specific to these libraries, the simulator grader and Carla use the following:
Simulator | Carla | |
---|---|---|
Nvidia driver | 384.130 | 384.130 |
CUDA | 8.0.61 | 8.0.61 |
cuDNN | 6.0.21 | 6.0.21 |
TensorRT | N/A | N/A |
OpenCV | 3.2.0-dev | 2.4.8 |
OpenMP | N/A | N/A |
We are working on a fix to line up the OpenCV versions between the two.