This is the personal project repo of Don MacMillen 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.
##Team Members:
Name | Contact | Location |
---|---|---|
Eric Kim | [email protected] | Santa Clara, CA |
Don MacMillen | [email protected] | San Mateo, CA |
Grigory Makarevich | [email protected] | Seattle, WA |
Stefan Gantner | [email protected] | Munich, Germany |
Karsten Schwinne | [email protected] | Dortmund, Germany |
If you are curious, more info can be found in the final_report.md file
-
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
- 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 (a bag demonstraing the correct predictions in autonomous mode can be found here)
- Unzip the file
unzip traffic_light_bag_files.zip
- Play the bag file
rosbag play -l traffic_light_bag_files/loop_with_traffic_light.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
Build the docker container. Note that if you build the image in the project repo, it will populate with all of the repo's files so you will not have to clone after you log into it the first time. Also, the Dockerfile.gpu will install all of the requirements (well mostly, see below)
nvidia-docker build . -f Dockerfile.gpu -t capstone-gpu
You can simply start the container or attach to it using the run-cuda or run-devel-cuda script
./run-cuda.sh
Note that this solution, borrowed from team-inrs, is just a little bit on the hacky side. Everything is in a top level /udacity directory and everything is run as root. I made no attempt to clean this up.
Also, Eric, for your stuff I had to clone, build and install protobuf. Clone the google models, run protoc on some of the models, pip install matplotlib, apt-get install python-tk, and finally rosdep update.
It sounds like much of this may not be necessary with Grigory's approach.
When using the run-cuda.sh command, it does the Docker version of port forwarding from docker container port 4567 to host port 4567. I didn't chase down how to do a bridged to the router thing for the docker container, because I am running the simulator on another computer. If you are running on another computer, you now do the port forwarding there to the ip address of the (docker) host and not of the docker container. So this probably won't work well on a single computer with both the simulator and ROS inside of the container approach.