Skip to content

Source code for cloning a driving style for self-driving cars as parts Udacity Nanodegree project

License

Notifications You must be signed in to change notification settings

mdevana/Self_driving_behavioral_cloning

Repository files navigation

Behavioral Cloning Project

Udacity - Self-Driving Car NanoDegree

Overview

This project illustrates how deep learning can be used to clone driving behavior to guide Self-Driving cars as part of Project#4 of Udacity Self-Driving Nanodegree. This repository contains necessary files for running Behavioral Cloning Project.

Details about implementation, background and theory is available in the PDF(Project4_behavioral_cloning.pdf) or at the link here (https://medium.com/@madhusudhan.d/guiding-self-driving-car-using-behavioral-cloning-9c24541a425d)

The Project

The main implementation steps of this project are the following:

  • Used the simulator to collect data of good driving behavior
  • Designed, trained and validated a model that predicts a steering angle from image data
  • Used the model to drive the vehicle autonomously around the first track without leaving its boundaries in the simulator.
  • Summarized the results with a written report

Dependencies

This lab requires:

The lab enviroment can be created with CarND Term1 Starter Kit. Click here for the details.

The following resources can be found in this github repository:

  • drive.py
  • video.py
  • model.py
  • model.h5
  • Project4_behavioral_cloning.pdf

##Running the model

drive.py

Usage of drive.py requires you have saved the trained model as an h5 file, i.e. model.h5. See the Keras documentation for how to create this file using the following command:

model.save(filepath)

Once the model has been saved, it can be used with drive.py using this command:

python drive.py model.h5

The above command will load the trained model and use the model to make predictions on individual images in real-time and send the predicted angle back to the server via a websocket connection.

Note: There is known local system's setting issue with replacing "," with "." when using drive.py. When this happens it can make predicted steering values clipped to max/min values. If this occurs, a known fix for this is to add "export LANG=en_US.utf8" to the bashrc file.

Saving a video of the autonomous agent

python drive.py model.h5 run1

The fourth argument, run1, is the directory in which to save the images seen by the agent. If the directory already exists, it'll be overwritten.

ls run1

[2017-01-09 16:10:23 EST]  12KiB 2017_01_09_21_10_23_424.jpg
[2017-01-09 16:10:23 EST]  12KiB 2017_01_09_21_10_23_451.jpg
[2017-01-09 16:10:23 EST]  12KiB 2017_01_09_21_10_23_477.jpg
[2017-01-09 16:10:23 EST]  12KiB 2017_01_09_21_10_23_528.jpg
[2017-01-09 16:10:23 EST]  12KiB 2017_01_09_21_10_23_573.jpg
[2017-01-09 16:10:23 EST]  12KiB 2017_01_09_21_10_23_618.jpg
[2017-01-09 16:10:23 EST]  12KiB 2017_01_09_21_10_23_697.jpg
[2017-01-09 16:10:23 EST]  12KiB 2017_01_09_21_10_23_723.jpg
[2017-01-09 16:10:23 EST]  12KiB 2017_01_09_21_10_23_749.jpg
[2017-01-09 16:10:23 EST]  12KiB 2017_01_09_21_10_23_817.jpg
...

The image file name is a timestamp of when the image was seen. This information is used by video.py to create a chronological video of the agent driving.

video.py

python video.py run1

Creates a video based on images found in the run1 directory. The name of the video will be the name of the directory followed by '.mp4', so, in this case the video will be run1.mp4.

Optionally, one can specify the FPS (frames per second) of the video:

python video.py run1 --fps 48

Will run the video at 48 FPS. The default FPS is 60.

About

Source code for cloning a driving style for self-driving cars as parts Udacity Nanodegree project

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published