Git Product home page Git Product logo

carnd-capstone's Introduction

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.

Please use one of the two installation options, either native or docker installation.

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

Port Forwarding

To set up port forwarding, please refer to the instructions from term 2

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.
  2. Unzip the file
unzip traffic_light_bag_file.zip
  1. Play the bag file
rosbag play -l traffic_light_bag_file/traffic_light_training.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

Carla Architecture

Carla is the name of a Udacity self-driving car, whose computer would run students' Capstone project code to see how well it drives around the test track.

From structure perspective, Carla has four subsystem as illustrated below: sensors, perception, planning, and control. The data flow direction is from left to right, with each subsystem's output taken as input for various components of the next subsystem.

Carla's Sensors subsystem consists of physical hardware that gathers data about the environment, in the form of camera, radar and lidar, and sometimes other types of sensors too. Cameras are mounted behind the rear view mirror in a row, a single radar is embedded in the front bumper, and a lidar is mounted on the roof.

Raw sensor data is then interpreted by Perception subsystem, where detection of relevant objects in surrounding area, and localization of Carla itself happens. For camera images, they serve as inputs for the detection of lanes, traffic lights and signs, and other objects outside the vehicle, processed by deep learning and computer vision algorithms. For radar and lidar sensor measurements, they provide information that can be translated into distance, speed, and relative position of objects with reference to the vehicle, thus enable us to track the motion of other vehicles, pedestrians, bicycles, etc. Since lidar provides three-dimensional information about the surroundings, include surface characteristics, it also contributes to localization of Carla by comparing the scanned environment to a high-definition map. By combining GPS and lidar data, the precision of Carla's localization can reach 10 centimeters or less.

The output of Perception subsystem is then routed to the Planning subsystem. The path planning components uses perception data to predict the movements of other vehicles on the road, and evaluate different behaviors to decide which one is best for current scenario. Then the trajectory planning block would calculate a series of waypoints for Carla to follow, based on the chosen behavior. For example, if traffic light detection and classification component detects red light, then it is reasonable to predict that the vehicle in front of Carla would slow down, consequently the best behavior might be decelerate, and new waypoints would be built with target velocities being slower than current velocity and target lane remaining as current lane. Similarly, if free space is detected in adjacent lanes, or if a sign with different speed limit is detected, the Planning system would be affected and Carla might be instructed to behave differently.

The final subsystem Control subsystem takes the list of waypoints and target velocities calculated by Planning subsystem as input. Carla uses the simple proportional-integral-derivative (PID) controller to map waypoints to steering and throttle commands, and the commands would be ultimately translated to Controller Area Network (CAN) messages executed by various actuators, most commonly the engine control module and power steering module.

In summary: sensor and perception subsystems collect data and interpret data to detect objects around the vehicle and localize itself; planning subsystem determines appropriate behavior and generate a trajectory accordingly; and finally the control system drives Carla along that trajectory.

carnd-capstone's People

Contributors

ckirksey3 avatar swwelch avatar awbrown90 avatar carlosgalvezp avatar baumanab avatar spicavigo avatar olala7846 avatar mvirgo avatar ncondo avatar yangsong0630 avatar aoinakanishi avatar bydavy avatar ianboyanzhang avatar j-rojas avatar luisandroide avatar viennaharvey avatar

Watchers

James Cloos avatar Jeff Qian avatar

Forkers

yangsong0630

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.