Neural Networks Warehouse
Artificial Intelligence Depot
"As knowledge increases, ignorance unfolds." -Kennedy
KNOWLEDGE MESSAGES SUBMIT SEARCH  
Bot Navigation: Neural Networks for Obstacle Avoidance
A practical tutorial applying machine learning to game agents
 
• Bot Navigation: Neural Networks for Obstacle Avoidance

In follow-up to the first essay on the design philosophy of the bot navigation system, I've just released a Tutorial on Obstacle Avoidance. It provides a background review of existing approaches for avoiding collisions, and describes the problem in simple terms. Neural networks are then trained to tackle the problem, providing a robust and flexible solution. A comprehensive practical insight into this process is provided. The results are then analysed and a demo is available.

If you're knowledge of neural networks is only theoretical and you're having trouble applying it to specific problems, then this tutorial is for you! We show why this problem is well suited to neural networks, and take you step by step through the procedure of getting the model working.

1019 posts.
Monday 08 October, 06:10
Reply
• The gothic resurrection link does not work

Or rather, the link works, but the "download" link from the page you end up brings you to 3ddownloads, which apparantly does not carry this file anymore.

Luckily, there are other places to go. I just downloaded the pack form here

28 posts.
Saturday 13 October, 14:33
Reply
• Stale file-servers

Thanks for the info. I'll update the link now!

1019 posts.
Monday 15 October, 06:27
Reply
• Som questions about the ANN

I have some questions about the structure and the evolution of the neuronal network.

1. What is the output of the ANN?
As I learnt from the article 'First Steps in Game AI: Your Own Bot' and the Q2 Bot Core ( qbMovementOrder(angles,velocity,1); ) the bot has to send a direction vector and a velocity vector.
So I guess these are included in the output of the ANN?
So, are there 6 Nodes?
Is there something else?

2. Breeding?
Which method do you use to alter/combine the ANNs during evolution?
Back-propagation? (I didn't really understand how you can apply binary crossover)

Is the source code of the bot available? Looking at the source would probably help a lot.

1 posts.
Thursday 24 January, 11:57
Reply
• Obstacle Avoidance

1. There are two things to keep in mind: make the NN output the least possible, and simplify the search space. So it just outputs one value relative to the current state: the change in yaw. I use vector rotation to get the desired heading.

2. Check the Advanced Obstacle Avoidance tutorial. I don't use a binary representation, but use floats as genes instead. It makes things much easier.

There are plans to release the code, but not anytime soon! Feel free to ask more questions if you get stuck though ;)

1019 posts.
Thursday 24 January, 14:02
Reply
• re

I'm just interested to know what your sensors are (the inputs to the ANN)

I'm assuming they are rays cast from the player position which check for collision detection with the walls. Is this correct?

Very useful tutorial btw. I'm fine with ANNs and GAs, I use them a lot but I've wondered how to interface with quake or similar for a while and I couldn't be bothered to spend hours going over the source.

thanks

8 posts.
Thursday 21 February, 17:36
Reply
• PS

Some further thoughts...

How come your bot - given the fitness function in your article - doesn't just slowly spin around on the spot?

You don't seem to penalize it for this sort of behavior so I would expect that the GA would converge upon this simple solution to avoiding the obstacles pretty quickly! Afterall... what motivation does it have for moving?

8 posts.
Thursday 21 February, 17:53
Reply
• 'Smart' Sensors

Welcome to the boards uncle_biscuit.

The sensors return distances indeed, but there is a twist. It is based on movement simulation rather than just plain tracing. This is ever so slightly more expensive, but allows the bot to walk up- and down-stairs freely.

As for the spinning on the spot problem, that is mentioned in the advanced tutorial. The speed is forced to full, and another component is trained to apply the brake (I've found no need for that yet ;)

Hope that helps.

1019 posts.
Friday 22 February, 03:37
Reply
• bot movement

ah right, I see how that could work. However, I assume you are currently developing this bot... how are you proposing to get it to stop(to hide, to camp etc) when you eventually add more advancd behavior?

Have you seen the work using Hopfield nets for obstacle avoidance btw? Can't remember the researchers name offhand but the theory may be applicable to FPSs for map learning.

ps. I hadn't seen your advanced tutorial and had some difficulty finding it. Maybe you could add a link from the end of one tutorial to the next for ease of navigation? (or maybe I just missed it :-))

8 posts.
Friday 22 February, 03:59
Reply
• reminder

;)

8 posts.
Thursday 28 February, 20:08
Reply
• Camping

I hadn't forgotten, honest ;)

I'm working on 'higher-level' behaviours at the moment actually. These are chosen in such a way to maximise the global reward.... currently, that's just exploration and patrolling rewards; but eventually, this will be survival and frags. If the bot feels that stopping to snipe is worth-while, that behaviour will be selected.

I was also thinking of having speed as an independent control, whereby an external NN controls the speed.

Do you have a reference for the hopfield map learning paper?

I need to reformat some tutorials anyway, so interlinking is on my list too ;)

1019 posts.
Thursday 28 February, 21:57
Reply
• re

its called:

Hopfield Neural Network for Dynamic Path Planning and Obstacle Avoidance by Michail G. Lagoudakis

I think I got it from citeseer

8 posts.
Friday 01 March, 01:55
Reply
• Any code available for this tutorial?

Seems like a really cool demo. I am wondering if there is any code available for this tutorial.

thanks

1 posts.
Wednesday 01 October, 09:53
Reply