AI for soccer-playing robots
I was going to post this in a forum that is about more general AI since this is not for a computer game, but then again it's more likely that the people here have the experience to answer a question like this.
Basically, I've just joined a research group at my university and the current project is to develop a team of 5 robots that can play soccer against another team. I'm the only one who has some experience on the AI field so it's likely that I'm going to be in charge of development in this area. I didn't give a lot of thought to the subject but my first impression is that there's no obvious solution to the problem; if it had variable terrain or resource issues I would know exactly where to start, but the "thinking" involved here is almost entirely tactical. The only relevant information is the positions and velocities of the ball and players. I think it would have to recognize some attack and defense patterns on a higher level, but there's a huge number of different tactics so I can't define them all by hand using a simplistic system like looking at the relative positions (I guess). (BTW I have friends who can help me with the tactics ;) ) There might be some room for some small neural networks to recognize the fuzziest patterns and make a few decisions but they still need to be spoonfed the data; raw positions won't cut it. Maybe if I think about it more I'll come up with just the right solution, but then again maybe I won't :P So, maybe we can brainstorm some initial ideas if you have them.
What language is all of this(i mean the one that you are using)??
"All beings came from Chaos" -Romans"Veni, Vidi, Vici"- Julius Caesar
Well, I'm developing a football game for mobiles and the general strategy I'm using is:
On top of that is simplistic plays for throw-ins, corners and so so on.
There are four player type: forwards, midfield, defenders and the goalie - each have slightly different rules.
It's a start and works OK.
Skizz
if team has the ball players move up the field and avoid opposing players player with ball passes to player furthest from any opposing player and nearer the goalelse players move down the field and get close to opposing playersend if
On top of that is simplistic plays for throw-ins, corners and so so on.
There are four player type: forwards, midfield, defenders and the goalie - each have slightly different rules.
It's a start and works OK.
Skizz
I'm not sure about this one, but I've been thinking about it: Could you discretize the problem in such a way that it could be solved by similar search as board games (e.g. Chess)? This would approximately solve the high-level positioning of the players. You'd also need low-level manouvering AI to actually realize these high-level actions. And the more these two levels resembled each other, the better it would estimate the actual gameplay and play the game.
One big problem is that you (as I understood it) don't have any control of the other team. They're a different set of robots, made by other people, right? I don't know what kinds of sensors your robots have but for the above idea to work you'd need to come up with a high-level model for the enemy team's possible actions. Many probabilistic learning algorithms fit this purpose.
Well, truth to be told, the branching factor is likely to be so huge for 10 robots that it wouldn't work. Not in real time at least, on slow embedded CPUs. If you managed to solve it on a workstation, you could simulate a game and use the simulation to train an ANN or a more complex model, and use this model for actual gameplay.
One big problem is that you (as I understood it) don't have any control of the other team. They're a different set of robots, made by other people, right? I don't know what kinds of sensors your robots have but for the above idea to work you'd need to come up with a high-level model for the enemy team's possible actions. Many probabilistic learning algorithms fit this purpose.
Well, truth to be told, the branching factor is likely to be so huge for 10 robots that it wouldn't work. Not in real time at least, on slow embedded CPUs. If you managed to solve it on a workstation, you could simulate a game and use the simulation to train an ANN or a more complex model, and use this model for actual gameplay.
My Website: ai-junkie.com | My Books: 'Programming Game AI by Example' & 'AI Techniques for Game Programming'
RoboCup ?
"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." — Brian W. Kernighan
A nice start:
Layered Learning in Multi-Agent Systems (A Winning Approach to Robotic Soccer), Peter Stone, Ph.D thesis / book, CMU, 2000
Original thesis available on-line at:
http://www-2.cs.cmu.edu/afs/cs/usr/pstone/mosaic/thesis/index.html
Layered Learning in Multi-Agent Systems (A Winning Approach to Robotic Soccer), Peter Stone, Ph.D thesis / book, CMU, 2000
Original thesis available on-line at:
http://www-2.cs.cmu.edu/afs/cs/usr/pstone/mosaic/thesis/index.html
It's being developed in C++, the computer in each robot is running under Linux but it's overkill, it takes 5 minutes to boot!! Those guys really need to find another OS.
Skizz thanks but one of the most important aspects of the competition is tactics and simple systems tend to lose, I checked :P
It IS for robocup, forgot to mention it ;) thanks everyone for the links! Thank you too William I'll check it out tomorrow when I have more time, it looks like it's something I really have to consider :)
civguy I don't think it can be implemented using a search algorythm like in chess because, as you said, the game is really fast. But I'm sure it can be used in another way for the part that deals with the most high-level stuff, like choosing between different stances or tactics? BTW, there's a camera that gives each robot the positions of every robot and the ball, so all we have to worry about is how to work with that.
As I see it, it could have 3 layers: A low-level layer that deals with moving and basic stuff, a tactics layer that executes simple atomic tactics, and a strategic layer that choses between those tactics, and maybe gives that layer some extra parameters that are part of the strategy. Low-level should be hard coded, tactics could also remain kinda fixed, but use some sort of tools so that it's easier to modify and play with during development (I'm counting on my friends to help me tune this), and the strategic layer, since it works with more high-level stuff, could use a more expensive system like neural networks or anything else that features learning (using one tactic over another because of experience)? This obviously has some holes to fill it, and I'd also like to consider some other options before I'm done with the design fase.
Skizz thanks but one of the most important aspects of the competition is tactics and simple systems tend to lose, I checked :P
It IS for robocup, forgot to mention it ;) thanks everyone for the links! Thank you too William I'll check it out tomorrow when I have more time, it looks like it's something I really have to consider :)
civguy I don't think it can be implemented using a search algorythm like in chess because, as you said, the game is really fast. But I'm sure it can be used in another way for the part that deals with the most high-level stuff, like choosing between different stances or tactics? BTW, there's a camera that gives each robot the positions of every robot and the ball, so all we have to worry about is how to work with that.
As I see it, it could have 3 layers: A low-level layer that deals with moving and basic stuff, a tactics layer that executes simple atomic tactics, and a strategic layer that choses between those tactics, and maybe gives that layer some extra parameters that are part of the strategy. Low-level should be hard coded, tactics could also remain kinda fixed, but use some sort of tools so that it's easier to modify and play with during development (I'm counting on my friends to help me tune this), and the strategic layer, since it works with more high-level stuff, could use a more expensive system like neural networks or anything else that features learning (using one tactic over another because of experience)? This obviously has some holes to fill it, and I'd also like to consider some other options before I'm done with the design fase.
I'm not sure if you are interested, but I read about a team using genetic programming to generate the AI for a robocup team. I believe that it is in the proceedings from conference in 1998, although Im not sure if that is the correct year. The first time the team did it, they were aweful. The second time (the second as far as I know) they were able to compete and were actually in the middle of the pack after everything was said and done. You can probably find it in citseer which btw, if you didn't know about is an amzing place to find papers about anything related to computer science.
Dwiel
Dwiel
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement