Difference between revisions of "DeBroglie"

From Robowiki
Jump to navigation Jump to search
m (axe the roadmap.)
(rewrite via template)
Line 17: Line 17:
 
}}
 
}}
  
== Name ==
+
== Background Information ==
  
This is my first wave surfing bot, and I'm a physicist by training, so it's named in honor of [[wikipedia:Louis_de_Broglie|Louis de Broglie]], who discovered that matter has [[wikipedia:Matter_wave|wavelike properties]]. This was a foundational discovery in Quantum Mechanics. In 1929 de Broglie received the first ever Nobel Prize given to work done as a student thesis.
+
; Where did you get the name?
 +
: This is my first wave surfing bot, and I'm a physicist by training, so it's named in honor of [[wikipedia:Louis_de_Broglie|Louis de Broglie]], who discovered that matter has [[wikipedia:Matter_wave|wavelike properties]]. This was a foundational discovery in Quantum Mechanics. In 1929 de Broglie received the first ever Nobel Prize given to a student thesis.
  
In honor of the namesake, all data collection is done in the form of waves. Waves emanate from the bot for targeting data, and from the enemy for movement data.
+
; What's special about it?
 +
: The targeting and movement are relatively simple, compact objects. They draw on a central Universe object that contains the entire situational picture, with a Bot object that represents each robot on the field. To fire or dodge, data is pulled from a kD-tree, constructed into a histogram with no quantization in the x-dimension. I've done everything I can to avoid slicing/quantizing data until the very last point where the pseudo-kernel density bit happens.
  
This bot is very much a '''work in progress'''.
+
; How competitive is it?
 +
: It's scraping the bottom of the top 100 in its current state. Hopefully that doesn't last long.
  
== Design ==
+
== Strategy ==
  
=== Goals ===
+
; How does it [[Movement|move]]?
 +
: [[Wave Surfing]], based loosely off of concepts in the [[Wave Surfing Tutorial|wave surfing tutorial]].
  
I wanted to gather waves to use as targeting information, both incoming waves from the enemy for movement, but also outgoing waves from DeBroglie for targeting. I wanted to reuse as little code as possible, so I've been working on implementing the wave system in as modular a way as possible.
+
; How does it fire?
 +
: [[GuessFactor Targeting]] using [[Dynamic Clustering|a kD tree to store data.]] [[Waves/Precise_Intersection|Precise intersection]] is used to determine the fire angles that would have hit.
  
=== Universe ===
+
; What does it save between rounds and matches?
 +
: Nothing between matches. Between rounds all surfing and targeting data is saved.
  
The bot has a Universe object which contains all elements of its picture of the battlefield, including two Bot objects, one for itself, and one for the enemy. The Bots are updated on every scan.
+
== Additional Information ==
  
Information is gathered in a kD tree. The Universe feeds information to the Wheels, and Gun which are movement, and targeting respectively.
+
; Can I use your code?
 +
: Through rev0048, DeBroglie is available under the [[RWPCL|RoboWiki Public Code License]] (RWPC) - Version 1.1 or any later version. A bit of a modification to licensing is coming soon for subsequent versions.
  
==== Segmentation ====
+
; What's next for your robot?
 +
: Get the movement and targeting systems squared away and cleaned up.
  
After a lot of annoying code digging every time I wanted to try a different way of segmenting/dimensioning my gathered data, I decided to put all of that code into a single static class. All data segmenting about the current situation of the Bots is done via the Segmentation class.
+
; Does it have any [[White Whale]]s?
 +
: ''[[CassiusClay]]'' - I've been in awe of that bot since finding Robocode in 2007. CLimbing above it in the RoboRumble is priority #1.
  
=== Gun ===
+
; What other robot(s) is it based on?
 +
: All code written by others is under the RWPC or a more permissive license.
  
The gun uses precise prediction to gather angles that would have hit the enemy from each wave. Those angles are saved in the kD tree. To shoot, a histogram is generated from the k nearest situations, and the target is chosen from the histogram.  This means that DeBroglie doesn't use fixed bins at all.
+
:*The kD tree is written by [[User:Rednaxela|Rednaxela]] and is [[User:Rednaxela/kD-Tree|available on this wiki]]. License: as-is with attribution.
 
