<?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>robburke.NET &#187; navigation</title>
	<atom:link href="http://robburke.net/tag/navigation/feed/" rel="self" type="application/rss+xml" />
	<link>http://robburke.net</link>
	<description>Robert Burke&#039;s home on the web.</description>
	<lastBuildDate>Wed, 18 Apr 2012 19:15:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Roomba</title>
		<link>http://robburke.net/2009/12/roomba/</link>
		<comments>http://robburke.net/2009/12/roomba/#comments</comments>
		<pubDate>Sat, 12 Dec 2009 18:41:51 +0000</pubDate>
		<dc:creator>Rob Burke</dc:creator>
				<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Interesting]]></category>
		<category><![CDATA[Photography]]></category>
		<category><![CDATA[behavior]]></category>
		<category><![CDATA[iRobot]]></category>
		<category><![CDATA[navigation]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Rodney Brooks]]></category>
		<category><![CDATA[Roomba]]></category>
		<category><![CDATA[Roomba 550]]></category>

		<guid isPermaLink="false">http://robburke.net/?p=1906</guid>
		<description><![CDATA[I finally watched a Roomba dance its funky dance.

The iRobot Roomba 550 we affectionately named Butler spent a half-hour cleaning the 4 downstairs rooms of a home, sucking up an impressive gob of dust from the previous night's party.]]></description>
			<content:encoded><![CDATA[<div id="attachment_1910" class="wp-caption alignright" style="width: 209px"><a href="http://robburke.net/wp-content/uploads/2009/12/4173613375_a382327228_b.jpg"><img class="size-medium wp-image-1910" title="Hello, Roomba" src="http://robburke.net/wp-content/uploads/2009/12/4173613375_a382327228_b-199x300.jpg" alt="Hello, Roomba" width="199" height="300" /></a><p class="wp-caption-text">Hello, Roomba!</p></div>
<p>I finally watched a <a href="http://store.irobot.com/product/index.jsp?productId=3525808">Roomba</a> dance its funky dance.</p>
<p>The <em>iRobot Roomba 550</em> we affectionately named Butler spent a half-hour cleaning the 4 downstairs rooms of a home, sucking up an impressive gob of dust from the previous night&#8217;s party.*</p>
<h3>As I watched Butler, I realized I&#8217;d forgotten&#8230;</h3>
<p style="padding-left: 20px;">How inclined we are to <strong>anthropomorphize technology</strong>.<br />
<em>(His name is Butler, you see&#8230;)</em></p>
<p style="padding-left: 20px;">How we&#8217;re wired to <strong>perceive complex reasoning </strong>where only simple behavior exists.<br />
<em>(He was doing his best to explore and clean his new home&#8230;)</em></p>
<p style="padding-left: 20px;">How important it is to <strong>have users on your side!<br />
</strong> <em>(Because Butler was occasionally bumbling but always so <span style="text-decoration: underline;">helpful</span> &#8212; looking everywhere for last night&#8217;s crumbs, remembering which area needs more attention, and just generally &#8220;doing his best.&#8221;)</em></p>
<h3>First Impressions</h3>
<p style="padding-left: 20px;">The design of the unit is clean, sleek, and functional.</p>
<div id="attachment_1977" class="wp-caption alignright" style="width: 310px"><a href="http://robburke.net/wp-content/uploads/2009/12/sm-rooba.jpg"><img class="size-medium wp-image-1977 " title="Roomba in Motion across the rug" src="http://robburke.net/wp-content/uploads/2009/12/sm-rooba-300x88.jpg" alt="Roomba in Motion across the rug" width="300" height="88" /></a><p class="wp-caption-text">Roomba in Motion, scooting across the rug</p></div>
<p style="padding-left: 20px;">The &#8220;wall following&#8221; behavior is particularly clever and plays to the strengths of the round unit.</p>
<p style="padding-left: 20px;">Object detection mostly works (it&#8217;s supposed to slow down before a bumper-kiss), but it was blind to some antique table legs on our test run, threatening to knock over some photo frames and antique china.</p>
<p style="padding-left: 20px;">Its motion is smooth, and it successfully un-stuck itself from the curtains.</p>
<p style="padding-left: 20px;">I loved watching it ultimately find &#8220;home base&#8221; by IR and dock with it, <a href="http://www.youtube.com/watch?v=q3oHmVhviO8&amp;annotation_id=annotation_798020&amp;feature=iv">2001 Blue Danube style</a>.</p>
<h3>But I worried..</h3>
<ul>
<li> About non-techie users having to choose a &#8220;home base&#8221; location. A sleepy Roomba needs to locate its home, but a resting Roomba is hardly showpiece décor.</li>
<li>About long-term battery wear and life.</li>
<li>About how often you&#8217;d need to empty the dust out of his bowels, and what happens if you forget to do so.</li>
</ul>
<div id="attachment_1907" class="wp-caption alignright" style="width: 310px"><a href="http://homesupport.irobot.com" target="_blank"><img class="size-medium wp-image-1907 " title="Roomba Cleaning Patterns (from the manual - click for .pdf download link)" src="http://robburke.net/wp-content/uploads/2009/12/RoombaCleaningPatterns-300x265.jpg" alt="Roomba Cleaning Patterns (from the manual - click for .pdf download link)" width="300" height="265" /></a><p class="wp-caption-text">Roomba Cleaning Patterns (from the manual .pdf)</p></div>
<h3>Navigation &amp; Hackery &amp; Papers</h3>
<p>Roomba uses behaviors like <em>spiraling, wall-following </em>and <em>room crossing </em>(as explained in the image, right, from the manual) to create its not-quite-completely-random walk.</p>
<p>And below, check out this very clever 30-minute long-exposure photo (<a href="http://signaltheorist.com/?p=91">found at SignalTheorist</a> via <a href="http://www.botjunkie.com/2009/05/11/long-exposure-roomba-path-reveals-lovely-inefficient-cleaning-patterns/">Botjunkie</a>) that reveals the Roomba&#8217;s &#8220;Lovely, Inefficient&#8221; cleaning path.</p>
<div id="attachment_1927" class="wp-caption alignnone" style="width: 310px"><a href="http://www.botjunkie.com/2009/05/11/long-exposure-roomba-path-reveals-lovely-inefficient-cleaning-patterns/" target="_blank"><img class="size-medium wp-image-1927  " title="Roomba Path Long Exposure" src="http://robburke.net/wp-content/uploads/2009/12/roombapath-300x200.jpg" alt="Roomba Path Long Exposure" width="300" height="200" /></a><p class="wp-caption-text">Roomba Cleaning Path - Long Exposure Image</p></div>
<p>This brings us inevitably to the hacking. iRobot, to their credit, <em>encourage</em> you to hack Roomba!</p>
<p><a href="http://blogs.msdn.com/martharotter/">Martha</a>, whose Roomba apparently can bring her beer (wait&#8230; what?!), recommends the book <a href="http://hackingroomba.com/">Hacking Roomba</a>. Here&#8217;s the book&#8217;s <a href="http://hackingroomba.com/">companion website</a>.</p>
<p>Is anyone still using <a href="http://msdn.microsoft.com/en-us/robotics/default.aspx">Microsoft Robotics Studio</a> for stuff like this?  (ah, <a href="http://robburke.net/2007/05/22/robs-last-stand-xna-microsoft-robotics-studio-360s-wiis-and-dancing-robots/">the memories</a> of dancing Lego robots.)</p>
<p>In the meantime, with my head full of Roomba, it&#8217;s the perfect time to re-read some of iRobot Founder <a href="http://people.csail.mit.edu/brooks/">Rodney Brooks</a>&#8216; seminal papers, like <a href="http://people.csail.mit.edu/brooks/papers/representation.pdf">Intelligence Without Representation</a> and <a href="http://people.csail.mit.edu/brooks/papers/elephants.pdf">Elephants Don&#8217;t Play Chess</a>.</p>
<p>Because Elephants these days apparently <em>can</em> clean living rooms!</p>
<p>&#8212;</p>
<p><em>*the dust was left behind from the previous night&#8217;s party, in an otherwise impeccably clean home (i.e. not mine)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://robburke.net/2009/12/roomba/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WPF Keyboard Navigation and Focus Considerations</title>
		<link>http://robburke.net/2008/09/wpf-keyboard-navigation-and-focus-considerations/</link>
		<comments>http://robburke.net/2008/09/wpf-keyboard-navigation-and-focus-considerations/#comments</comments>
		<pubDate>Wed, 17 Sep 2008 23:56:50 +0000</pubDate>
		<dc:creator>Rob Burke</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[focus]]></category>
		<category><![CDATA[keyboard]]></category>
		<category><![CDATA[navigation]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://robburke.net/?p=126</guid>
		<description><![CDATA[Managing WPF keyboard focus can be a challenge, especially if you&#8217;re retrofitting an application that&#8217;s full of custom styles and templates, and lots of customized ItemControls, each of which was originally designed by your Designer principally for pointer-based input. Tab-tab-tab between controls should &#8220;just work,&#8221; but it turns out, it&#8217;s a lot more complicated (with [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" style="border: 0pt none; float: right;" src="http://www.robburke.net/images/WPFLogo.jpg" alt="" width="200" height="33" />Managing WPF keyboard focus can be a challenge, especially if you&#8217;re retrofitting an application that&#8217;s full of custom styles and templates, and lots of customized ItemControls, each of which was originally designed by your Designer principally for pointer-based input. </p>
<p>Tab-tab-tab between controls should &#8220;just work,&#8221; but it turns out, it&#8217;s a lot more complicated (with good reason) than just setting the tab order.</p>
<p>Mark Smith just posted a series of very practical series of three articles about this subject.  However, he has no contact link or comments enabled in his blog (that I could find), so the best I can do is link to him here.  Thank you Mark!</p>
<p><a href="http://www.julmar.com/blog/mark/PermaLink,guid,2974164f-97c1-4e20-85f9-416cf6bed219.aspx">Part 1: It&#8217;s Basically Focus</a></p>
<p><a href="http://www.julmar.com/blog/mark/PermaLink,guid,6e4769e5-a0b3-47b2-a142-6dfefd0c028e.aspx">Part 2: Changing WPF Focus in Code</a></p>
<p><a href="http://www.julmar.com/blog/mark/PermaLink,guid,03722678-882a-4bb4-928f-4fe0d35f051e.aspx">Part 3: Shifting focus to the first available element in WPF</a></p>
<p>My biggest learning from this process?  No matter what you&#8217;re buliding, don&#8217;t let keyboard focus in your application be an afterthought!</p>
]]></content:encoded>
			<wfw:commentRss>http://robburke.net/2008/09/wpf-keyboard-navigation-and-focus-considerations/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

