Overview:         Helped a client (Global Head of Conduct for a major investment bank) to                                                implement a Multi-Layer Perceptron Neural Network for a self-driving robot as                                  part of her MSc in Artificial Intelligence at the University of Essex

Objective:         Program the robot to guide itself to follow a wall on its left, and turn around corners

Ethics:              Client obtained permission from Course Director to obtain help and guidance

Results:            Client received a mark of 70% for the project; robot demonstration was successful,

                          and written report communicated that the client understood the underlying                                        material

                          Client also requested assistance with Mathematics preparation for the related                                    exams; she received marks of 75% for both Robotics and Neural Networks exams

Inputs:              Distance from left sonar sensor to wall, distance from front sonar sensor to wall


Outputs:            Left wheel speed, right wheel speed


Architecture:    2-4-2 Topology (2 input layer nodes, 4 hidden layer nodes, 2 output layer nodes) 
                          with tanh activation functions

Language:        C++ (Neural Network), Matlab (Data Cleaning)

Steps:               Adapted a vanilla network to track and output the error (average RMS error after                                each training example) to determine when to stop training (minimised validation                                error over epochs)

                          Also needed to perform data 'de-duplication' and splitting into training, validation                              and test sets, and normalisation / de-normalisation of data

                          We could have improved the smoothness by training over more epochs but the                                  client was more than satisfied.