+
:*The [[User:Rednaxela/FastTrig|FastTrig lookup table and methods]] are written by a host of amazing folks at this wiki, starting with [[User:Rednaxela|Rednaxela]], but including [[User talk:Rednaxela/FastTrig|other great Robocode luminaries]].
DeBroglie uses an escape angle calculation that's somewhere between the  [[Maximum_Escape_Angle|naive version]] and the more [[Maximum_Escape_Angle/Precise|precise calculation]].
+
:*Parts of the precise prediction are accomplished with the help of [http://www.openprocessing.org/visuals/?visualID=8009 code] originally by [http://local.wasp.uwa.edu.au/~pbourke/geometry/sphereline/raysphere.c Paul Bourke], adapted by [http://www.openprocessing.org/portal/?userID=54 REAS @ OpenProcessing.org] and further adapted by me. This code determines if a line segment and a circle intersect. License: [http://creativecommons.org/licenses/by-sa/3.0/us/ CC-by-sa 3.0]
 
 
=== Wheels (Placeholder Movement) ===
 
 
 
The movement right now is [[User:PEZ|PEZ]]'s [[Aristocles]] movement, until I finish writing the targeting and move on to defense. I chose Aristocles because my other degree is in Philosophy, and it was a mini/micro open source movement that uses waves.  It would be against the spirit of this bot to use a movement that lacked waves, even as a placeholder.
 
 
 
=== Eyes ===
 
 
 
A [[One_on_One_Radar#Turn_Multiplier_Lock|turn multiplier lock]] radar with a factor of 1.95.
 
 
 
== Code ==
 
 
 
=== License ===
 
 
 
This bot's code (messy a state as it's in right now) is available under the [[RWPCL|RoboWiki Public Code License]] (RWPC) - Version 1.1 or any later version.
 
 
 
=== Credits ===
 
All code written by others is under the RWPC or a more permissive license.
 
 
 
*The kD tree is written by [[User:Rednaxela|Rednaxela]] and is [[User:Rednaxela/kD-Tree|available on this wiki]]. License: as-is with attribution.
 
*The [[User:Rednaxela/FastTrig|FastTrig lookup table and methods]] are written by a host of amazing folks at this wiki, starting with [[User:Rednaxela|Rednaxela]], but including [[User talk:Rednaxela/FastTrig|other great Robocode luminaries]].
 
*Parts of the precise prediction are accomplished with the help of [http://www.openprocessing.org/visuals/?visualID=8009 code] originally by [http://local.wasp.uwa.edu.au/~pbourke/geometry/sphereline/raysphere.c Paul Bourke], adapted by [http://www.openprocessing.org/portal/?userID=54 REAS @ OpenProcessing.org] and further adapted by me. This code determines if a line segment and a circle intersect. License: [http://creativecommons.org/licenses/by-sa/3.0/us/ CC-by-sa 3.0]
 
* The test-bed is [[Aristocles]] by [[User:PEZ|PEZ]]. The code is under the [[RWPCL]].
 
  
 
[[Category:Bots|DeBroglie]]
 
[[Category:Bots|DeBroglie]]

Revision as of 19:55, 4 June 2012

Sub-pages:
Version History - Archived Talk 2010
deBroglie
Broglie 7.jpeg
Louis de Broglie, winner of the 1929 Nobel Prize for Physics
Author(s) Tkiesel
Extends AdvancedRobot
Targeting Dynamic Clustering with precise intersection
Movement Random Movement
Best Rating 274th (not updating until movement is written by me)
Current Version rev0024
Code License RWPCL

Background Information

Where did you get the name?
This is my first wave surfing bot, and I'm a physicist by training, so it's named in honor of Louis de Broglie, who discovered that matter has wavelike properties. This was a foundational discovery in Quantum Mechanics. In 1929 de Broglie received the first ever Nobel Prize given to a student thesis.
What's special about it?
The targeting and movement are relatively simple, compact objects. They draw on a central Universe object that contains the entire situational picture, with a Bot object that represents each robot on the field. To fire or dodge, data is pulled from a kD-tree, constructed into a histogram with no quantization in the x-dimension. I've done everything I can to avoid slicing/quantizing data until the very last point where the pseudo-kernel density bit happens.
How competitive is it?
It's scraping the bottom of the top 100 in its current state. Hopefully that doesn't last long.

Strategy

How does it move?
Wave Surfing, based loosely off of concepts in the wave surfing tutorial.
How does it fire?
GuessFactor Targeting using a kD tree to store data. Precise intersection is used to determine the fire angles that would have hit.
What does it save between rounds and matches?
Nothing between matches. Between rounds all surfing and targeting data is saved.

Additional Information

Can I use your code?
Through rev0048, DeBroglie is available under the RoboWiki Public Code License (RWPC) - Version 1.1 or any later version. A bit of a modification to licensing is coming soon for subsequent versions.
What's next for your robot?
Get the movement and targeting systems squared away and cleaned up.
Does it have any White Whales?
CassiusClay - I've been in awe of that bot since finding Robocode in 2007. CLimbing above it in the RoboRumble is priority #1.
What other robot(s) is it based on?
All code written by others is under the RWPC or a more permissive license.