Skip to content
This repository has been archived by the owner on Aug 26, 2021. It is now read-only.

macd/CarND-Capstone

 
 

Repository files navigation

Self Driving Car Nano-Degree Capstone Project Repository

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

More info

If you are curious, more info can be found in the final_report.md file

Native 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

  • Dataspeed DBW

  • Download the Udacity Simulator.

Docker Installation

Install Docker

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

Usage

  1. Clone the project repository
git clone https://github.com/udacity/CarND-Capstone.git
  1. Install python dependencies
cd CarND-Capstone
pip install -r requirements.txt
  1. Make and run styx
cd ros
catkin_make
source devel/setup.sh
roslaunch launch/styx.launch
  1. Run the simulator

Real world testing

  1. 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)
  2. Unzip the file
unzip traffic_light_bag_files.zip
  1. Play the bag file
rosbag play -l traffic_light_bag_files/loop_with_traffic_light.bag
  1. Launch your project in site mode
cd CarND-Capstone/ros
roslaunch launch/site.launch
  1. Confirm that traffic light detection works on real life images

Docker GPU instance build and use for Hacker-force

Docker Installation

Install Docker

GPU/CUDA support

Install nvidia-docker

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

run-cuda script

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.

Networking

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 43.2%
  • CMake 33.7%
  • C++ 22.2%
  • Shell 0.9%