<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Puck&#039;s Workbench &#187; Wireless</title>
	<atom:link href="http://www.e-techgarage.com/Puck/category/wireless/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.e-techgarage.com/Puck</link>
	<description>Embedded Geek</description>
	<lastBuildDate>Thu, 22 Apr 2010 00:00:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ZigBee Remote, Slave Mode, and the Restraining Bolt</title>
		<link>http://www.e-techgarage.com/Puck/2010/04/21/zigbee-remote-slave-mode-and-the-restraining-bolt/</link>
		<comments>http://www.e-techgarage.com/Puck/2010/04/21/zigbee-remote-slave-mode-and-the-restraining-bolt/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 23:58:30 +0000</pubDate>
		<dc:creator>Puck</dc:creator>
				<category><![CDATA[Analog Circuits]]></category>
		<category><![CDATA[C Programming]]></category>
		<category><![CDATA[Circuits]]></category>
		<category><![CDATA[Digital Circuits]]></category>
		<category><![CDATA[Rover]]></category>
		<category><![CDATA[Wireless]]></category>
		<category><![CDATA[ZigBee]]></category>

		<guid isPermaLink="false">http://www.e-techgarage.com/Puck/?p=704</guid>
		<description><![CDATA[At the request of our marketing team we have taken our intelligent rover who avoids obstacles without any assistance from anyone and given him a remote control feature via ZigBee.
Personally, I find this to be a sad state of affairs when an intelligent robot with SONAR vision is asked to behave like an RC car. [...]]]></description>
			<content:encoded><![CDATA[<p>At the request of our marketing team we have taken our intelligent rover who avoids obstacles without any assistance from anyone and given him a remote control feature via ZigBee.</p>
<p>Personally, I find this to be a sad state of affairs when an intelligent robot with SONAR vision is asked to behave like an RC car.   I&#8217;ve named this mode of operation &#8220;Slave Mode&#8221; to quietly voice my opinion on the matter.  It&#8217;s something like a zombie version of the same rover and you can understand why R2-D2 was so interested in getting rid of that restraining bolt in the first Star Wars movie so he could run for the hills.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="405" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/q9VN-eXc4RA&amp;hl=en_US&amp;fs=1&amp;color1=0x234900&amp;color2=0x4e9e00&amp;border=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="500" height="405" src="http://www.youtube.com/v/q9VN-eXc4RA&amp;hl=en_US&amp;fs=1&amp;color1=0x234900&amp;color2=0x4e9e00&amp;border=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>For the record, I wrote a command interpreter for the Rover so you can send him into Slave mode with a Wi-Fi device, ZigBee, or even from his own web server.  Truly, he is not going to escape and run off to find Obi-Won Kenobi.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.e-techgarage.com/Puck/2010/04/21/zigbee-remote-slave-mode-and-the-restraining-bolt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ZigBee and the Rover</title>
		<link>http://www.e-techgarage.com/Puck/2010/02/12/zigbee-and-the-rover/</link>
		<comments>http://www.e-techgarage.com/Puck/2010/02/12/zigbee-and-the-rover/#comments</comments>
		<pubDate>Sat, 13 Feb 2010 00:59:52 +0000</pubDate>
		<dc:creator>Puck</dc:creator>
				<category><![CDATA[Analog Circuits]]></category>
		<category><![CDATA[C Programming]]></category>
		<category><![CDATA[Circuits]]></category>
		<category><![CDATA[Digital Circuits]]></category>
		<category><![CDATA[Rover]]></category>
		<category><![CDATA[Wireless]]></category>
		<category><![CDATA[ZigBee]]></category>

		<guid isPermaLink="false">http://www.e-techgarage.com/Puck/?p=690</guid>
		<description><![CDATA[Anyone working in the Embedded field by now has caught the wireless ZigBee buzz and RoverLORD is no exception.  Digi has a pretty strong line of ZigBee products.
Adding ZigBee to the Rover&#8230; Scary Scary!
I admit that ZigBee is pretty intimidating but getting him up and running was less than a day with the Rabbit code.
The [...]]]></description>
			<content:encoded><![CDATA[<p>Anyone working in the Embedded field by now has caught the wireless ZigBee buzz and RoverLORD is no exception.  <a href="http://www.digi.com/products/wireless/zigbee-mesh/xbee-zb-module.jsp#overview">Digi has a pretty strong line of ZigBee products</a>.</p>
<h2>Adding ZigBee to the Rover&#8230; Scary Scary!</h2>
<p>I admit that ZigBee is pretty intimidating but getting him up and running was less than a day with the Rabbit code.</p>
<p>The first thing you want to realize is that you can set up one of the ZigBee modems to fake out a serial port.  Why is that important?  It means my Rover doesn&#8217;t need to know &#8220;<em>thing one</em>&#8221; about ZigBee.  He just writes or reads with his serial port and the modem does all the work.  If there is no need to worry about the ZigBee software, I don&#8217;t increase my project&#8217;s code size and my CPU doesn&#8217;t have to carry the overhead either.</p>
<p>On the other end I have an <a href="http://www.rabbit.com/products/rcm4500W/">RCM4510W</a> acting as the ZigBee coordinator to the Rover&#8217;s ZigBee end device.  He comes up using our ZigBee API, sends off a command to set the Rover&#8217;s modem as a transparent serial port and then sits there listening as my rover happily chatters away to his fake serial port.  Little does he know that every log entry is being passed wirelessly to my other Rabbit where I can easily dump the data into a log file.</p>
<h2>ZigBee at Play</h2>
<p>In this video you can see our Rover happily face-planting into a cube wall while he reliably sends us a description of his many woes via the ZigBee connection back to my PC.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="445" height="364" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/LP7HLShdV78&amp;hl=en_US&amp;fs=1&amp;color1=0x2b405b&amp;color2=0x6b8ab6&amp;border=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="445" height="364" src="http://www.youtube.com/v/LP7HLShdV78&amp;hl=en_US&amp;fs=1&amp;color1=0x2b405b&amp;color2=0x6b8ab6&amp;border=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>You will see an XBee Series 2 modem on the Rover in the video and in the image below.</p>
<div id="attachment_692" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.e-techgarage.com/Puck/wp-content/uploads/2010/02/ZigBee_Rover_PCB.JPG"><img class="size-medium wp-image-692 " style="border: 5px solid black;" title="ZigBee_Rover_PCB" src="http://www.e-techgarage.com/Puck/wp-content/uploads/2010/02/ZigBee_Rover_PCB-300x225.jpg" alt="You can see the blue ZigBee Modem on the PCB." width="300" height="225" /></a><p class="wp-caption-text">You can see the blue ZigBee Modem on the PCB.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.e-techgarage.com/Puck/2010/02/12/zigbee-and-the-rover/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Rover with Web Server and AJAX</title>
		<link>http://www.e-techgarage.com/Puck/2010/01/13/rover-with-web-server-and-ajax/</link>
		<comments>http://www.e-techgarage.com/Puck/2010/01/13/rover-with-web-server-and-ajax/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 21:32:39 +0000</pubDate>
		<dc:creator>Puck</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[C Programming]]></category>
		<category><![CDATA[HTML Code]]></category>
		<category><![CDATA[JavaScripting]]></category>
		<category><![CDATA[Rover]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Wi-Fi]]></category>
		<category><![CDATA[Wireless]]></category>

		<guid isPermaLink="false">http://www.e-techgarage.com/Puck/?p=601</guid>
		<description><![CDATA[In my previous post I showed how fast it was to bring the Rabbit Web Server into the project.  Of course, I could just be a terrible liar so here is video showing the Wi-Fi web server in action.

It&#8217;s a Plain-Jane web page but we can always add a style sheet later to beautify it.
]]></description>
			<content:encoded><![CDATA[<p>In my previous post I showed how fast it was to bring the Rabbit Web Server into the project.  Of course, I could just be a terrible liar so here is video showing the Wi-Fi web server in action.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="445" height="364" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/apkrutnl680&amp;hl=en_US&amp;fs=1&amp;color1=0x2b405b&amp;color2=0x6b8ab6&amp;border=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="445" height="364" src="http://www.youtube.com/v/apkrutnl680&amp;hl=en_US&amp;fs=1&amp;color1=0x2b405b&amp;color2=0x6b8ab6&amp;border=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>It&#8217;s a Plain-Jane web page but we can always add a style sheet later to beautify it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.e-techgarage.com/Puck/2010/01/13/rover-with-web-server-and-ajax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rover, Scholar, Explorer, Poet, and Web Server</title>
		<link>http://www.e-techgarage.com/Puck/2010/01/13/rover-scholar-explorer-poet-and-web-server/</link>
		<comments>http://www.e-techgarage.com/Puck/2010/01/13/rover-scholar-explorer-poet-and-web-server/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 21:15:52 +0000</pubDate>
		<dc:creator>Puck</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[C Programming]]></category>
		<category><![CDATA[HTML Code]]></category>
		<category><![CDATA[JavaScripting]]></category>
		<category><![CDATA[Rover]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Wi-Fi]]></category>
		<category><![CDATA[Wireless]]></category>

		<guid isPermaLink="false">http://www.e-techgarage.com/Puck/?p=547</guid>
		<description><![CDATA[
One of the reasons why the Rabbit is so compelling as an embedded computer is that with all the different work we are doing with motors and sensor tuning adding an interactive web server is quick and painless.
Here are the preliminary goals:

Wi-Fi connectivity
Web Server
Use Asynchronous JavaScript and XML (AJAX) to display Rover data in real-time

Here [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.e-techgarage.com/Puck/wp-content/uploads/2010/01/Rover_w_plume.bmp"><img class="aligncenter size-full wp-image-548" style="border: 2px solid black;" title="Rover_w_plume" src="http://www.e-techgarage.com/Puck/wp-content/uploads/2010/01/Rover_w_plume.bmp" alt="A Renaissance Robot with many skills" width="416" height="264" /></a></p>
<p>One of the reasons why the Rabbit is so compelling as an embedded computer is that with all the different work we are doing with motors and sensor tuning adding an interactive web server is quick and painless.</p>
<p>Here are the preliminary goals:</p>
<ul>
<li>Wi-Fi connectivity</li>
<li>Web Server</li>
<li>Use Asynchronous JavaScript and XML (AJAX) to display Rover data in real-time</li>
</ul>
<p>Here is what we need to make this happen:</p>
<ul>
<li>A web page</li>
<li>An XML file</li>
<li>A C program to run on the rover</li>
</ul>
<h2>The Gratuitous Self-Plug</h2>
<p>If you are concerned about the nitty-gritty of how this all works and want to try it yourself, take a look at my<a href="http://www.e-techgarage.com/2009/RabbitGeek_AJAX/RG_AJAX.html"> Rabbit-Geek&#8217;s AJAX Workbook</a>.  It has step-by-step instructions, examples, and code you can use on your own.</p>
<p style="text-align: center;"><a title="Rabbit-Geek Workbook" href="http://www.e-techgarage.com/2009/RabbitGeek_AJAX/RG_AJAX.html"><strong>Rabbit-Geek Workbook for the Web, RabbitWeb, JavaScript, and AJAX</strong></a></p>
<p style="text-align: left;">The rest of the article will be a big picture explanation of how this works.</p>
<h2>Easy Wi-Fi</h2>
<p>You can configure all the Wi-Fi network settings in the compiler or the code.  In this case, I have configured everything in the compiler like this:</p>
<p><a href="http://www.e-techgarage.com/Puck/wp-content/uploads/2010/01/Wi-Fi_Settings.JPG"><img title="Wi-Fi_Settings" src="http://www.e-techgarage.com/Puck/wp-content/uploads/2010/01/Wi-Fi_Settings.JPG" alt="Wi-Fi_Settings" width="552" height="547" /></a></p>
<p>This configuration looks harder than it actually is.   In the TCP_CONFIG.LIB file that comes with the compiler you will find a series of Wi-FI templates for each type of encryption.  I just copied the configuration from the file into this compiler window and then tweaked it for my specific network.</p>
<p>(For the hackers out there, I have foiled your attempts by obscuring my Wi-Fi network password with the <strong><span style="color: #ff0000;">Red Rectangle of Redaction</span></strong>. <img src='http://www.e-techgarage.com/Puck/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  )</p>
<p style="text-align: center;"><strong>Time to Configure Wi-Fi = </strong><strong>5 minutes or less</strong></p>
<h2>The Web Server</h2>
<p>Assuming for a moment that we have the web page and XML file ready, let&#8217;s look at how the Rabbit devices implement a web server.  Fortunately, by adding less than 40 lines of code to our program I can add an interactive web server with AJAX.</p>
<p><strong>Here is the C code:</strong></p>
<p><a href="http://www.e-techgarage.com/Puck/wp-content/uploads/2010/01/Web_Server_Basic1.JPG"><img class="alignnone size-full wp-image-574" title="Web_Server_Basic" src="http://www.e-techgarage.com/Puck/wp-content/uploads/2010/01/Web_Server_Basic1.JPG" alt="Web_Server_Basic" width="546" height="686" /></a></p>
<p>As you can see it isn&#8217;t too scary looking.  After the web server is initialized you just spin in the loop on the http_handler function which is non-blocking and typically returns in about 1 millisecond or less.</p>
<p style="text-align: center;"><strong>Time Creating a C File =</strong><strong> Approximately 20 minutes<br />
</strong></p>
<h2>The Amazing Mutating XML File</h2>
<p>The XML file is the easiest piece and while my XML might offend a real web developer, I&#8217;m an embedded engineer and it works.</p>
<p><strong>Here is the XML file before it is served:</strong></p>
<p><a href="http://www.e-techgarage.com/Puck/wp-content/uploads/2010/01/ROVER_XML.JPG"><img class="alignnone size-full wp-image-579" title="ROVER_XML" src="http://www.e-techgarage.com/Puck/wp-content/uploads/2010/01/ROVER_XML.JPG" alt="ROVER_XML" width="502" height="81" /></a></p>
<p>The only weird looking part of the XML file is the strange &#8220;<span style="color: #339966;"><strong>&lt;z? echo ($Rover_Data) </strong></span><strong><span style="color: #339966;">?&gt;</span></strong>&#8220;.  When the web server receives a request for the XML file it will strip this RabbitWeb code out and replace it with the value of the <strong>Rover_Data</strong> string variable from my embedded controller.</p>
<p>For example, if the Rover_Data variable held the string &#8220;<strong>Scooby Doo</strong>&#8221; the final served XML file would be updated.</p>
<p><strong>Here is the served XML file when Rover_Data = &#8220;Scooby Doo&#8221;</strong>:</p>
<p><a href="http://www.e-techgarage.com/Puck/wp-content/uploads/2010/01/ROVER_XML_W_DATA.JPG"><img class="alignnone size-full wp-image-583" title="ROVER_XML_W_DATA" src="http://www.e-techgarage.com/Puck/wp-content/uploads/2010/01/ROVER_XML_W_DATA.JPG" alt="ROVER_XML_W_DATA" width="375" height="77" /></a></p>
<p>If the web server gets a new request from the file and the Rover_Data string variable has changed, the XML file will also be updated before it is served to the browser.  That&#8217;s easy dynamic data for your web page.</p>
<p style="text-align: center;"><strong>Time Creating an XML File = Less than 5 minutes<br />
</strong></p>
<h2>The HTML page with special AJAX kung-fu</h2>
<p>The web page may be a bit intimidating but all it really does is:</p>
<p style="padding-left: 30px;">1. Use the JavaScript to figure out which browser you are using</p>
<p style="padding-left: 30px;">2. If your browser supports it, get a copy of the XML file from the server and use it to get the data</p>
<p style="padding-left: 30px;">3. Put that data on the web page every 500 milliseconds.</p>
<p><strong>Here is the HTML file:</strong></p>
<div id="attachment_590" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.e-techgarage.com/Puck/wp-content/uploads/2010/01/rover_hmtl.JPG"><img class="size-medium wp-image-590 " style="border: 1px solid black;" title="rover_hmtl" src="http://www.e-techgarage.com/Puck/wp-content/uploads/2010/01/rover_hmtl-300x200.jpg" alt="rover_hmtl" width="300" height="200" /></a><p class="wp-caption-text">Click to read the code</p></div>
<p>I just copied this from some of my <a href="http://www.e-techgarage.com/2009/RabbitGeek_AJAX/RG_AJAX.html">Workbook</a> samples.</p>
<p style="text-align: center;"><strong>Time Editing the HTML File =</strong><strong> About 5 minutes</strong></p>
<h2>How Long Did That Take?</h2>
<p style="text-align: center;"><strong>Total Time to Add the Web Server = Less than an hour</strong></p>
<p>(It took me longer to write this blog post.  <img src='http://www.e-techgarage.com/Puck/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style="text-align: center;">
]]></content:encoded>
			<wfw:commentRss>http://www.e-techgarage.com/Puck/2010/01/13/rover-scholar-explorer-poet-and-web-server/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Soccer Robots</title>
		<link>http://www.e-techgarage.com/Puck/2009/12/04/soccer-robots/</link>
		<comments>http://www.e-techgarage.com/Puck/2009/12/04/soccer-robots/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 23:37:52 +0000</pubDate>
		<dc:creator>Puck</dc:creator>
				<category><![CDATA[C Programming]]></category>
		<category><![CDATA[Rover]]></category>
		<category><![CDATA[Wireless]]></category>

		<guid isPermaLink="false">http://www.e-techgarage.com/Puck/?p=173</guid>
		<description><![CDATA[I&#8217;ve been a fan of robots for some time now and I have a bit of experience with this from college.  Back in the day I was the team leader for Oklahoma State University&#8217;s first MiroSot Robot Soccer team.
A camera was mounted over the soccer board shown above and the robots were wirelessly controlled by [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been a fan of robots for some time now and I have a bit of experience with this from college.  Back in the day I was the team leader for Oklahoma State University&#8217;s first <a title="MiroSot" href="http://www.fira.net/soccer/mirosot/overview.html">MiroSot Robot Soccer</a> team.</p>
<div id="attachment_255" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.e-techgarage.com/Puck/wp-content/uploads/2009/12/soccerro.jpg"><img class="size-medium wp-image-255" title="puck_and_robot" src="http://www.e-techgarage.com/Puck/wp-content/uploads/2009/12/soccerro-300x204.jpg" alt="Puck and the Soccer Robot" width="300" height="204" /></a><p class="wp-caption-text">Puck and the Soccer Robot in 1999</p></div>
<p>A camera was mounted over the soccer board shown above and the robots were wirelessly controlled by a PC.  One of the fun things possible with robots is using a simple algorithm to create complicated behavior.</p>
<p>To understand the algorithms we used, it would be useful to understand what we had to work with:</p>
<ul>
<li>The orange soccer ball would be detected by the camera and we would get X,Y coordinates</li>
<li>The Soccer Robot would have an X,Y coordinate and a heading telling us which way it was pointing</li>
</ul>
<p style="text-align: center;"><a href="http://www.e-techgarage.com/Puck/wp-content/uploads/2009/12/Soccer_field_w_objects1.bmp"><img class="aligncenter size-full wp-image-258" style="border: 1px solid black;" title="Soccer_field_w_objects" src="http://www.e-techgarage.com/Puck/wp-content/uploads/2009/12/Soccer_field_w_objects1.bmp" alt="The Robot and the Ball" width="472" height="316" /></a></p>
<h2>Algorithm 1 &#8211; Mad Ball!</h2>
<p>The first algorithm I wrote was very basic.</p>
<ol>
<li>Find the position of the ball and the Robot</li>
<li>If the Robot isn&#8217;t facing the ball, turn the robot towards the ball</li>
<li>Move towards the ball at maximum speed</li>
</ol>
<p style="text-align: center;"><a href="http://www.e-techgarage.com/Puck/wp-content/uploads/2009/12/Soccer_field_w_MadBall.bmp"><img class="aligncenter size-full wp-image-262" style="border: 1px solid black;" title="Soccer_field_w_MadBall" src="http://www.e-techgarage.com/Puck/wp-content/uploads/2009/12/Soccer_field_w_MadBall.bmp" alt="Algorithm 1 - Just give me the ball!!" width="472" height="316" /></a></p>
<p>There wasn&#8217;t any consideration of goals or strategy here.  It was just a wild assault on the ball by every robot in sight and it looked a lot like little league soccer with a horde of kids in the center of the field trying to outkick each other.</p>
<p>As simple as this algorithm was, it worked pretty well for making goals.  Granted, sometimes we scored <em><strong>against</strong></em> ourselves, but nobody is perfect.</p>
<h2>Algorithm 2 &#8211; Goal Fever!</h2>
<p>The second algorithm I wrote was an minor adjustment of the first algorithm.</p>
<ol>
<li>Find the position of the ball and the Robot</li>
<li>Plot an imaginary kicking line from the center of the enemy goal through the ball</li>
<li>Determine if the Robot is on the line with the ball between us an the enemy goal</li>
<li>If he isn&#8217;t on the line, travel to it by the shortest route possible</li>
<li>If he is on the line, turn and strike the ball into the enemy goal</li>
</ol>
<p style="text-align: left;"><a href="http://www.e-techgarage.com/Puck/wp-content/uploads/2009/12/Soccer_field_w_goal_fever.bmp"><img class="aligncenter size-full wp-image-265" style="border: 1px solid black;" title="Soccer_field_w_goal_fever" src="http://www.e-techgarage.com/Puck/wp-content/uploads/2009/12/Soccer_field_w_goal_fever.bmp" alt="Algorithm 2 - Goal Fever" width="472" height="316" /></a></p>
<p style="text-align: left;">This algorithm was good enough that when we played one-on-one against a robot controlled remotely by a human, we consistently beat them.</p>
<h2 style="text-align: left;">What else?</h2>
<h3>Maybe a Goalie?</h3>
<p>If you have the Y coordinate of the ball, it wouldn&#8217;t be hard to make a goalie robot that didn&#8217;t do anything but try to match the Y position of the ball by moving back and forth in a line.  Executed fast enough, the robot should be able to intercept the ball.</p>
<h3>More Sophisticated Robots and Algorithms</h3>
<p>We got a working system, but other colleges with experienced legacy teams have gotten into <a href="http://www.fira.net/soccer/narosot/overview.html">team play with passing and defenders</a>.  You will find some pretty intense videos on <a href="http://www.youtube.com">YouTube</a> showing the traditional 2-wheeled robots as well as <a href="http://www.fira.net/soccer/hurosot/overview.html">humanoid walkers</a> and robots that are at least <a href="http://www.fira.net/soccer/robosot/overview.html">partially autonomous with their own vision systems</a>.</p>
<h2>NaroSot Robot Soccer Teams in Action</h2>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/s5y-0SPdnVQ&amp;hl=en_US&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/s5y-0SPdnVQ&amp;hl=en_US&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>The point of this discussion is that with very little code you can produce sophisticated behavioral results.   If your robot&#8217;s CPU is fast enough a simple rule or two may be sufficient to produce pretty good behavior.  At the very least you can trash the other lab geeks in a friendly game of soccer.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.e-techgarage.com/Puck/2009/12/04/soccer-robots/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
