<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>NovoKane</title>
	
	<link>http://www.thekanes.org</link>
	<description>Making, creating, tinkering, living.</description>
	<lastBuildDate>Mon, 23 Apr 2012 21:01:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Novokane" /><feedburner:info uri="novokane" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>Novokane</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Robot competition day</title>
		<link>http://feedproxy.google.com/~r/Novokane/~3/76rbZOHHFbQ/</link>
		<comments>http://www.thekanes.org/2012/04/23/robot-competition-day/#comments</comments>
		<pubDate>Mon, 23 Apr 2012 21:01:50 +0000</pubDate>
		<dc:creator>Erica</dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Making]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[fire fighting robot]]></category>
		<category><![CDATA[kids]]></category>
		<category><![CDATA[robotics]]></category>

		<guid isPermaLink="false">http://www.thekanes.org/?p=707</guid>
		<description><![CDATA[After two months of work, the big day was finally here. Friday night we drove up to Philadelphia with lots of tools and the robot nestled in a box at my feet. The kids were very excited and we all brought matching robot t-shirts to wear. Saturday morning we showed up bright and early for [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_708" class="wp-caption alignleft" style="width: 234px"><a href="http://www.thekanes.org/wordpress/wp-content/uploads/2012/04/2012-04-21_15-23-52_242.jpg"><img class="size-medium wp-image-708" title="Two little champions" src="http://www.thekanes.org/wordpress/wp-content/uploads/2012/04/2012-04-21_15-23-52_242-224x300.jpg" alt="Two little champions" width="224" height="300" /></a><p class="wp-caption-text">Laurel and Holly holding their first-place trophies for the robot competition.</p></div>
<p>After two months of work, the big day was finally here. Friday night we drove up to Philadelphia with lots of tools and the robot nestled in a box at my feet. The kids were very excited and we all brought matching robot t-shirts to wear. Saturday morning we showed up bright and early for the <a href="http://www.ecsel.psu.edu/users/avanzato/robots/contests/firefighting/index.htm">Abington firefighting robot competition</a>. I was not sure what to expect and wanting to be absolutely certain of getting a spot with power and a place to test the robot. As it turned out, the organizers had some very nice lab classrooms for us and I didn&#8217;t need my power strip and long extension cord. I tested all the sensors on the robot and everything seemed in order.</p>
<p>According to the website there were 54 robots registered for the competition. There were a large number of Vex robots and even more Lego NXT robots. Only a handful of robots were non-kit ones like mine. Most of the Vex robots were part of a local club. I had some very good conversations with the guys who run the club. They were very interested in my bot because of its use of expanded rigid PVC and the Arduino platform, a switch that they are considering. It turns out that Vex robots are extremely expensive. They showed me one of their entries, which had a fairly large metal frame and large wheels, along with a number of plug in sensors, I am guessing about 5 in total. They told me the cost of the bot was $850! In contrast I had encoders, far more sensors, and wireless communication, at a parts cost under $150, and &#8212; had I had the time &#8212; the ability to add more things like line sensors for less than a dollar. Now it is certainly true that I spent more than $850 on this project as part of equipping my workshop with loads of parts &#8220;for the next project&#8221;, the power saw, and replacing Parts That Burned Out as I learned how to use my power supply correctly. (The list of fallen includes a motor, two encoders, a switching voltage regulator, and an XBee with breakout board.) Still, that is quite a price difference.</p>
<p>When I made it over to the practice arena, there were some bad surprises in store. Most of the maze floor was hardwood; well and good, as that is what I had at home. They also had carpet. I knew this was coming, but had expected relatively thin carpet. Not true. This was thick, and worse, it was uneven in height with patterns. On my first practice run, the robot stopped dead. Since I was not running at top speed, I changed the code to boost the speed greatly (knowing that I might pay a price in accuracy in the hardwood portion of the maze). </p>
<p>I knew that narrow wheels on that carpet was not going to work well. They would get stuck in the grooves. As luck would have it, that rug was on the path to the single room I had chosen. And so, while I had wanted to avoid any last-minute code changes, I decided to go for another room instead, where there was no carpet. The first thing that happened after that was the robot started running backwards continuously, saying that it was stalled. Turns out I had overwritten an array, which had nothing to do with the stall code, but this was another example of the sensitivity of the system to any coding error. Fixed that, but lost more time.</p>
<p>Another weird thing, when I would start my practice runs, the robot would instantly swerve left into the wall. Since this was practice, I could simply hit the reset button and then it ran fine. This happened on both practice runs. Not a good feeling.</p>
<p>The competition started with the high school students. Another surprise, as I saw with a sinking heart that there were now <strong>two</strong> carpets, and no way to avoid them. We watched as 11 robots in a row failed to put out the candle. Robot 12 succeeded&#8230;then there was another string of failures. That robot was the only one in the division to make it, and later in the day it was not able to do it again in the second round.</p>
<p>It was surprising how many robots made it into the room but were unable to put out the candle. Some of them were thrown off by candle reflections on the white walls &#8212; I had uncovered this potential problem in testing at home. The biggest problem, though, is that so many of them avoided using a powerful fan. You get a 25% time reduction factor for using non-air methods. So there were lots of balloons and a few sponges. Only problem is, if you aren&#8217;t exactly in the right position, those methods don&#8217;t work well. Some folks used fans, but wimpy ones; I am guessing those are the ones that worked most easily with the kits. By contrast, I had a fan designed for providing thrust on airplanes and a dedicated servo to sweep it rapidly back and forth. It was loud as hell but if I got <em>anywhere</em> near the candle, it was going out.</p>
<p>The interesting thing is that there was a much easier way to get a time reduction &#8212; 20% &#8212; by having your robot start with tone activation instead of a button press. This was a no-brainer for score improvement, and I had bought all the parts (a few dollars) but didn&#8217;t have time to build it. Yet almost none of the contestants used it. I realized that this is probably because the kits don&#8217;t offer a plug-in version of a tone detector.</p>
<p>Next was the junior division. They did not have the carpets to deal with, and so, there were a decent number of successes. About halfway through this, I found out that Laurel and Holly&#8217;s division had been moved up so that they were now going to be next, not the original schedule. I ran back to reprogram the robot for remote control, plug in the laptop XBee and haul everything back. All in all, quite a bit of running around.</p>
<p>It was worth it though, because the kids did a great job of driving the robot and putting out the candle, even though we&#8217;d had zero time to practice. Here is the <a href="http://youtu.be/-hawTMCjTBA">video</a>:</p>
<p><iframe width="560" height="315" src="http://www.youtube.com/embed/-hawTMCjTBA?rel=0" frameborder="0" allowfullscreen></iframe></p>
<p>Then first run for the senior division. Once again, I put my robot in and wham &#8212; straight into the left wall. I later figured out that this was a software bug introduced the morning before, when I hastily added the required button switch. That put a delay in the code, and I put it in the wrong place, so the sensors were calibrating while outside the maze.</p>
<p>At the time, though, I had no idea of what was going on. So with dark thoughts about my motors I quickly put in a edit that if the robot hit a wall, it would back up <em>and</em> then turn right.</p>
<p>Surprisingly enough, this worked decently for the second run and the robot at least made it down the hallway heading straight. But, then it hit the dreaded carpet, and a wheel got stuck in the grooves. And that was that!</p>
<p>Only one robot in the senior division successfully completed two runs (I think). A man named Paul B. had brought a beautiful pair of robots in for a swarm demonstration. Two robots working in coordination searched each room for the candle and put it out, choreographing their moves, and returning home to nestle back together at the start. Needless to say they were also well capable of putting out the candle acting alone. They moved wonderfully smoothly, with no carpet issues.</p>
<p>After the show I talked with Paul a bit. The first thing I asked about were the motors, and these were indeed high-grade medical motors that cost over $100 each new. (Mine were $8!) Like me he had encoders, and interestingly enough they were about the same counts per revolution. Since his were integrated into the motors, it was much cleaner. I had 10 wires going into my breadboard from my encoders, and while they never got loose, it was ugly. His robots didn&#8217;t seem to have any wires anywhere, though there must have been some. Lovely PCB boards with surface mount components made for a spare, elegant design.</p>
<p>Although I would have liked to do better, we had a great time at the event. The kids got two very nice trophies, and I met a lot of cool people, too many to mention here. The organizers were friendly, not to mention that we got free food, and the entire event was free! I&#8217;m very glad I came here instead of Trinity.</p>
<p>Goals for next year:</p>
<ul>
<li>Have more time to get everything done and tested!</li>
<li>Use different wheels. Those were my biggest limitation. Small, wider, and better traction.</li>
<li>The wheels were part of the motor/encoder package. Since I was not at all thrilled with the motors, I will upgrade to a higher-quality pair with integrated encoders.</li>
<li>Even with good motors, relying on a robot to go straight is never robust design. I will spend much more time building in recovery behavior. With all the sensors I have it is possible to choose a reasonable course of action. Most robots in the show hit a wall at some point and then they were doomed.</li>
<li>My battery was a little big and heavy. Might change it. On the other hand I have to say it performed well.</li>
<li>Designing PCB boards would be fun, though of course this assumes you have a fixed plan for that component!</li>
</ul>
<p>I&#8217;m happy to say I&#8217;ve crossed off a big item on the list already, namely moving to a real development environment for the Arduino instead of the toy one that comes with it. Turns out Visual Studio has an <a href="http://visualmicro.codeplex.com/">Arduino plug-in</a> that works great and is effortless to install.</p>
<p>And now, time to catch up on real life.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Novokane?a=76rbZOHHFbQ:mdV3Kyd1ZnE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Novokane?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=76rbZOHHFbQ:mdV3Kyd1ZnE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Novokane?i=76rbZOHHFbQ:mdV3Kyd1ZnE:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=76rbZOHHFbQ:mdV3Kyd1ZnE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Novokane?i=76rbZOHHFbQ:mdV3Kyd1ZnE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=76rbZOHHFbQ:mdV3Kyd1ZnE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Novokane?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Novokane/~4/76rbZOHHFbQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.thekanes.org/2012/04/23/robot-competition-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.thekanes.org/2012/04/23/robot-competition-day/</feedburner:origLink></item>
		<item>
		<title>Finishing the firefighting robot</title>
		<link>http://feedproxy.google.com/~r/Novokane/~3/9uvaIMpB5Fc/</link>
		<comments>http://www.thekanes.org/2012/04/20/finishing-the-firefighting-robot/#comments</comments>
		<pubDate>Sat, 21 Apr 2012 02:34:47 +0000</pubDate>
		<dc:creator>Erica</dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Making]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[fire fighting robot]]></category>
		<category><![CDATA[robotics]]></category>
		<category><![CDATA[ros]]></category>

		<guid isPermaLink="false">http://www.thekanes.org/?p=699</guid>
		<description><![CDATA[As I write, we are on our way to the Abington Firefighting Competition. Up until last night, I was not certain that we would make it. In the previous post I mentioned various gremlins with the motor control system. Running at a lower voltage more or less made them go away. It worked so well [...]]]></description>
			<content:encoded><![CDATA[<p>As I write, we are on our way to the <a href="http://www.ecsel.psu.edu/users/avanzato/robots/contests/firefighting/index.htm">Abington Firefighting Competition</a>. Up until last night, I was not certain that we would make it. In the previous post I mentioned various gremlins with the motor control system. Running at a lower voltage more or less made them go away. It worked so well that I could no longer use current surges for stall detection, because they weren&#8217;t large enough. I did add the heatsink too when it arrived. Nevertheless, there were enough little problems that it was hard to get an unbroken block of time to debug. And I had many new features to add, including the fire extinguisher.</p>
<p>I am very proud of my fire sensor. It is based on the <a href="http://rockhopperrobot.blogspot.com/2008/03/rockhopper-v15.html">Rockhopper design</a>, but since there were no schematics I had to figure a few things out. I found that using four photodiodes instead of one did increase sensitivity, and gave a sharper angular peak &#8212; very desirable if oriented properly. As usual, there was some trial and error. I discovered that the photodiode responds to the frequencies emitted at the base of the candle flame. Thus the tea candles that I originally tested with were a disaster, because when they burned for a little while the interior hollowed out and covered that part of the flame. The diodes are also sensitive to candle height, so I spread them out to cover the maximum allowable range in the competition, 2 inches.</p>
<div id="attachment_700" class="wp-caption aligncenter" style="width: 234px"><a href="http://www.thekanes.org/wordpress/wp-content/uploads/2012/04/2012-04-20_21-31-28_246.jpg"><img src="http://www.thekanes.org/wordpress/wp-content/uploads/2012/04/2012-04-20_21-31-28_246-224x300.jpg" alt="" title="Robotic fire sensor" width="224" height="300" class="size-medium wp-image-700" /></a><p class="wp-caption-text">Robotic fire sensor</p></div>
<p>Figuring out how to mount everything on increasingly limited space was a challenge as well. Ultimately the flame sensor went on a butter container, with the fan mounted on the side. All of these were then attached to a servo, which sits in a rectangular opening cut nicely by my new power saw. Again, all very time consuming.</p>
<p>So by yesterday I realized that I would not have time to get the navigation reliable for the entire maze. And therefore, I have lowered my sights a bit. Abington offers a &#8220;single room mode&#8221;, where you can pick ahead of time the place you would like the candle to be. As long as your robot can make it to that one room, then, you are in good shape. There is a 3-minute penalty added to your time, which means that you are not going to win unless everyone else crashes (or chooses the same option). I was disappointed to have to do this, but I suspect I&#8217;m not the only one. Looking on YouTube, there are a suspiciously high number of videos with robots finding the candle in the first room they look at, and it&#8217;s the easiest room to get to.</p>
<p>I have had a number of surprises working on this project. Everything felt very rushed, as I had only two months to work and no experience. I had to make design compromises. These included using an Arduino Mega, motor shield, and breadboards, as opposed to wiring everything individually. One surprise was how well this worked. I thought there would be issues with wires popping out of the breadboard or falling out of the Arduino headers. As it turned out, they worked extremely well. I cut the wires precisely and used the proper housings and&#8230;it just worked. What did <strong>not</strong> work well were the screw terminals. I had many problems with the battery leads coming out and the same with the motor leads. Since screw terminals are supposed to be more reliable, this was an unpleasant discovery.</p>
<p>The Arduino works with C or C++. After years of working with Java and its automatic memory management, I knew going back to C++ would be painful. It was worse than expected. If you write a buggy program on a computer, you usually get a nice error message. On a microcontroller, your only clue may be when things suddenly to act weird. And in the worst case, you can completely lose the ability to communicate with the board and get rid of the faulty code. At one point I thought a coding error had bricked an expensive board. Finally I found a suggestion of sticking a large capacitor between the ground and reset pins to prevent automatic resets, and that eventually worked. Quite a scare though. Flawed code is quite easy to write, with no warnings about dereferenced pointers or default values. I learned to put in a few seconds delay at the beginning of the program to allow some time for communication before any errors surfaced. That was not 100% foolproof, though, as some global objects get constructed first. So I had to make the constructors dead simple and call separate setup functions on the objects later. Even then, sometimes, problems.</p>
<p>I did get to appreciate how much work the Arduino folks did to make a microcontroller usable by &#8220;normal&#8221; people. They are hard to work with. The trade-off is that you lose power; for example, the board runs at a much slower clock speed than needed, because to change that would mean rewriting older code. And the Arduino IDE is hardly suitable for a large code base (which I eventually had), with no line numbers and certainly no way to find function usages, etc. There was no time to configure another IDE this round, but next time, that will happen.</p>
<p>This was one of the hardest things I have ever done. The intellectual challenges were constant, with no time to delay or rest. It was harder than my big challenge last year, Mountains of Misery; as hard as it was, that was only ten hours with the last one being truly hard. This required intense drive for weeks, and there were many times I was tempted to throw in the towel.</p>
<p>This morning I tuned the candle-finding algorithm, put in the required red button start switch, and added two joystick functions the kids will need for their remote control portion: turning the fan on/off and swiveling the servo. The Robot Operating System has done very well for the remote control part, it was fun to work with.</p>
<p>Here is a <a href="http://youtu.be/1CX9OKlmgbc">video of FireCheetah navigating the maze and putting out a candle</a>. I got it working even better by the afternoon, but this should give a good idea. Let&#8217;s hope he does as well tomorrow!</p>
<p><iframe width="420" height="315" src="http://www.youtube.com/embed/1CX9OKlmgbc?rel=0" frameborder="0" allowfullscreen></iframe></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Novokane?a=9uvaIMpB5Fc:GScCnFBgWCM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Novokane?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=9uvaIMpB5Fc:GScCnFBgWCM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Novokane?i=9uvaIMpB5Fc:GScCnFBgWCM:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=9uvaIMpB5Fc:GScCnFBgWCM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Novokane?i=9uvaIMpB5Fc:GScCnFBgWCM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=9uvaIMpB5Fc:GScCnFBgWCM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Novokane?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Novokane/~4/9uvaIMpB5Fc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.thekanes.org/2012/04/20/finishing-the-firefighting-robot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.thekanes.org/2012/04/20/finishing-the-firefighting-robot/</feedburner:origLink></item>
		<item>
		<title>FireCheetah navigates on his own</title>
		<link>http://feedproxy.google.com/~r/Novokane/~3/Ls0MzLiIREU/</link>
		<comments>http://www.thekanes.org/2012/04/15/firecheetah-navigates-on-his-own/#comments</comments>
		<pubDate>Mon, 16 Apr 2012 02:50:53 +0000</pubDate>
		<dc:creator>Erica</dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Making]]></category>
		<category><![CDATA[fire fighting robot]]></category>
		<category><![CDATA[robotics]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://www.thekanes.org/?p=690</guid>
		<description><![CDATA[With less than a week to go before the robot competition, I have been working very hard. Most of the previous week was spent on navigation. With this particular maze design, there is a section where the robot is forced to move and do some turns without having a wall to guide it. I wanted [...]]]></description>
			<content:encoded><![CDATA[<p>With less than a week to go before the robot competition, I have been working very hard. Most of the previous week was spent on navigation. With this particular maze design, there is a section where the robot is forced to move and do some turns without having a wall to guide it. I wanted to master this, knowing that it would be the hardest part. After a great deal of work (and stress) I figured out how to get the robot to go through <em>reliably</em>. Here is a video of the robot in action:</p>
<p><iframe width="420" height="315" src="http://www.youtube.com/embed/Z5FgTBw59wI?rel=0" frameborder="0" allowfullscreen></iframe></p>
<p>Along the way, I ran into two problems that nearly drove me crazy and cost a week of time:</p>
<ol>
<li>The robot would drive straight at times, but other times not. And when it wasn&#8217;t going mostly straight, navigation failed.</li>
<li>Even when the robot went straight, it overshot the target distance. Now after some experimentation, I was able to compensate for this with various fudge factors in the software. However, these factors change on different surfaces and the Abington maze has a variety of them.</li>
</ol>
<p>The first problem was by far the worst, as it was very frustrating to see a well-behaved machine suddenly turn into something that could not move an inch without listing severely to one side. Not always the same side! One step I took to help was to add more sensors, the two side sonar on the left. These helped with initial wall alignment and reduced the element of chance. Still, when the robot was in bad shape, nothing could help.</p>
<p>Eventually I figured out that the robot generally started its day working well, then degraded at a certain point. The first thing I looked at was the battery. But that wasn&#8217;t it. I found that leaving the robot alone for a few hours would allow it to recover, even without charging the battery. (The <a href="http://www.all-battery.com/111volt-5800mahli-polypack31273.aspx">LiPo battery</a> I&#8217;m using is a champion, and well worth the money. It never seems to hiccup or run out of juice. A world of difference from standard alkaline.)</p>
<p>Then I thought about what could be stressing the robot. It is well known that when the motors stall &#8212; under power but unable to move, probably because your robot hit a wall &#8212; the current surges. In theory, my motor controller was rated for a much higher current than the stall current for my motors. But these events can generate a lot of power = a lot of heat = potential thermal shutdown by the L298 chip on the motor controller board. So I took the robot when it was fresh and running straight, then deliberately stalled the motors. Sure enough, that killed any straight motion for several hours.</p>
<p>I added checks in the software to detect a stall and to cut power to the motors if one is detected. It&#8217;s probably a good idea to have the robot back off and/or reposition itself too. Simply protecting the motors gave a big improvement. I&#8217;ve also concluded that there is no need for me to run the bot at 12V. I have far more torque than I need and have only been doing 70% of top speed. If I lower the voltage to 9V, the power drain caused by a stall is only 60% of what it is at 12V. I will have to experiment and see if lowering the voltage causes any problems. Finally, I&#8217;ve ordered a <a href="http://search.digikey.com/scripts/DkSearch/dksus.dll?x=10&#038;y=22&#038;lang=en&#038;site=us&#038;KeyWords=294-1150-ND">heatsink</a> to prevent the chip from overheating. Many experienced roboticists recommend using one, if nothing else it extends the life of your chip. It was a bit of a challenge to find a heat sink for a surface mount component.</p>
<p>Next, the travel overshoot. On my hardwood floor I could predict it fairly well, but that wasn&#8217;t good enough for general use. It finally occurred to me, there should be a way to actively brake the motors. Up to this point I was simply applying voltage to the motors, and at a higher duty cycle they moved faster. To stop, I sent no voltage. But the shaft could continue to spin for a while. After doing some research, I discovered that the L298 has a built-in brake that activates by setting both direction pins HIGH.</p>
<p>Wonderful news, but my <a href="http://www.sparkfun.com/products/9815">lousy motor controller</a> did not allow direct access to those pins. I had already noted that it also grounded the current sense pins which are an easy way to detect a stall. I had purchased it for its economical use of Arduino pins&#8230;bad idea. Time to replace it with the <a href="http://arduino.cc/it/Main/ArduinoMotorShieldR3">Arduino Motor Shield</a>, conveniently available at local Radio Shacks (for once I did not have to pay exorbitant shipping to get a needed part quickly). The Arduino Motor Shields gives both current sensing and dynamic braking! And if you don&#8217;t need them, you can easily cut the jumpers and free up the pins. $10 more than the SparkFun product but a better design. It also uses the L298P, a more advanced version of the L298 chip that has better thermal resistance.</p>
<p>Navigation has consumed more time than I would have liked, but I have done some work on the fire detection as well. Most of that will be covered in another post. I did want to show off the new toy I bought to cut a hole for the detection servo:</p>
<div id="attachment_693" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.thekanes.org/wordpress/wp-content/uploads/2012/04/2012-04-15_22-29-44_305.jpg"><img src="http://www.thekanes.org/wordpress/wp-content/uploads/2012/04/2012-04-15_22-29-44_305-300x224.jpg" alt="Rockwell Table Saw" title="Rockwell Table Saw" width="300" height="224" class="size-medium wp-image-693" /></a><p class="wp-caption-text">Rockwell Table Saw</p></div>
<p>This <a href="http://www.amazon.com/gp/product/B004AHKUY0/ref=oh_o03_s01_i00_details">saw</a> can be used for straight and mitre cuts, and as a scroll saw. I purchased the attachment to cut circles as well. I&#8217;ve been wanting a saw for a very long time, but was intimidated at the thought of buying one. The ones I used in the woodworking club seemed far too big for a home. The Amazon reviews were very helpful; and sure enough, this one proved to be extremely easy to use. It opens up many possibilities for new projects.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Novokane?a=Ls0MzLiIREU:7cLC3yooBV8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Novokane?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=Ls0MzLiIREU:7cLC3yooBV8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Novokane?i=Ls0MzLiIREU:7cLC3yooBV8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=Ls0MzLiIREU:7cLC3yooBV8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Novokane?i=Ls0MzLiIREU:7cLC3yooBV8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=Ls0MzLiIREU:7cLC3yooBV8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Novokane?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Novokane/~4/Ls0MzLiIREU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.thekanes.org/2012/04/15/firecheetah-navigates-on-his-own/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.thekanes.org/2012/04/15/firecheetah-navigates-on-his-own/</feedburner:origLink></item>
		<item>
		<title>FireCheetah is running</title>
		<link>http://feedproxy.google.com/~r/Novokane/~3/jFGjPT5dvK0/</link>
		<comments>http://www.thekanes.org/2012/04/01/firecheetah-is-running/#comments</comments>
		<pubDate>Mon, 02 Apr 2012 01:37:07 +0000</pubDate>
		<dc:creator>Erica</dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Making]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[fire fighting robot]]></category>
		<category><![CDATA[robotics]]></category>
		<category><![CDATA[ros]]></category>

		<guid isPermaLink="false">http://www.thekanes.org/?p=684</guid>
		<description><![CDATA[Good news &#8212; FireCheetah&#8217;s remote control mode is working! Here is a video of the bot in action:

The robot is actually quite fast. I had to slow it down to 30% of full speed to control it reliably by hand. The weight is unevenly distributed right now as well, which adds to the challenge. I [...]]]></description>
			<content:encoded><![CDATA[<p>Good news &#8212; FireCheetah&#8217;s remote control mode is working! Here is a video of the bot in action:</p>
<p><iframe width="420" height="315" src="http://www.youtube.com/embed/kUcOFHEjTGQ?rel=0" frameborder="0" allowfullscreen></iframe></p>
<p>The robot is actually quite fast. I had to slow it down to 30% of full speed to control it reliably by hand. The weight is unevenly distributed right now as well, which adds to the challenge. I have heard that victory in robot combat is often determined by the skill of the driver, and I believe it. Driving well takes practice. Fortunately, this part of the event is not timed; the kids can take their time getting the robot to where it needs to be.</p>
<p>As planned, for remote control I am using ROS on a PC talking to the Arduino on the robot. The ROS portion was surprisingly easy. Where I did have difficulty were the limits of the microcontroller. One painful discovery is that should your program crash, you won&#8217;t know it has happened, and very weird things can happen. (However, you may see the reset button flash on the micro as it reboots.) A keep-alive signal of some kind is a good idea. I chased some long rabbit holes before realizing that a program crash was the issue. The crashing, in turn, was through attempting to do some pin manipulation in class constructors, before the microcontroller was ready. This cost me a few days, very expensive at this point.</p>
<p>I am changing the architecture for the autonomous mode. I won&#8217;t be using ROS. The bandwidth limitations became obvious even in remote-control mode, my sensor suite is limited, and the robot needs to move fast. More significantly, I did some research on <a href="http://forums.trossenrobotics.com/tutorials/build-articles-130/build-a-fire-fighting-robot-3288/">previous winners</a> of the Trinity firefighting competition. Wall following is a proven technique, and can be done in an elegant way.</p>
<p>There is a lot of work to be done in the next few weeks. I need to mount the sensors, and build the circuits for the fan and candle detection. </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Novokane?a=jFGjPT5dvK0:UCr9InSr11g:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Novokane?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=jFGjPT5dvK0:UCr9InSr11g:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Novokane?i=jFGjPT5dvK0:UCr9InSr11g:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=jFGjPT5dvK0:UCr9InSr11g:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Novokane?i=jFGjPT5dvK0:UCr9InSr11g:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=jFGjPT5dvK0:UCr9InSr11g:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Novokane?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Novokane/~4/jFGjPT5dvK0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.thekanes.org/2012/04/01/firecheetah-is-running/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.thekanes.org/2012/04/01/firecheetah-is-running/</feedburner:origLink></item>
		<item>
		<title>Firefighting robot update</title>
		<link>http://feedproxy.google.com/~r/Novokane/~3/sJDe9jEgKsc/</link>
		<comments>http://www.thekanes.org/2012/03/05/firefighting-robot-update/#comments</comments>
		<pubDate>Mon, 05 Mar 2012 10:10:49 +0000</pubDate>
		<dc:creator>Erica</dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Making]]></category>
		<category><![CDATA[fire fighting robot]]></category>
		<category><![CDATA[robotics]]></category>

		<guid isPermaLink="false">http://www.thekanes.org/?p=668</guid>
		<description><![CDATA[The firefighting robot competition is only a few weeks away, and I&#8217;ve been working steadily. Because of the time pressure, there hasn&#8217;t been much leisure to blog about it! I&#8217;ve accomplished the following tasks, and may write about them later. Partial list includes:

Set up wireless communication between the Arduino-controlled robot and a PC running the [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.cede.psu.edu/users/avanzato/robots/contests/firefighting/index.htm">firefighting robot competition</a> is only a few weeks away, and I&#8217;ve been working steadily. Because of the time pressure, there hasn&#8217;t been much leisure to blog about it! I&#8217;ve accomplished the following tasks, and may write about them later. Partial list includes:</p>
<ul>
<li>Set up wireless communication between the Arduino-controlled robot and a PC running the <a href="http://www.ros.org/">Robot Operating System</a> (ROS), using XBees and the <a href="http://www.ros.org/wiki/rosserial">rosserial</a> library.</li>
<li>Made a robot descriptor file, and learned how to publish the basic frame and joint transforms to visualize the robot in ROS&#8217;s <a href="http://www.ros.org/wiki/rviz">rviz</a>.</li>
<li>Created a foamboard maze for testing. I didn&#8217;t want a huge maze taking up floor space in my house, and the contest arena is 8&#8242; by 8&#8242;. To my surprise the web was useless on this, so I had to design it from scratch. My maze is light, portable, and easily taken apart or reconfigured.  These <a href="http://www.foamwerks.com/tools/accessories/">foam connectors</a> are the key; it took time to track them down.</li>
<li>Learned how to use wheel encoders, and debug them properly. Getting it right required using my cool <a href="http://www.seeedstudio.com/depot/micro-digital-storage-oscilloscopedso-nano-p-512.html">palm-sized oscilloscope</a>. Added debouncing code to improve accuracy.</li>
<li>Learned enough about the ROS navigation stack to send fake odometry messages and see the robot move in rviz.</li>
<li>Converted the contest arena schematic into an 3D obstacle map for ROS.</li>
<li>Wrote the basic differential motor controller for the Arduino to move the wheels, collect odometry information, and correct the velocity based on a <a href="http://en.wikipedia.org/wiki/PID_controller">PID</a> system. Much of this was built from scraps of code acquired various places online. It is not tested yet.</li>
<li>Got a Logitech F310 game controller, installed the <a href="http://ros.org/wiki/joystick_drivers">ROS joystick driver stack</a>, and  &#8220;drove&#8221; a simulated robot. This works via ROS velocity commands, identical to what the real robot will need. The joystick stack was not compatible with my version of ROS and it took some hair-pulling to fix. After managing it, I went in and added the details to the official ROS documentation so that others won&#8217;t suffer. The kids have enjoyed driving the fake robot around.</li>
<li>Figured out a nice system of <a href="http://www.pololu.com/catalog/product/1931">crimp connectors and matching housing</a> to wire the robot up.</li>
<li>Purchased and received the necessary parts for the robot construction, including chassis, wheels, motors, motor brackets, encoders, standoffs, and ultrasonic sensors.</li>
</ul>
<p>Upcoming tasks include figuring out the full navigation and localization stacks for ROS, which seems rather daunting at the moment. I also need to convert the ultrasonic sonar data into something that ROS can use, it is designed for laser scans or Kinects. With that, I will have a full framework for a robot capable of autonomous navigation.</p>
<p>The only major area not looked at yet in depth is the candle itself. Once in the proper room, we need to detect the candle and put it out. It <em>seems</em> that this will not be too hard, so I am leaving it for the end.</p>
<p>Looking at all this, I can see I will never write about all of it. But for those topics that are not well covered elsewhere online, I will give it a shot.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Novokane?a=sJDe9jEgKsc:HDdjGLUQRn8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Novokane?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=sJDe9jEgKsc:HDdjGLUQRn8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Novokane?i=sJDe9jEgKsc:HDdjGLUQRn8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=sJDe9jEgKsc:HDdjGLUQRn8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Novokane?i=sJDe9jEgKsc:HDdjGLUQRn8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=sJDe9jEgKsc:HDdjGLUQRn8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Novokane?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Novokane/~4/sJDe9jEgKsc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.thekanes.org/2012/03/05/firefighting-robot-update/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.thekanes.org/2012/03/05/firefighting-robot-update/</feedburner:origLink></item>
		<item>
		<title>How to configure an XBee on Linux, Mac, or any other operating system</title>
		<link>http://feedproxy.google.com/~r/Novokane/~3/v78zmDG1RZ8/</link>
		<comments>http://www.thekanes.org/2012/02/21/how-to-configure-an-xbee-on-linux-mac-or-any-other-operating-system/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 09:39:57 +0000</pubDate>
		<dc:creator>Erica</dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Making]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[robotics]]></category>

		<guid isPermaLink="false">http://www.thekanes.org/?p=661</guid>
		<description><![CDATA[Consider this post a corrective to all the over-complicated advice I&#8217;ve seen out there.
If you own an XBee, you likely already know that the official configuration tool, X-CTU, only runs on Windows. As result, if you need to configure an XBee on a different operating system, a Google search brings up repeated suggestions to install [...]]]></description>
			<content:encoded><![CDATA[<p>Consider this post a corrective to all the over-complicated advice I&#8217;ve seen out there.</p>
<p>If you own an XBee, you likely already know that the official configuration tool, X-CTU, only runs on Windows. As result, if you need to configure an XBee on a different operating system, a Google search brings up repeated suggestions to install a Windows emulator, install X-CTU, then manually update some drivers.</p>
<p>Now this is fine if you already have or want an emulator but really&#8230;there is no need for such a heavy-weight solution. You can fully configure your XBee via the serial port and a terminal program.</p>
<p>Windows comes with Hyperterminal pre-installed, but for Linux I downloaded the free <a href="http://alioth.debian.org/projects/minicom/">minicom</a> program. (Mac&#8230;you are on your own.) Before starting, you need to know the port the XBee is attached to and the communication settings, just as you would with X-CTU. For a factory-fresh XBee, the communication settings will be:</p>
<ul>
<li>baud rate: 960</li>
<li>data bits: 8</li>
<li>parity: None</li>
<li>stop bits: 1</li>
<li>hardware flow control: None</li>
</ul>
<p>To find the port the XBee is using, follow the directions for your operating system: for Linux <a href="http://linux.die.net/man/8/udevadm">udevadm</a>, or on Windows it is Device Manager.</p>
<p>For Linux minicom, I recommend the terminal options of turning on local echo and adding linefeeds.</p>
<p>Once your terminal program is up and running, open the connection to your XBee port. Type the string +++ quickly <em>without</em> pressing the Enter key. You should get back a reply of &#8220;OK&#8221; from the XBee. If it doesn&#8217;t work, wait 10 seconds and try again. If it fails repeatedly, you may be at the wrong communication settings. Usually it is a matter of mismatched baud rate. But if you&#8217;ve totally forgotten the XBee settings, you can use this simple method to do a <a href="http://www.youtube.com/watch?v=KPTMSI7SXqs">hardware XBee factory reset</a>.</p>
<p>After you&#8217;ve gotten the OK, type</p>
<p>AT</p>
<p>You should get another OK back. +++ and AT put the XBee into command mode. This is a temporary state! For the next few seconds any information sent to the serial port will be used to command the XBee, and the XBee will not forward it on to any listeners.</p>
<p>The most common change is that of baud rate. Type</p>
<p>ATBD</p>
<p>The XBee will reply back with 3, which equates to a baud rate of 9600. Let&#8217;s say that we want to increase this to 57600. We type in</p>
<p>ATBD 6</p>
<p>and get back OK. To write the change to the XBee&#8217;s memory, type</p>
<p>ATWR</p>
<p>At this point, the XBee will be communicating at 57600 baud, so you must change the communication settings in your terminal program in order to continue.</p>
<p>If you ever have to pause and figure out what you are doing, just type +++ again to put the XBee back into command mode.</p>
<p>Another common change is PAN ID. XBees ship with a default PAN ID and you will want to avoid crosstalk with other people&#8217;s networks. The command for this is ATID. As before, issuing a plain ATID tells you the current value (probably 1332) and sending a command like ATID 1414 will change the PAN ID to 1414.</p>
<p>There is a full list of XBee configuration commands in the <a href="ftp://ftp1.digi.com/support/documentation/90000976_F.pdf">XBee User&#8217;s Guide</a>, Chapter 10.</p>
<p>In writing this post I learned about the <a href="http://www.moltosenso.com/client/fe/browser.php?pc=/client/fe/download.php">moltosenso IRON</a>, a free cross-platform alternative to X-CTU. I have not tried it, but it might be useful for those who need to do more complicated configurations.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Novokane?a=v78zmDG1RZ8:Udn2FBY42no:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Novokane?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=v78zmDG1RZ8:Udn2FBY42no:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Novokane?i=v78zmDG1RZ8:Udn2FBY42no:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=v78zmDG1RZ8:Udn2FBY42no:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Novokane?i=v78zmDG1RZ8:Udn2FBY42no:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=v78zmDG1RZ8:Udn2FBY42no:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Novokane?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Novokane/~4/v78zmDG1RZ8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.thekanes.org/2012/02/21/how-to-configure-an-xbee-on-linux-mac-or-any-other-operating-system/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.thekanes.org/2012/02/21/how-to-configure-an-xbee-on-linux-mac-or-any-other-operating-system/</feedburner:origLink></item>
		<item>
		<title>Building a fire-fighting robot</title>
		<link>http://feedproxy.google.com/~r/Novokane/~3/2i3SSOBanhg/</link>
		<comments>http://www.thekanes.org/2012/02/19/building-a-fire-fighting-robot/#comments</comments>
		<pubDate>Sun, 19 Feb 2012 22:56:55 +0000</pubDate>
		<dc:creator>Erica</dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Making]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[fire fighting robot]]></category>
		<category><![CDATA[hacdc]]></category>
		<category><![CDATA[robotics]]></category>
		<category><![CDATA[ros]]></category>

		<guid isPermaLink="false">http://www.thekanes.org/?p=655</guid>
		<description><![CDATA[I&#8217;ve been looking for a reason to build another robot. A few weeks ago I found a list of robot competitions around the world. Ignoring the battle bot options, geography and capability led to me to the Penn State Abington Fire-Fighting Robot Contest:
The objective of the fire-fighting robot contest is to design a computer-controlled robot [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been looking for a reason to build another robot. A few weeks ago I found a list of <a href="http://robots.net/rcfaq.html">robot competitions</a> around the world. Ignoring the battle bot options, geography and capability led to me to the <a href="http://www.ecsel.psu.edu/users/avanzato/robots/contests/firefighting/index.htm">Penn State Abington Fire-Fighting Robot Contest</a>:</p>
<blockquote><p>The objective of the fire-fighting robot contest is to design a computer-controlled robot to navigate a  maze (8 ft. by 8 ft.) that consists of 4 rooms. Rooms are surrounded by walls except for a 18&#8243; entrance.  A single candle is randomly placed in one of the 4 rooms. The goal is for the mobile robot to explore the maze, locate the candle, and extinguish the candle in the minimum time.  Robots must be within 12&#8243; of candle before extinguishing candle.  The layout and dimensions of the maze and rooms are fully known to all contestants prior to the contest.  For the advanced divisions, the hallways and room may be covered with carpeting, and there is a small staircase located within the maze.  Bonuses are earned for returning to the start position after extinguishing the candle, and allowing obstacles to be placed in the rooms.  Participants are permitted to use any combination of building materials and computer technology. All robots must operate autonomously except for the K-5th grade remote control division.</p></blockquote>
<p>This is not a simple task, but I was particularly excited to see the K-5th grade remote control division. This allows us to participate as a family; my kids can drive the robot to the candle and extinguish it, while my entry must be autonomous. Robots cannot be larger than 12.25&#8243; in any dimension.</p>
<p>At this point, I&#8217;ve figured out the basic design. I believe the most difficult task will be navigation, especially as the robot will have limited sensor capability. The robot may start from a known position in the maze, and I will take this option. I would like to use existing software; many brilliant people have worked on this problem. A few months ago I took a great course on the <a href="http://www.ros.org/">Robot Operating System</a> (ROS), taught at <a href="http://www.hacdc.org/">HacDC</a> by Andrew Harris.* ROS has the firepower to do the job, but there is a steep learning curve, it must run on a full PC, and I will have to use Ubuntu and Python, two environments I&#8217;m not familiar with. In doing the course assignments, figuring out Ubuntu and Python slowed me up more than anything else. However, I already have a working setup from the class, and with Google all things are possible. So my plan is as follows:</p>
<p>I will run ROS on my laptop. The robot will have an <a href="http://www.arduino.cc/">Arduino</a> microcontroller as its brain. The laptop and the robot will communicate wirelessly using a pair of <a href="http://www.digi.com/xbee/">XBees</a>. ROS has a package, <a href="http://www.ros.org/wiki/rosserial_arduino">rosserial_arduino</a>, which allows the Arduino to run little ROS nodes that can send sensor and odometry data over the serial port to the ROS nodes on the laptop. The laptop nodes will do the heavy computation and reply back with navigation directives. The XBees make the serial port communication wireless.</p>
<p>Although the ROS site has some good tutorials, setting up the XBees on Ubuntu to run the demo Arduino programs was not obvious. Their rosserial_xbee package is designed for a mesh rather than point to point, and the two modes are not compatible. And the XBee configuration tool is Windows only. I got it working &#8212; if I have time, I will write up a post on how to do all of this &#8212; and was quite impressed with the performance of the XBees. I walked outside my house for a few hundred feet and was still able to communicate with the XBee in the upstairs office. The big risk with this design is that if the wireless communication fails, the robot is dead in the water. My XBee series 1 802.15.4s have a range of 90m and operate at 2.4 GHz, so they should work well. I did of course change the default PAN ID to avoid interference from any other competitors with the same device.</p>
<p>One nice thing about the wireless design, the kids can use the same robot for their entry. I will just hook up a joystick to the PC and it will send commands via ROS. Even if my autonomous design fails, and I give it a 50% chance given the total novelty of all this, theirs should have a better chance.</p>
<p>I purchased 10 ultrasonic sensors (<a href="http://www.amazon.com/Ultrasonic-Module-HC-SR04-Distance-Arduino/dp/B004U8TOE6">HRC SR04</a>) from China for the price of 1 <a href="http://www.parallax.com/tabid/768/ProductID/92/Default.aspx">PING)))</a> &#8212; $3 each on eBay, free shipping, and they arrived quickly. Currently waiting for the chassis, gearmotors, wheels, and encoders to arrive. I opted for a mostly circular ABS chassis that is 7&#8243; in diameter. The wheel encoders were more expensive than anything else, so it will be interesting to see how well they work. I already have Arduinos and servo motors from other projects.</p>
<p>In the meantime, there is a lot of software work to be done. The ROS navigation stack is not at all simple to understand, nor are the simulation tools. But I am making progress. I already have a simple robot model URDF file, and understand how to translate frames of reference using <em>tf</em>. I should be able load a 2D map of the maze using a properly dimensioned image, so the next step is to generate that.</p>
<p>The contest is April 21st &#8212; not far away!</p>
<p>*The <a href="http://wiki.hacdc.org/index.php/Robotics_Class_2011">HacDC ROS class wiki</a> is publicly available and is complete enough to learn from on your own.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Novokane?a=2i3SSOBanhg:1ig58Gfo1t4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Novokane?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=2i3SSOBanhg:1ig58Gfo1t4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Novokane?i=2i3SSOBanhg:1ig58Gfo1t4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=2i3SSOBanhg:1ig58Gfo1t4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Novokane?i=2i3SSOBanhg:1ig58Gfo1t4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=2i3SSOBanhg:1ig58Gfo1t4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Novokane?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Novokane/~4/2i3SSOBanhg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.thekanes.org/2012/02/19/building-a-fire-fighting-robot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.thekanes.org/2012/02/19/building-a-fire-fighting-robot/</feedburner:origLink></item>
		<item>
		<title>Stanford and Sebastian Thrun offering more free online classes</title>
		<link>http://feedproxy.google.com/~r/Novokane/~3/_UhtJBByS00/</link>
		<comments>http://www.thekanes.org/2012/02/06/stanford-and-sebastian-thrun-offering-more-free-online-classes/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 05:06:53 +0000</pubDate>
		<dc:creator>Erica</dc:creator>
				<category><![CDATA[Making]]></category>
		<category><![CDATA[ai]]></category>
		<category><![CDATA[robotics]]></category>

		<guid isPermaLink="false">http://www.thekanes.org/?p=650</guid>
		<description><![CDATA[I posted previously about the free AI class taught last fall by Sebastian Thrun and Peter Norvig. It was a marvelous experience. I learned quite a bit, and completed all the homework and tests, with a perfect score on the final exam (which was not terribly hard). Well worth the time investment. The video format [...]]]></description>
			<content:encoded><![CDATA[<p>I <a href="http://www.thekanes.org/2011/10/10/taking-stanfords-artificial-intelligence-course/">posted previously</a> about the free AI class taught last fall by Sebastian Thrun and Peter Norvig. It was a marvelous experience. I learned quite a bit, and completed all the homework and tests, with a perfect score on the final exam (which was not terribly hard). Well worth the time investment. The video format was far more enjoyable than I expected and in many ways was an improvement over a live lecture. It felt intimate and the ability to rewind is invaluable!</p>
<p>So I was delighted to see that new courses are being offered for the spring semester. An excellent summary of them can be found <a href="http://therohanaurora.com/new-stanfords-free-courses/">here</a>. (Be sure to scroll all the way down, as there are some important updates at the bottom.) The list includes computer science, entrepreneurship, robotics, and many other topics that all look incredibly interesting. As mentioned in my previous post there are also archived courses available through <a href="http://see.stanford.edu/">Stanford Engineering Everywhere</a>, though there would not be any grading for those.</p>
<p>An interesting note here is that Sebastian Thrun is offering his courses through his new online education venture, <a href="http://www.udacity.com/">Udacity</a>, rather than Stanford. Apparently he has chosen his Google position over his professorship at Stanford, and given up his tenure. It appears to have been an amicable split. The AI class attracted over 100,000 students. Thrun discovered that even the Stanford attendees preferred to watch online, rather than live; his lectures dwindled from 200 to 50 over the course of the semester. I don&#8217;t blame them. As with the Stanford classes, Udacity&#8217;s courses are free, but without any sort of accreditation. Starting February 20 they will begin &#8220;Building a Search Engine&#8221; (for programming novices) and &#8220;Programming a Robotic Car&#8221; (programming experience required).</p>
<p>I would very much like to take the robotic car course, and Stanford&#8217;s Machine Learning. However, I recently committed to a robotics competition in April, developments are happening at work, and in short this is not the perfect time. But good news: the Udacity courses will be offered again, starting April 16. Now that is flexibility! Thrilling. Udacity has 8 more courses listed as &#8220;coming soon&#8221; and I fervently hope they do. Democratization of scientific education is something I feel passionate about.</p>
<p>The Stanford courses are tied to their academic schedule and only offered &#8220;live&#8221; once or twice a year, so if you are interested in those I recommend checking them out now &#8212; they start soon.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Novokane?a=_UhtJBByS00:gqEah_Bi0AI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Novokane?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=_UhtJBByS00:gqEah_Bi0AI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Novokane?i=_UhtJBByS00:gqEah_Bi0AI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=_UhtJBByS00:gqEah_Bi0AI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Novokane?i=_UhtJBByS00:gqEah_Bi0AI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=_UhtJBByS00:gqEah_Bi0AI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Novokane?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Novokane/~4/_UhtJBByS00" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.thekanes.org/2012/02/06/stanford-and-sebastian-thrun-offering-more-free-online-classes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.thekanes.org/2012/02/06/stanford-and-sebastian-thrun-offering-more-free-online-classes/</feedburner:origLink></item>
		<item>
		<title>Experimenting with Sous-Vide Cooking</title>
		<link>http://feedproxy.google.com/~r/Novokane/~3/ncjpxBXpHkc/</link>
		<comments>http://www.thekanes.org/2012/01/08/experimenting-with-sous-vide-cooking/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 02:56:54 +0000</pubDate>
		<dc:creator>Erica</dc:creator>
				<category><![CDATA[Cooking]]></category>
		<category><![CDATA[sous vide]]></category>

		<guid isPermaLink="false">http://www.thekanes.org/?p=625</guid>
		<description><![CDATA[For the holidays, I asked my husband to get me an item from the Seattle Food Geek Gift Guide. I&#8217;ve been doing a great deal more cooking in the past months, so much that it has distracted me from other maker projects. At its best, cooking fulfills some of the same needs: learning something new, [...]]]></description>
			<content:encoded><![CDATA[<p>For the holidays, I asked my husband to get me an item from the <a href="http://seattlefoodgeek.com/2011/11/food-geek-gift-guide-2011/">Seattle Food Geek Gift Guide</a>. I&#8217;ve been doing a great deal more cooking in the past months, so much that it has distracted me from other maker projects. At its best, cooking fulfills some of the same needs: learning something new, figuring out problems, discovering better ways to do things, and creating something beautiful. Best of all, it is useful! Make something delicious and your family is happy; and every night is an opportunity for a new &#8220;project&#8221;. Still, there are many excellent cooking blogs in the world, so I did not think there was a need for posts on that.</p>
<p>However, the gift item my husband chose was the <a href="http://www.sousvidesupreme.com/default.aspx?RD=1">Sous Vide Supreme</a>. And sous vide cooking is both new enough and geeky enough that I thought it might be of interest. I first learned of it in &#8220;<a href="http://www.cookingforgeeks.com/">Cooking for Geeks</a>&#8221; by Jeff Potter. Basically, it is a precision temperature-controlled fluid bath. Foods are (generally) placed in a plastic bag, then the air is removed and the bag vacuum-sealed. The food bag is placed in the bath, and sits at the desired <em>internal</em> temperature for a long time. This is different than oven roasting where the cooking temperature is often hundreds of degrees higher than the desired final internal temperature. Thus roasting can often result in an overdone exterior and underdone interior. The high heat is required due to the inefficient heat transfer of air. But with the sous vide fluid the heat transfer is much faster. It is possible to get your fish or meat to the right temperature in a reasonable amount of time, depending on the thickness of the meat. The entire piece will be cooked evenly, and exact timing is usually not required; you can leave the food item in there quite a bit longer and it will not overcook.</p>
<p>The classic item to start with is an egg, because being in a shell it doesn&#8217;t need the vacuum-sealed bag. As suggested in Jeff&#8217;s book, I put the egg in at 146F for 1 hour. Near the end of the hour, I sauteed some asparagus. After that, I took the egg out and did the optional step of cracking the egg into a cup of very hot water (to set the whites more) then took it out immediately with a slotted spoon and put it over the asparagus. The egg was amazing. The yolk was like a custard, ever so slightly runny, and the whites were soft. The look of it was very unique too. It&#8217;s easy to play with the temperature to get the egg the way you like, and for slow-cooked eggs the results will be very consistent. Again, exact timing is not required. Here is a picture of the result.</p>
<div id="attachment_630" class="wp-caption aligncenter" style="width: 234px"><a href="http://www.thekanes.org/wordpress/wp-content/uploads/2012/01/2012-01-02_08-58-20_796.jpg"><img class="size-medium wp-image-630" title="2012-01-02_08-58-20_796" src="http://www.thekanes.org/wordpress/wp-content/uploads/2012/01/2012-01-02_08-58-20_796-224x300.jpg" border="0" alt="Sous vide egg over asparagus" width="224" height="300" /></a><p class="wp-caption-text">Sous vide egg over asparagus</p></div>
<p>It is possible to cook eggs quickly as well; I&#8217;ve done them at 167F for 15 minutes the last few mornings, and since that is much higher than the desired internal temperature, precise timing becomes important. That said, the eggs are far more consistent this way than using boiling water or the microwave!</p>
<p>Having had success with the egg, my next test was salmon. I had heard this was a classic sous vide dish. I bought 3 8oz filets, and put 3 tablespoons of olive oil in small cups into the freezer briefly to set them into a gel. I then bagged each salmon with the olive oil gel and cooked it for 40 minutes at 122F.</p>
<p>The results were outstanding. I&#8217;ve never had such good fish, and the edges were as moist as the interior. Coming out of the bag, it looked raw, which is normal for sous vide. I used a pan to sear each side for 30 seconds, then we all ate. Everyone loved it, especially the kids, who have begged me to make it again.</p>
<div id="attachment_631" class="wp-caption aligncenter" style="width: 234px"><a href="http://www.thekanes.org/wordpress/wp-content/uploads/2012/01/2012-01-02_18-51-40_489.jpg"><img class="size-medium wp-image-631" title="2012-01-02_18-51-40_489" src="http://www.thekanes.org/wordpress/wp-content/uploads/2012/01/2012-01-02_18-51-40_489-224x300.jpg" border="0" alt="Sous vide salmon, finished with a pan sear" width="224" height="300" /></a><p class="wp-caption-text">Sous vide salmon, finished with a pan sear</p></div>
<p>Next up, chicken breasts. These are healthy and very filling, but let&#8217;s face it, they can be dry and boring as well. I&#8217;ve figured out some good recipes by now, but I always prefer the fattier dark meat. I tried out a <a href="http://online.wsj.com/article/SB122004224561584255.html">butter poached chicken breast with fennel</a> recipe. Once again, the meat was extremely moist. But the sauce was not interesting enough. Chicken breasts as an entrée still require a strong flavor, whether a sauce, marinade, or dry rub.</p>
<div id="attachment_632" class="wp-caption aligncenter" style="width: 234px"><a href="http://www.thekanes.org/wordpress/wp-content/uploads/2012/01/2012-01-03_18-40-21_66.jpg"><img class="size-medium wp-image-632" title="2012-01-03_18-40-21_66" src="http://www.thekanes.org/wordpress/wp-content/uploads/2012/01/2012-01-03_18-40-21_66-224x300.jpg" border="0" alt="Butter poached chicken with fennel and onion" width="224" height="300" /></a><p class="wp-caption-text">Butter poached chicken with fennel and onion</p></div>
<p>I had better success with cooking a large batch of chicken breasts for my lunch salads. I&#8217;ve avoided making these in bulk in the oven because it is too hard to guarantee uniformity, and the last thing I wanted was a large amount of dry or underdone chicken on hand. I rely on leftovers from dinner instead which is a bit hit or miss. In the sous vide making the breasts was very easy, throw the bag in for a few hours and that was it &#8212; and the results were excellent.</p>
<p>The concept of cooking decoupled from time (mostly) is a fascinating one. I usually focus on cooking the protein perfectly and keep the side as simple as possible because the timing issues are such a pain. But the sous vide frees me up to make a more interesting side dish. The butter poached chicken may have been a bit bland, but the roasted fennel, carrot, and onion side I served with it was a hit. And I would never had made that under normal circumstances. One can go a lot further than this. Make your dish ahead of time, keep it in the vacuum sealed bag, then chill or freeze it. Just warm it up again when you are ready to eat. Or, cook multiple items at the same time. If the higher temperature ones go in first, they can stay in while the lower temperature ones are there too &#8212; they won&#8217;t overcook. And everything is all warm and ready to go when you want to eat. No doubt this utility is why the sous vide became popular in the restaurant world.</p>
<p>This situation has some similarities to a slow cooker, where you also have the luxury of putting something together and letting it sit for hours. In the slow cooker you must use a sauce, the meat will shrink, there are some practical limitations in terms of how long it can stay in, and the cook/chill option is not generally available. Nevertheless the slow cooker is a wonderful tool.</p>
<p>Because sous vide is fairly new to home chefs, creativity is required in figuring out how to apply recipes to it. One idea that occurred to me for tonight was mashed potatoes. To get the richest flavor from the potatoes, it&#8217;s best to boil them with the skins on. But you then have the problem of getting the skins off afterwards without letting the potatoes cool down too much. And generally, it all must be precisely timed: if your guests aren&#8217;t there on time, you will be stuck with cold potatoes. For Thanksgiving, I found a <a href="http://allrecipes.com/recipe/make-ahead-mashed-potatoes-2/detail.aspx">make ahead recipe</a> which got around the timing problem. The sous vide seemed to have the potential to solve both skin and timing. I peeled the potatoes, sealed them up, and put them in at 184F. When the rest of the meal &#8212; stout-braised beef short ribs &#8212; was ready, I mashed the potatoes with butter, milk, and sour cream. They were exactly the right consistency and, again, delicious. Bonus: I bagged some peeled, halved pears and cooked them along with the potatoes. When dinner was over I unsealed the poached pears and drizzled on some honey and blue cheese crumbles. A nice hot dessert, yum.</p>
<p>Similar to a slow cooker, the sous vide will not brown the outside of the meat. Browning is desirable from an aesthetic and taste point of view, even if it is not the healthiest option. The easiest way to brown meat is to quickly pan sear the meat before or after cooking. The fun way, is to use a blow torch when the dish is completed! I&#8217;ve ordered a culinary blow torch, and am looking forward to trying it out.</p>
<p>Finally, there are some neat things that can be done with a hot water bath. I suspect I could use this to make yogurt, or culture biological samples. I have some herbal tea which needs to steep for 10 minutes, but can&#8217;t be brought to a boil again after steeping. To keep the tea warm, just sit the mug in the sous vide. Etc. There are many more uses I&#8217;m sure, and I&#8217;m looking forward to exploring them.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Novokane?a=ncjpxBXpHkc:hVa6X3DVs2U:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Novokane?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=ncjpxBXpHkc:hVa6X3DVs2U:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Novokane?i=ncjpxBXpHkc:hVa6X3DVs2U:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=ncjpxBXpHkc:hVa6X3DVs2U:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Novokane?i=ncjpxBXpHkc:hVa6X3DVs2U:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=ncjpxBXpHkc:hVa6X3DVs2U:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Novokane?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Novokane/~4/ncjpxBXpHkc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.thekanes.org/2012/01/08/experimenting-with-sous-vide-cooking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.thekanes.org/2012/01/08/experimenting-with-sous-vide-cooking/</feedburner:origLink></item>
		<item>
		<title>Taking Stanford’s Artificial Intelligence course</title>
		<link>http://feedproxy.google.com/~r/Novokane/~3/2nB3X1V2m8g/</link>
		<comments>http://www.thekanes.org/2011/10/10/taking-stanfords-artificial-intelligence-course/#comments</comments>
		<pubDate>Tue, 11 Oct 2011 03:09:05 +0000</pubDate>
		<dc:creator>Erica</dc:creator>
				<category><![CDATA[Making]]></category>
		<category><![CDATA[ai]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[hacdc]]></category>
		<category><![CDATA[robotics]]></category>

		<guid isPermaLink="false">http://www.thekanes.org/?p=622</guid>
		<description><![CDATA[This week marks the beginning of Stanford&#8217;s introductory course in Artificial Intelligence, taught by Sebastian Thrun and Peter Norvig. This is the same course being given live at Stanford&#8217;s campus as CS221. Enrollment is free, and includes video lectures, quizzes, and (optionally) homework and exams. I have signed up for the full boat, they say [...]]]></description>
			<content:encoded><![CDATA[<p>This week marks the beginning of Stanford&#8217;s <a href="http://www.ai-class.org/">introductory course in Artificial Intelligence</a>, taught by Sebastian Thrun and Peter Norvig. This is the same course being given live at Stanford&#8217;s campus as CS221. Enrollment is free, and includes video lectures, quizzes, and (optionally) homework and exams. I have signed up for the full boat, they say it will take 10 hours a week. No course credit for those outside of Stanford, but we will be ranked against the 145,000 other people signed up for the class, and will get a letter of accomplishment.</p>
<p>I just watched the first unit. I was afraid the videos would be dry, but they were fairly pleasant to watch. It is not quite the same as having a live person there; but there are the advantages of attending on your own schedule, and being able to rewind. Breaking the lecture up into chunks is nice as well. The quizzes in the middle of various sections keep things lively, they don&#8217;t contribute to your &#8220;grade&#8221; but are a nice way to keep you on your toes. I am looking forward to the next unit. There will be a new one each week, for a total of 10 weeks.</p>
<p>There is also a weekly study group meeting at <a href="http://www.hacdc.org/">HacDC</a>. That will be an opportunity to meet with fellow humans in person.</p>
<p>Although the AI course has received unprecedented publicity, I&#8217;ve discovered that Stanford offers many other courses for free. They have the <a href="http://see.stanford.edu/">Stanford Engineering Everywhere</a> initiative, which in their words includes:</p>
<ul>
<li>Anytime and anywhere access to complete lecture videos via streaming or downloaded media.</li>
<li>Full course materials including syllabi, handouts, homework, and exams.</li>
<li>Online social networking with fellow SEE students.</li>
<li>Support for PCs, Macs and mobile computing devices.</li>
</ul>
<p>I saw 13 courses on there, which include: &#8220;the three-course Introduction to Computer Science taken by the majority of Stanford’s undergraduates and seven more advanced courses in artificial intelligence and electrical engineering.&#8221; Many of these look very good. </p>
<p>It is very encouraging to see all of this wonderful information being made freely available. A few years ago I looked for robotics courses and could find nothing. And now, world class material is here for everyone. It makes me very hopeful for the world. Many scientific research papers, too, are being made publicly available now and not being walled off behind private journals &#8212; indeed, government grants pay for much of that research, shouldn&#8217;t a citizen be able to see it? I have missed my university membership for a long time, but I think it will become somewhat less relevant in the future.</p>
<p>Back to Stanford: the SEE courses are mostly archived, but in addition to the AI class there are a few others that are live this fall. They include <a href="http://www.ml-class.org/">Machine Learning</a> and <a href="http://www.db-class.org/">Introduction to Databases</a>.</p>
<p>For more information and to sign up for AI, see <a href="http://www.ai-class.org/">http://www.ai-class.org</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Novokane?a=2nB3X1V2m8g:aAU4Ib_k3CI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Novokane?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=2nB3X1V2m8g:aAU4Ib_k3CI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Novokane?i=2nB3X1V2m8g:aAU4Ib_k3CI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=2nB3X1V2m8g:aAU4Ib_k3CI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Novokane?i=2nB3X1V2m8g:aAU4Ib_k3CI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Novokane?a=2nB3X1V2m8g:aAU4Ib_k3CI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Novokane?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Novokane/~4/2nB3X1V2m8g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.thekanes.org/2011/10/10/taking-stanfords-artificial-intelligence-course/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.thekanes.org/2011/10/10/taking-stanfords-artificial-intelligence-course/</feedburner:origLink></item>
	</channel>
</rss>

