A Multilayer Neural Network Based Obstacle Avoiding Robot | ROS | Simulation

21 Oct 2015

This is an obstacle avoiding robot which I and Sooraj Krishna built in ROS using STDR simulator. The robot is making decision based on a 3 layer Neural Network. The learning algorithm used is back-propagation (which we wrote in python). The network design is shown below.

neural network

The 4 inputs are distances from sonar sensors placed on the Robot. The two outputs are linear velocity on x -axis and angular velocity on z-axis. The Neural Network is first trained using the data captured from joystick controlling the simulated Robot. Then the trained weights are used in the NN for controlling the Robot. This is the first version that is trained with small training set. The video is showing the Robot avoiding obstacles on its own.

This is after a bit more training.

NB: The video is playing a bit more faster than the actual simulation as you can see from the time showing in simulator.

NB: Among two outputs one is for angular velocity. For turning right the value will be positive and for turning left it will be negative. The network was unable to converge since the output has negative values. I had to shift the range so that all the output values are positive. Need to play with this some more time to figure out the rest. :-)