Introduction

This is the second article of the column covering bot spatial awareness and terrain recognition. The first was an essay discussing the design philosophy of the entire navigation system. I would strongly encourage you to at least skim through that before tackling this tutorial.

While the previous dissertation was rather more theoretical than practical, this tutorial will allow you to get lower down into the system. We will cover the use of neural networks in designing a navigation scheme purely for obstacle avoidance. The purpose of this is to concentrate fully on understanding the functioning of artificial neural networks (NN) in a practical application. We will not cover the theory of NN here, and basic understanding of their functioning will be assumed. We refer the reader to the Neural Networks Warehouse, a good place to brush up on background knowledge.

To guarantee success, we will start by extending an existing solution to obstacle avoidance by learning the behaviour with neural networks. Once we have a feel for the problem at hand, we will extend our model to perform more challenging problems in the next issue of this column.

As all in depth projects should do, this tutorial will start by looking at previous work. In particular, considering how obstacle avoidance has been tackled in the past. We will then be able to establish a robust specification of the problem at hand. Using a first person shooter game engine, we will then be able to create the tools we need to train the neural networks. Once we have established the structure of our neural networks, the process of training them will then begin. In this tutorial, we will consider the genetic algorithm as a big black box, allowing us to optimise the weights of the neural networks. We will go into the genetic algorithm in more detail in the next tutorial. After providing the results of our experiments, and drawing conclusions from them, the potential improvements will be finally discussed

Remember you can visit the Message Store to discuss this tutorial. Comments are always welcome!. There are already replies in the thread, why not join in?