Capstone project
This is the project repository of Team “Carla’s little helpers” 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 team “Carla’s little helpers” consists of the following members (listed in alphabetical order):
Goal of the project is the implementation of different ROS (Robot Operating System) nodes to make a self-driving car (a test vehicle equipped with different sensors) drive around a track without human interaction/input. Before testing with the real test car will the software implementation be tested in an virtual environment using a simulator software which was also used during the ROS node development. The ROS nodes are implemented in Python and based on a given bare-bone project structure provided by Udacity.
We basically followed the the suggestions provided by Udacity for the final project and implemented all required nodes independently from each other (different git forks) and merged all ready (locally tested) parts in a joint master repository. Each team member was responsible for specific modules (or nodes) of the project, which were distributed by an elective process.
As reference how the different ROS nodes communicate you can have a look into the following diagram provided by Udacity:
During the development time we were facing some performance issues (especially while testing all vision related nodes: camera activation in the simulator). For this reason we were following some suggestions from Udacity’s forum and reduced the logging frequency of ROS nodes as well as the processing frequency of the waypoint follower constexpr int LOOP_RATE = 10). This might be changed before testing it in the real test vehicle to maintain smooth vehicle maneuvering. Generally it is recommended to develop and test the project on systems with dedicated NVIDIA GPU(s) (laptops could be not sufficient, except for gaming laptops!).
Beside a private slack channel and e-mail communications github was the most used tool. Especially the easy to use software version management function helped a lot to implement, test and merge ROS nodes in an international team with different time zones. Also a small Wiki was established to gather findings and useful links during the project: Wiki
If using a Virtual Machine to install Ubuntu, use the following configuration as minimum:
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
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
cd ros
catkin_make
source devel/setup.sh
roslaunch launch/styx.launch
unzip traffic_light_bag_files.zip
rosbag play -l traffic_light_bag_files/loop_with_traffic_light.bag
cd CarND-Capstone/ros
roslaunch launch/site.launch