|
| ||||||||||||||||||||
| 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. |
|
|
• 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 |
|
|
• Stale file-servers
Thanks for the info. I'll update the link now! |
|
|
• 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? 2. Breeding? Is the source code of the bot available? Looking at the source would probably help a lot. |
|
|
• 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 ;) |
|
|
• 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 |
|
|
• 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? |
|
|
• '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. |
|
|
• 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 :-)) |
|
|
• reminder
;) |
|
|
• 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 ;) |
|
|
• re
its called: Hopfield Neural Network for Dynamic Path Planning and Obstacle Avoidance by Michail G. Lagoudakis I think I got it from citeseer |
|
|
• 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 |
|


