Difference between revisions of "Talk:XanderCat"

From Robowiki
Jump to navigation Jump to search
m (responded to GrubbmGait)
(added a large amount of chit chat about version 3.1 results)
Line 1: Line 1:
 
Congrats on breaking the 50% barrier. Seems that you have the planning of your bot on scheme, now it's just the translation into the right code. One small remark: You don't have to have 'zillions of versions' present in the rumble, the details of older versions still are available when not in the participants list anymore. Comparisons between two versions are quite easy to do like [http://darkcanuck.net/rumble/RatingsCompare?game=roborumble&name=xandercat.XanderCat%202.0&vs=xandercat.XanderCat%201.0] . Just click on your bot in the rankings, then the details and a few older versions are shown. Good luck with your further development! --[[User:GrubbmGait|GrubbmGait]] 08:37, 25 May 2011 (UTC)
 
Congrats on breaking the 50% barrier. Seems that you have the planning of your bot on scheme, now it's just the translation into the right code. One small remark: You don't have to have 'zillions of versions' present in the rumble, the details of older versions still are available when not in the participants list anymore. Comparisons between two versions are quite easy to do like [http://darkcanuck.net/rumble/RatingsCompare?game=roborumble&name=xandercat.XanderCat%202.0&vs=xandercat.XanderCat%201.0] . Just click on your bot in the rankings, then the details and a few older versions are shown. Good luck with your further development! --[[User:GrubbmGait|GrubbmGait]] 08:37, 25 May 2011 (UTC)
 
: Thanks GrubbmGait, though I'm not sure how much praise I deserve for being officially average. :-P  I'm trying out a slightly revised version today, version 2.1.  No major component changes, but it modifies the bullet firing parameters, driving parameters, some segmentation parameters, and has improved gun selection. [[User:Skotty|Skotty]] 20:43, 25 May 2011 (UTC)
 
: Thanks GrubbmGait, though I'm not sure how much praise I deserve for being officially average. :-P  I'm trying out a slightly revised version today, version 2.1.  No major component changes, but it modifies the bullet firing parameters, driving parameters, some segmentation parameters, and has improved gun selection. [[User:Skotty|Skotty]] 20:43, 25 May 2011 (UTC)
 +
 +
== Version 3.1 ==
 +
 +
Interesting results for version 3.1.  No real change in rank from 3.0, but using an entirely new drive.  I've done away with the borrowed wave surfing drive from BasicGFSurfer and replaced it with a drive of my own design.
 +
 +
Despite the new wave surfing drive (which I will call a Stat Drive) which I crafted almost entirely from scratch, I think it shares a lot in common with other wave surfing drives.  It's just naturally where you end up when working out the best way to drive.  I really haven't tried to tweak the segmentation yet, so I think it can be further improved with a few parameter changes.
 +
 +
Here is what my new drive does (you will likely see a lot in common with other drive strategies out there):
 +
 +
* Segmentation - Much like other wave surfing drives, my Stat Drive supports segmentation.  I can't remember what it is actually segmenting on right now (don't have the code in front of me at the moment).  I'll add that detail later.  It is very easy to change the segmentation parameters.  The Stat Drive relies on a seperate component to determine the segment or combination of segments, and the segmenters can be swapped in and out easily.
 +
* Tracking danger - Each segment has a fixed number of "buckets" or "bins" that represent the danger at a particular "factor", where a factor represents an angular offset of the robot from an original bearing of the bullet wave origin to the robot at the time the bullet was fired.  When a particular factor is determined to be more dangerous, a value is added to the corresponding bin or bins around that factor.  Initially when I wanted to add danger, I just added to one bin.  One thing I did steal from from the BasicGFSurfer wave surfing drive was the manner of adding danger to all the bins, trailing off sharply from the most dangerous bin.  I don't know why I didn't think to do this initially.  Once my eyes glanced over it, it was obvious it was what I should have been doing from the start.
 +
* Bullet Hits - The most dangerous of events -- actually getting hit by a bullet.  When hit by a bullet, the Stat Drive records danger of a certain amount (lets say a value represented by the variable d) to the matching bin of corresponding segment.  One tenth that amount (d/10) is currently added to all other segments, though this is just experimental; I may modify or remove that effect as I tune it a bit more.
 +
* Wave Hits - When a wave hits (but not necessarily a bullet hit), the Stat Drive currently records one fifth the amount of danger (d/5) for the matching bin of the corresponding segment.  Thea idea being that the opponents gun, likely being a "Guess Factor" gun, might be more likely to aim for that bin next time, so lets try to avoid it.  This also probably needs some fine tuning.  Part of the same experiment as with bullet hits, adding one tenth of that amount (d/50) is added to all other segments.
 +
* Wall Avoidance - While I wrote it from scratch myself, wall avoidance right now is doing pretty much the exact same thing as the "wall stick" approach.  I have some ideas that would be fancier, but the "wall stick" approach works for now.
 +
* Rolling danger - Rolling danger is the idea of removing danger previously added from bullets or waves that are over a certain age.  The Stat Drive is not doing this right now, but I'm planning on experimenting with the idea.
 +
* Figuring out where it can get to - One of the first steps to avoiding a bullet wave is determining how far you can go in each orbital direction before the bullet hits.  At first I used some crude approaches to this with the Stat Drive, but they just won't cut it if I want to be really competitive.  I now have it predict our position into the future, taking pretty much everything into account (turn rates, acceleration/deceleration rates, wall smoothing, etc) to make the prediction as accurate as possible.
 +
* Figuring out where to go - once we know how far we can go, we have to decide where in that range we want to go.  I'm experimenting with a few approaches.  For now, it looks for the bin with the lowest value and heads there.
 +
* Figuring out how to get there - Once we know where we want to go, we have to figure out how to get there.  This seemed simple enough, but one problem I ran into was overshooting the target and being in the wrong place when the bullet arrives.  This problem turned out to be significant in my testing.  So I had to do additional work to ensure that if I will reach my target before the wave hits, I slow down before getting there so I land right on target.  This sounds easier than it actually was to implement.
 +
 +
Where to go from here?
 +
 +
Performance was roughly equal in the rumble to the BasicGFSurfer drive.  I need to tweak the segmentation approaches and parameters.  I need to tweak the manner of adding danger.  And I need to play around with rolling danger to see what effect that has.  Once that is done, I don't believe I will make any more changes to the Stat Drive or it's use in XanderCat.
 +
 +
I may employ other drives in combination at some point using a "drive selector", an ability that is built into the Xander framework.  For example, I would like to build a drive and gun built specifically for "mirror" bots that mirror their opponents drive; the drive selector would switch to these components whenever a mirror bot is detected.
 +
 +
Outside of drives, my Stat Gun is still a bit crude.  I know I can improve there.  And then I also have a few other little tricks up my sleeve I would like to try when I have the time.

Revision as of 19:45, 6 June 2011

Congrats on breaking the 50% barrier. Seems that you have the planning of your bot on scheme, now it's just the translation into the right code. One small remark: You don't have to have 'zillions of versions' present in the rumble, the details of older versions still are available when not in the participants list anymore. Comparisons between two versions are quite easy to do like [1] . Just click on your bot in the rankings, then the details and a few older versions are shown. Good luck with your further development! --GrubbmGait 08:37, 25 May 2011 (UTC)

Thanks GrubbmGait, though I'm not sure how much praise I deserve for being officially average. :-P I'm trying out a slightly revised version today, version 2.1. No major component changes, but it modifies the bullet firing parameters, driving parameters, some segmentation parameters, and has improved gun selection. Skotty 20:43, 25 May 2011 (UTC)

Version 3.1

Interesting results for version 3.1. No real change in rank from 3.0, but using an entirely new drive. I've done away with the borrowed wave surfing drive from BasicGFSurfer and replaced it with a drive of my own design.

Despite the new wave surfing drive (which I will call a Stat Drive) which I crafted almost entirely from scratch, I think it shares a lot in common with other wave surfing drives. It's just naturally where you end up when working out the best way to drive. I really haven't tried to tweak the segmentation yet, so I think it can be further improved with a few parameter changes.

Here is what my new drive does (you will likely see a lot in common with other drive strategies out there):

  • Segmentation - Much like other wave surfing drives, my Stat Drive supports segmentation. I can't remember what it is actually segmenting on right now (don't have the code in front of me at the moment). I'll add that detail later. It is very easy to change the segmentation parameters. The Stat Drive relies on a seperate component to determine the segment or combination of segments, and the segmenters can be swapped in and out easily.
  • Tracking danger - Each segment has a fixed number of "buckets" or "bins" that represent the danger at a particular "factor", where a factor represents an angular offset of the robot from an original bearing of the bullet wave origin to the robot at the time the bullet was fired. When a particular factor is determined to be more dangerous, a value is added to the corresponding bin or bins around that factor. Initially when I wanted to add danger, I just added to one bin. One thing I did steal from from the BasicGFSurfer wave surfing drive was the manner of adding danger to all the bins, trailing off sharply from the most dangerous bin. I don't know why I didn't think to do this initially. Once my eyes glanced over it, it was obvious it was what I should have been doing from the start.
  • Bullet Hits - The most dangerous of events -- actually getting hit by a bullet. When hit by a bullet, the Stat Drive records danger of a certain amount (lets say a value represented by the variable d) to the matching bin of corresponding segment. One tenth that amount (d/10) is currently added to all other segments, though this is just experimental; I may modify or remove that effect as I tune it a bit more.
  • Wave Hits - When a wave hits (but not necessarily a bullet hit), the Stat Drive currently records one fifth the amount of danger (d/5) for the matching bin of the corresponding segment. Thea idea being that the opponents gun, likely being a "Guess Factor" gun, might be more likely to aim for that bin next time, so lets try to avoid it. This also probably needs some fine tuning. Part of the same experiment as with bullet hits, adding one tenth of that amount (d/50) is added to all other segments.
  • Wall Avoidance - While I wrote it from scratch myself, wall avoidance right now is doing pretty much the exact same thing as the "wall stick" approach. I have some ideas that would be fancier, but the "wall stick" approach works for now.
  • Rolling danger - Rolling danger is the idea of removing danger previously added from bullets or waves that are over a certain age. The Stat Drive is not doing this right now, but I'm planning on experimenting with the idea.
  • Figuring out where it can get to - One of the first steps to avoiding a bullet wave is determining how far you can go in each orbital direction before the bullet hits. At first I used some crude approaches to this with the Stat Drive, but they just won't cut it if I want to be really competitive. I now have it predict our position into the future, taking pretty much everything into account (turn rates, acceleration/deceleration rates, wall smoothing, etc) to make the prediction as accurate as possible.
  • Figuring out where to go - once we know how far we can go, we have to decide where in that range we want to go. I'm experimenting with a few approaches. For now, it looks for the bin with the lowest value and heads there.
  • Figuring out how to get there - Once we know where we want to go, we have to figure out how to get there. This seemed simple enough, but one problem I ran into was overshooting the target and being in the wrong place when the bullet arrives. This problem turned out to be significant in my testing. So I had to do additional work to ensure that if I will reach my target before the wave hits, I slow down before getting there so I land right on target. This sounds easier than it actually was to implement.

Where to go from here?

Performance was roughly equal in the rumble to the BasicGFSurfer drive. I need to tweak the segmentation approaches and parameters. I need to tweak the manner of adding danger. And I need to play around with rolling danger to see what effect that has. Once that is done, I don't believe I will make any more changes to the Stat Drive or it's use in XanderCat.

I may employ other drives in combination at some point using a "drive selector", an ability that is built into the Xander framework. For example, I would like to build a drive and gun built specifically for "mirror" bots that mirror their opponents drive; the drive selector would switch to these components whenever a mirror bot is detected.

Outside of drives, my Stat Gun is still a bit crude. I know I can improve there. And then I also have a few other little tricks up my sleeve I would like to try when I have the time.