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.
Our team name is Braking Bad.
Name | Udacity account email |
---|---|
Andrej Georgievski | andrej.zgeorgievski[AT]gmail.com |
Abhinav Kulkarni | abhinavkulkarni[AT]gmail.com |
Kamal Gupta | kamalgupta308[AT]gmail.com |
Praveen Gunasekaran | praveenraj49[AT]gmail.com |
Santosh Kumar | sanchelseaster[AT]gmail.com |
The goal of the project is to enable a car to drive on its own. A typical self-driving car has following components:
- Sensors - are the hardware components the car uses to observe the world
- Perception module - processes data from one or more sensors and gives out structured information that can further be used in path planning or control
- Planning module - is responsible for both high and low level decisions about what actions should car perform
- Control - ensures that car follows the path set by planning module even with latency between various commands.
The scope of this project is limited to driving Carla around a set of way-points on the road while stopping appropriately at the traffic lights. We will be using ROS (Robot Operating System) to implement various components of this problem.
Here is the final state architecture diagram of various topics and nodes we have used in ROS
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.
-
- Use this option to install the SDK on a workstation that already has ROS installed: One Line SDK Install (binary)
-
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 instructions from term 2
- Clone the project repository
git clone https://github.com/udacity/CarND-Capstone.git
- Install python dependencies
cd CarND-Capstone
pip install -r requirements.txt
(Only for Workspace) Install ros-kinetic-dbw
package
sudo apt-get update
sudo apt-get install -y ros-kinetic-dbw-mkz-msgs
- Make and run styx
cd ros
catkin_make
source devel/setup.sh
roslaunch launch/styx.launch
- Run the simulator
Run roslaunch launch/styx.launch
in one of the terminals, On second terminal,
- either run
rostopic echo /final_waypoints
- run the simulator and see bunch of green dots appearing in front of the car
- Download the rosbag file from here and save it as
/home/workspace/CarND-Capstone/data/dbw_test.rosbag.bag
- Go to the directory
/home/workspace/CarND-Capstone/ros
- Run
roslaunch src/twist_controller/launch/dbw_test.launch
- If ran correctly, this generates 3 files in the directory
/home/workspace/CarND-Capstone/ros/src/twist_controller
brakes.csv
throttles.csv
steers.csv
- 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
While compiling on Udacity workspace
if you get following error message
CMake Warning at /opt/ros/kinetic/share/catkin/cmake/catkinConfig.cmake:76 (find_package):
Could not find a package configuration file provided by "dbw_mkz_msgs" with
any of the following names:
dbw_mkz_msgsConfig.cmake
dbw_mkz_msgs-config.cmake
Add the installation prefix of "dbw_mkz_msgs" to CMAKE_PREFIX_PATH or set
"dbw_mkz_msgs_DIR" to a directory containing one of the above files. If
"dbw_mkz_msgs" provides a separate development package or SDK, be sure it
has been installed.
Call Stack (most recent call first):
styx/CMakeLists.txt:10 (find_package)
-- Could not find the required component 'dbw_mkz_msgs'. The following CMake error indicates that you either need to install the package with the same name or change your environment so that it can be found.
CMake Error at /opt/ros/kinetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
Could not find a package configuration file provided by "dbw_mkz_msgs" with
any of the following names:
dbw_mkz_msgsConfig.cmake
dbw_mkz_msgs-config.cmake
Add the installation prefix of "dbw_mkz_msgs" to CMAKE_PREFIX_PATH or set
"dbw_mkz_msgs_DIR" to a directory containing one of the above files. If
"dbw_mkz_msgs" provides a separate development package or SDK, be sure it
has been installed.
Call Stack (most recent call first):
styx/CMakeLists.txt:10 (find_package)
-- Configuring incomplete, errors occurred!
See also "/home/workspace/CarND-Capstone/ros/build/CMakeFiles/CMakeOutput.log".
See also "/home/workspace/CarND-Capstone/ros/build/CMakeFiles/CMakeError.log".
Invoking "cmake" failed
run the following commands
sudo apt-get update
sudo apt-get install -y ros-kinetic-dbw-mkz-msgs