<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" media="screen" href="/styles/xslt/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:c9="http://channel9.msdn.com">
<channel>
	<title>Channel 9 - Entries tagged with Robotics</title>
    <atom:link rel="self" type="application/rss+xml" href="http://channel9.msdn.com/Tags/robotics/RSS"></atom:link>
    <itunes:summary></itunes:summary>
    <itunes:author>Microsoft</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <image>
      <url>http://mschnlnine.vo.llnwd.net/d1/Dev/App_Themes/C9/images/feedimage.png</url>
      <title>Channel 9 - Entries tagged with Robotics</title>
      <link>http://channel9.msdn.com/Tags/robotics</link>
    </image>
    <itunes:image href=""></itunes:image>
    <itunes:category text="Technology"></itunes:category>
    <description>Channel 9 keeps you up to date with the latest news and behind the scenes info from Microsoft that developers love to keep up with. From LINQ to SilverLight – Watch videos and hear about all the cool technologies coming and the people behind them.</description>
    <link>http://channel9.msdn.com/Tags/robotics</link>
    <language>en</language>
    <pubDate>Wed, 19 Jun 2013 07:05:06 GMT</pubDate>
    <lastBuildDate>Wed, 19 Jun 2013 07:05:06 GMT</lastBuildDate>
    <generator>Rev9</generator>
    <c9:totalResults>70</c9:totalResults>
    <c9:pageCount>3</c9:pageCount>
    <c9:pageSize>25</c9:pageSize>
  <item>
      <title>Humanoid Robot Torso A1 made more human with help from the Kinect</title>
      <description><![CDATA[<p>Today's project is an cool inspirational example of how the Kinect and Kinect for Windows SDK can be used as part of a robot to provide some human like behavior, like following you with its &quot;eyes&quot; as you move about the room...</p><h2>Humanoid robot torso A1</h2><blockquote><p>[Machine Translated] A larger project in which I work for some time, is a humanoid robot torso. Even if he is not even finished in its basic functionality, I took now the time me, closer to present it here something and to describe.</p><p>The project because nothing better occurred to me, I have given the working title &quot;A1&quot;. Because that sounds but yet something bad dehumanized for a humanoid robot, he has received the additional name &quot;Adam&quot;. After God called so his first attempt, I can finally also do that. Whom a more rationale rather is: you can read Adam also as an abbreviation for <strong>A</strong>dvanced <strong>D</strong>ual <strong>A</strong>rm <strong>M</strong>anipulator&quot;- but this is now also not much more than an ambitious vision is...</p><p>A crucial component in a sense even starting point of this project is the robolink joint system of igus, with which I since about mid-2010 experiment. A robolink joint is two degrees of freedom available, a swivel and a rotary movement. The power transmission in the joint is done via cable. The actuators are spatially separated from the degrees of freedom in this and must not be moved. The joints can be connected via profiles so there offering to form a human-like arm from multiple joints. First of all, I have a four axle arm with drive developed, two arms with five degrees of freedom are foreseen for the A1. First an arm including motorization and adequate control should be however completed, once there everything works perfectly, also the second arm can be built accordingly.</p><p>A humanoid robot is of course sufficiently complex to provide a huge playground on different technical levels. Accordingly, the project has still a whole range of other construction sites, where I currently work in addition to construction, automation and control of arms. The sensor-head, a mobile head with some sensors and the possibility of the speech is relatively well advanced by the hardware. Also I'm going currently a gripper concept continue to work out, that I already here ever described in its basic features.</p><p>This project is of course, if the basic functionality of the torso are again interesting, then we can deal with the realization of - perhaps &quot;intelligent&quot; - behavior. The picture above indicates that (is however).</p><p>Here there is somewhat more detailed information to the described projects:</p><ul><li>&nbsp;<a href="http://www.microsofttranslator.com/bv.aspx?from=&amp;to=en&amp;a=http%3A%2F%2Fwww.mtahlers.de%2Findex.php%2Frobotik%2Fhumanoider-torso%2Fsensor-head">A1 sensor head</a> </li><li>&nbsp;<a href="http://www.microsofttranslator.com/bv.aspx?from=&amp;to=en&amp;a=http%3A%2F%2Fwww.mtahlers.de%2Findex.php%2Frobotik%2Fhumanoider-torso%2Frobolink-arme">A1 robolink arms</a> </li><li>&nbsp;<a href="http://www.microsofttranslator.com/bv.aspx?from=&amp;to=en&amp;a=http%3A%2F%2Fwww.mtahlers.de%2Findex.php%2Frobotik%2Fhumanoider-torso%2Fgreifwerkzeug">A1 gripper</a> </li></ul></blockquote><p><strong>Project Information URL:</strong> <a title="http://www.mtahlers.de/index.php/robotik/humanoider-torso/humanoider-torso-a1" href="http://www.mtahlers.de/index.php/robotik/humanoider-torso/humanoider-torso-a1">http://www.mtahlers.de/index.php/robotik/humanoider-torso/humanoider-torso-a1</a></p><p><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/m_ZEolNi9c0&hl=en"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/m_ZEolNi9c0&hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object></p><p><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/FwoZ2uHIF9M&hl=en"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/FwoZ2uHIF9M&hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object></p><p><a href="http://files.channel9.msdn.com/wlwimages/f1dda9cc6de74512b7c19f0101402403/image%5B2%5D-158.png" target="_blank"><img title="image" src="http://files.channel9.msdn.com/wlwimages/f1dda9cc6de74512b7c19f0101402403/image_thumb-154.png" alt="image" width="520" height="352" border="0"></a></p><p><a href="http://files.channel9.msdn.com/wlwimages/f1dda9cc6de74512b7c19f0101402403/image%5B5%5D-113.png" target="_blank"><img title="image" src="http://files.channel9.msdn.com/wlwimages/f1dda9cc6de74512b7c19f0101402403/image_thumb%5B1%5D-121.png" alt="image" width="416" height="384" border="0"></a></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:c12e760f3e39436aaf72a0aa015dfadd">]]></description>
      <comments>http://channel9.msdn.com/coding4fun/kinect/Humanoid-Robot-Torso-A1-made-more-human-with-help-from-the-Kinect</comments>
      <itunes:summary>Today&#39;s project is an cool inspirational example of how the Kinect and Kinect for Windows SDK can be used as part of a robot to provide some human like behavior, like following you with its &amp;quot;eyes&amp;quot; as you move about the room... Humanoid robot torso A1[Machine Translated] A larger project in which I work for some time, is a humanoid robot torso. Even if he is not even finished in its basic functionality, I took now the time me, closer to present it here something and to describe. The project because nothing better occurred to me, I have given the working title &amp;quot;A1&amp;quot;. Because that sounds but yet something bad dehumanized for a humanoid robot, he has received the additional name &amp;quot;Adam&amp;quot;. After God called so his first attempt, I can finally also do that. Whom a more rationale rather is: you can read Adam also as an abbreviation for Advanced Dual Arm Manipulator&amp;quot;- but this is now also not much more than an ambitious vision is... A crucial component in a sense even starting point of this project is the robolink joint system of igus, with which I since about mid-2010 experiment. A robolink joint is two degrees of freedom available, a swivel and a rotary movement. The power transmission in the joint is done via cable. The actuators are spatially separated from the degrees of freedom in this and must not be moved. The joints can be connected via profiles so there offering to form a human-like arm from multiple joints. First of all, I have a four axle arm with drive developed, two arms with five degrees of freedom are foreseen for the A1. First an arm including motorization and adequate control should be however completed, once there everything works perfectly, also the second arm can be built accordingly. A humanoid robot is of course sufficiently complex to provide a huge playground on different technical levels. Accordingly, the project has still a whole range of other construction sites, where I currently work in addition to construction, a</itunes:summary>
      <link>http://channel9.msdn.com/coding4fun/kinect/Humanoid-Robot-Torso-A1-made-more-human-with-help-from-the-Kinect</link>
      <pubDate>Fri, 17 Aug 2012 13:00:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/coding4fun/kinect/Humanoid-Robot-Torso-A1-made-more-human-with-help-from-the-Kinect</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/b06828a0-399b-401e-a9c6-bd31b01d4c90.png" height="92" width="100"></media:thumbnail>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/2b78904f-45f6-4076-8419-9d242a77e692.png" height="202" width="220"></media:thumbnail>      
      <dc:creator>Greg Duncan</dc:creator>
      <itunes:author>Greg Duncan</itunes:author>
      <slash:comments>3</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/coding4fun/kinect/Humanoid-Robot-Torso-A1-made-more-human-with-help-from-the-Kinect/RSS</wfw:commentRss>
      <category>Coding4Fun</category>
      <category>Kinect</category>
      <category>Robotics</category>
      <category>Kinect SDK</category>
    </item>
  <item>
      <title>Introducing Kinect services for Microsoft Robotics RDS 2008 R3</title>
      <description><![CDATA[ <p>Trevor Taylor, Program Manager in the <a href="http://www.microsoft.com/robotics/">Microsoft Robotics</a> team walks us through the features of the latest <a href="http://go.microsoft.com/fwlink/?LinkID=223644">Kinect Services for RDS toolkit</a>. Demonstrating support for the Kinect camera via <a href="http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/">Kinect for Windows SDK</a>.</p><p>Also be sure to check out <a href="http://blogs.msdn.com/b/msroboticsstudio/archive/2011/07/13/announcing-kinect-services-for-rds-2008-r3.aspx">this blog post</a> for an update on all things Microsoft Robotics by Stathis Papaefstathiou, General Manager, Microsoft Robotics.</p><p>Enjoy the Show!</p><p>John O'Donnell,&nbsp;ISV Architect Evangelist<br>Microsoft Corporation<br><a href="http://blogs.msdn.com/jodonnell">http://blogs.msdn.com/jodonnell</a><br><a href="http://blogs.msdn.com/usisvde">http://blogs.msdn.com/usisvde</a><br><a href="http://www.twitter.com/jodonnel">http://www.twitter.com/jodonnel</a></p><p>&nbsp;</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:35a620ca4eff43ff8a779f260165f0ca">]]></description>
      <comments>http://channel9.msdn.com/Blogs/jodonnell/Introducing-Kinect-services-for-Microsoft-Robotics-RDS-2008-R3</comments>
      <itunes:summary> Trevor Taylor, Program Manager in the Microsoft Robotics team walks us through the features of the latest Kinect Services for RDS toolkit. Demonstrating support for the Kinect camera via Kinect for Windows SDK. Also be sure to check out this blog post for an update on all things Microsoft Robotics by Stathis Papaefstathiou, General Manager, Microsoft Robotics. Enjoy the Show! John O&#39;Donnell,&amp;nbsp;ISV Architect EvangelistMicrosoft Corporationhttp://blogs.msdn.com/jodonnellhttp://blogs.msdn.com/usisvdehttp://www.twitter.com/jodonnel &amp;nbsp; </itunes:summary>
      <itunes:duration>188</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/jodonnell/Introducing-Kinect-services-for-Microsoft-Robotics-RDS-2008-R3</link>
      <pubDate>Thu, 21 Jul 2011 04:48:25 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/jodonnell/Introducing-Kinect-services-for-Microsoft-Robotics-RDS-2008-R3</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/f0ca/35a620ca-4eff-43ff-8a77-9f260165f0ca/KinectAndRDS_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/f0ca/35a620ca-4eff-43ff-8a77-9f260165f0ca/KinectAndRDS_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/f0ca/35a620ca-4eff-43ff-8a77-9f260165f0ca/KinectAndRDS_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/f0ca/35a620ca-4eff-43ff-8a77-9f260165f0ca/KinectAndRDS_2MB_ch9.wmv" expression="full" duration="188" fileSize="24304077" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/f0ca/35a620ca-4eff-43ff-8a77-9f260165f0ca/KinectAndRDS_ch9.mp3" expression="full" duration="188" fileSize="1506916" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/f0ca/35a620ca-4eff-43ff-8a77-9f260165f0ca/KinectAndRDS_ch9.wma" expression="full" duration="188" fileSize="1528007" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/f0ca/35a620ca-4eff-43ff-8a77-9f260165f0ca/KinectAndRDS_ch9.wmv" expression="full" duration="188" fileSize="35286555" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/f0ca/35a620ca-4eff-43ff-8a77-9f260165f0ca/KinectAndRDS_high_ch9.mp4" expression="full" duration="188" fileSize="71631577" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/f0ca/35a620ca-4eff-43ff-8a77-9f260165f0ca/KinectAndRDS_low_ch9.mp4" expression="full" duration="188" fileSize="18957634" type="video/mp4" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/f0ca/35a620ca-4eff-43ff-8a77-9f260165f0ca/KinectAndRDS.ism/manifest" expression="full" duration="188" fileSize="5236" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/f0ca/35a620ca-4eff-43ff-8a77-9f260165f0ca/KinectAndRDS_ch9.wmv" length="35286555" type="video/x-ms-wmv"></enclosure>
      <dc:creator>John O&#39;Donnell</dc:creator>
      <itunes:author>John O&#39;Donnell</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/jodonnell/Introducing-Kinect-services-for-Microsoft-Robotics-RDS-2008-R3/RSS</wfw:commentRss>
      <category>Kinect</category>
      <category>Microsoft Robotics</category>
      <category>Robotics</category>
    </item>
  <item>
      <title>Microsoft Robotics Developer Studio, Cars and Home Automation with Stacy Harris and John Mullinax</title>
      <description><![CDATA[ <p>Robotic technologies can be applied to many aspects of our lives including some that may not seem as obvious. We have all seen scifi movies where there are many robots running around assisting in our daily lives of the future. However what about now? In this video Stacy Harris and John Mullinax talk about adding robotic systems to both a car and even for home automation. You can read more about Stacy's adventures in using <a href="http://www.microsoft.com/robotics/">Microsoft Robotics Developer Studio</a>&nbsp;to add new <a href="http://www.dotnetrocks.com/default.aspx?showNum=364">control options to his home</a></p><p>Enjoy the Show!</p><p>John O'Donnell Microsoft Dynamics ISV Architect Evangelist<br>Microsoft Corporation<br><a href="http://blogs.msdn.com/jodonnell">http://blogs.msdn.com/jodonnell</a><br><a href="http://blogs.msdn.com/usisvde">http://blogs.msdn.com/usisvde</a><br><a href="http://www.twitter.com/jodonnel">http://www.twitter.com/jodonnel</a> </p><p>&nbsp;</p><p>.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:6d8505f156a34b3092a59e0800373e6c">]]></description>
      <comments>http://channel9.msdn.com/Blogs/jodonnell/Microsoft-Robotics-Developer-Studio-Cars-and-Home-Automation-with-Stacy-Harris-and-John-Mullinax</comments>
      <itunes:summary> Robotic technologies can be applied to many aspects of our lives including some that may not seem as obvious. We have all seen scifi movies where there are many robots running around assisting in our daily lives of the future. However what about now? In this video Stacy Harris and John Mullinax talk about adding robotic systems to both a car and even for home automation. You can read more about Stacy&#39;s adventures in using Microsoft Robotics Developer Studio&amp;nbsp;to add new control options to his home Enjoy the Show! John O&#39;Donnell Microsoft Dynamics ISV Architect EvangelistMicrosoft Corporationhttp://blogs.msdn.com/jodonnellhttp://blogs.msdn.com/usisvdehttp://www.twitter.com/jodonnel  &amp;nbsp; . </itunes:summary>
      <itunes:duration>675</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/jodonnell/Microsoft-Robotics-Developer-Studio-Cars-and-Home-Automation-with-Stacy-Harris-and-John-Mullinax</link>
      <pubDate>Fri, 08 Oct 2010 15:26:08 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/jodonnell/Microsoft-Robotics-Developer-Studio-Cars-and-Home-Automation-with-Stacy-Harris-and-John-Mullinax</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/3e6c/6d8505f1-56a3-4b30-92a5-9e0800373e6c/MSRoboticswithStacyAndJohn_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/3e6c/6d8505f1-56a3-4b30-92a5-9e0800373e6c/MSRoboticswithStacyAndJohn_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/3e6c/6d8505f1-56a3-4b30-92a5-9e0800373e6c/MSRoboticswithStacyAndJohn_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/3e6c/6d8505f1-56a3-4b30-92a5-9e0800373e6c/MSRoboticswithStacyAndJohn_2MB_ch9.wmv" expression="full" duration="675" fileSize="450071411" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/3e6c/6d8505f1-56a3-4b30-92a5-9e0800373e6c/MSRoboticswithStacyAndJohn_ch9.mp3" expression="full" duration="675" fileSize="5407799" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/3e6c/6d8505f1-56a3-4b30-92a5-9e0800373e6c/MSRoboticswithStacyAndJohn_ch9.mp4" expression="full" duration="675" fileSize="60971915" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/3e6c/6d8505f1-56a3-4b30-92a5-9e0800373e6c/MSRoboticswithStacyAndJohn_ch9.wma" expression="full" duration="675" fileSize="5475261" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/3e6c/6d8505f1-56a3-4b30-92a5-9e0800373e6c/MSRoboticswithStacyAndJohn_ch9.wmv" expression="full" duration="675" fileSize="132281484" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ecn.channel9.msdn.com/o9/ch9/3e6c/6d8505f1-56a3-4b30-92a5-9e0800373e6c/MSRoboticswithStacyAndJohn_ch9.wmv" length="132281484" type="video/x-ms-wmv"></enclosure>
      <dc:creator>John O&#39;Donnell</dc:creator>
      <itunes:author>John O&#39;Donnell</itunes:author>
      <slash:comments>2</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/jodonnell/Microsoft-Robotics-Developer-Studio-Cars-and-Home-Automation-with-Stacy-Harris-and-John-Mullinax/RSS</wfw:commentRss>
      <category>FY11</category>
      <category>jodonnel</category>
      <category>Microsoft Robotics Developer Studio</category>
      <category>Robotics</category>
    </item>
  <item>
      <title>TWC9: WP7 RTMs, Future of Silverlight, Excel Importer, Robot Gun Turrets</title>
      <description><![CDATA[This week on Channel 9, Dan and Brian discuss the week's top developer news, including:
<br /><ul>
<li>Windows Phone Blog - Terry Myerson - <a shape="rect" href="http://windowsteamblog.com/windows_phone/b/windowsphone/archive/2010/09/01/windows-phone-7-released-to-manufacturing.aspx" shape="rect">
Windows Phone 7 RTM'd</a> </li><li>Dave Anson - <a shape="rect" href="http://blogs.msdn.com/b/delay/archive/2010/08/26/your-phone-can-turn-into-a-robot-layouttransformer-works-great-on-the-windows-phone-platform.aspx" shape="rect">
LayoutTransformer</a> assembly enables WPF-style layout transformations in WP7 </li><li>Indy from Oz - <a shape="rect" href="http://indyfromoz.wordpress.com/2010/08/30/windows-phone-7-listbox-pagination-with-mvvmlight-applicationbar/" shape="rect">
Windows Phone 7 Listbox pagination</a> with MVVM Light and Application Bar </li><li>LessThanDot - Lazy DBA Series shows how to easily <a shape="rect" href="http://blogs.lessthandot.com/index.php/DataMgmt/DBAdmin/lazy-dba-sql-server-wizards" shape="rect">
import Excel data via SQL Server</a> wizards, via <a shape="rect" href="http://www.alvinashcraft.com/2010/08/28/dew-drop-august-28-2010/" shape="rect">
Alvin Ashcraft</a> </li><li>SDL Team blog - Microsoft <a shape="rect" href="http://blogs.msdn.com/b/sdl/archive/2010/08/26/microsoft-sdl-and-the-creative-commons.aspx" shape="rect">
Security Development Lifecycle</a> to be licensed under Creative Commons </li><li>IE Team Blog - <a shape="rect" href="http://blogs.msdn.com/b/ie/archive/2010/08/30/performance-profiling-how-different-web-sites-use-browser-subsystems.aspx" shape="rect">
Performance profiling different browser subsystems </a>for popular Web sites </li><li>Coding4Fun - Peter Brownstein &amp; Peter Juchniewicz - <a shape="rect" href="http://blogs.msdn.com/b/coding4fun/archive/2010/08/30/10056062.aspx" shape="rect">
Building WEIShare</a>, the Windows and Web app to share Windows Experience Index scores
</li><li>Brad Becker - The <a shape="rect" href="http://team.silverlight.net/announcement/the-future-of-silverlight/" shape="rect">
Future of Silverlight</a> </li><li>Web Camps TV - <a shape="rect" href="http://channel9.msdn.com/shows/Web&#43;Camps&#43;TV/Web-Camps-TV-2-OData-Overview-with-Jonathan-Carter/" shape="rect">
OData Overview with Jonathan Carter</a><a shape="rect" shape="rect">&nbsp;</a> </li><li>Rudi Grobler - Timeslot Panel - an <a shape="rect" href="http://www.rudigrobler.net/Blog/timeslotpanel" shape="rect">
Outlook-like Calendar</a>, now ported to Silverlight </li></ul>
<br />Picks of the week!<br /><ul>
<li>Dan's pick: The <a shape="rect" href="http://www.dotnetfunda.com/articles/article1004-net-40-mef-faq-socket-plug-and-extension-.aspx?sms_ss=dotnetkicks" shape="rect">
.NET 4.0 MEF FAQ</a> with hilarious drawings </li><li>Brian's pick: Trossen Robotics - <a shape="rect" href="http://blog.trossenrobotics.com/2010/08/24/interbotix-robot-turrets/" shape="rect">
Interbotix Robot Turrets</a> </li></ul>
<a shape="rect" shape="rect"><br /><br /></a> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:0606e2f8d1a94b68ace69de901861e5a">]]></description>
      <comments>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-WP7-RTMs-Future-of-Silverlight-Excel-Importer-Robot-Gun-Turrets</comments>
      <itunes:summary>This week on Channel 9, Dan and Brian discuss the week&#39;s top developer news, including:

Windows Phone Blog - Terry Myerson - 
Windows Phone 7 RTM&#39;d Dave Anson - 
LayoutTransformer assembly enables WPF-style layout transformations in WP7 Indy from Oz - 
Windows Phone 7 Listbox pagination with MVVM Light and Application Bar LessThanDot - Lazy DBA Series shows how to easily 
import Excel data via SQL Server wizards, via 
Alvin Ashcraft SDL Team blog - Microsoft 
Security Development Lifecycle to be licensed under Creative Commons IE Team Blog - 
Performance profiling different browser subsystems for popular Web sites Coding4Fun - Peter Brownstein &amp;amp; Peter Juchniewicz - 
Building WEIShare, the Windows and Web app to share Windows Experience Index scores
Brad Becker - The 
Future of Silverlight Web Camps TV - 
OData Overview with Jonathan Carter&amp;nbsp; Rudi Grobler - Timeslot Panel - an 
Outlook-like Calendar, now ported to Silverlight 
Picks of the week!
Dan&#39;s pick: The 
.NET 4.0 MEF FAQ with hilarious drawings Brian&#39;s pick: Trossen Robotics - 
Interbotix Robot Turrets 
</itunes:summary>
      <itunes:duration>1149</itunes:duration>
      <link>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-WP7-RTMs-Future-of-Silverlight-Excel-Importer-Robot-Gun-Turrets</link>
      <pubDate>Fri, 03 Sep 2010 23:28:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-WP7-RTMs-Future-of-Silverlight-Excel-Importer-Robot-Gun-Turrets</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/570980_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/570980_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/0980/570980/ThisWeekC9Sept32010_320_ch9.jpg" height="240" width="320"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/0980/570980/ThisWeekC9Sept32010_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/0980/570980/ThisWeekC9Sept32010_85_ch9.jpg" height="64" width="85"></media:thumbnail>
      <media:group>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/0980/570980/ThisWeekC9Sept32010_2MB_ch9.wmv" expression="full" duration="1149" fileSize="269772785" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/0980/570980/ThisWeekC9Sept32010_ch9.mp3" expression="full" duration="1149" fileSize="9194677" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/0980/570980/ThisWeekC9Sept32010_ch9.mp4" expression="full" duration="1149" fileSize="119264933" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/0980/570980/ThisWeekC9Sept32010_ch9.wma" expression="full" duration="1149" fileSize="9299353" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/0980/570980/ThisWeekC9Sept32010_ch9.wmv" expression="full" duration="1149" fileSize="221900325" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/0980/570980/ThisWeekC9Sept32010_Zune_ch9.wmv" expression="full" duration="1149" fileSize="159980374" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ecn.channel9.msdn.com/o9/ch9/0980/570980/ThisWeekC9Sept32010_ch9.wmv" length="221900325" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Brian Keller</dc:creator>
      <itunes:author>Brian Keller</itunes:author>
      <slash:comments>7</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-WP7-RTMs-Future-of-Silverlight-Excel-Importer-Robot-Gun-Turrets/RSS</wfw:commentRss>
      <category>Excel</category>
      <category>Office</category>
      <category>Robotics</category>
      <category>Silveright</category>
      <category>Silverlight</category>
      <category>Windows Phone 7</category>
      <category>WP7</category>
    </item>
  <item>
      <title>Surface Driven Robot</title>
      <description><![CDATA[The Microsoft Surface Blog is linking to a Doctoral Thesis Defense that will be streaming live at 1PM eastern today (in 9 minutes) that will preview a system to directly control robots via a Microsoft Surface Computer. <br><br>For more details see the <a shape="rect" href="http://blogs.msdn.com/b/surface/archive/2010/08/23/live-presentation-robot-command-and-control-on-surface.aspx" shape="rect">Surface Blog</a>, or watch the live stream <a shape="rect" href="http://tinychat.com/mmiciredefense" shape="rect">here</a>.  <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:c54a6566d5e34f1fa6f59e100102b2a8">]]></description>
      <comments>http://channel9.msdn.com/Blogs/LarryLarsen/Surface-Driven-Robot</comments>
      <itunes:summary>The Microsoft Surface Blog is linking to a Doctoral Thesis Defense that will be streaming live at 1PM eastern today (in 9 minutes) that will preview a system to directly control robots via a Microsoft Surface Computer. For more details see the Surface Blog, or watch the live stream here. </itunes:summary>
      <link>http://channel9.msdn.com/Blogs/LarryLarsen/Surface-Driven-Robot</link>
      <pubDate>Mon, 23 Aug 2010 13:54:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/LarryLarsen/Surface-Driven-Robot</guid>      
      <dc:creator>Larry Larsen</dc:creator>
      <itunes:author>Larry Larsen</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/LarryLarsen/Surface-Driven-Robot/RSS</wfw:commentRss>
      <category>Robotics</category>
      <category>Robotics Studio</category>
      <category>Surface</category>
      <category>surface computing</category>
    </item>
  <item>
      <title>Microsoft Robotics Developer Studio update with Trevor Taylor</title>
      <description><![CDATA[With the launch of the new&nbsp;<a shape="rect" href="http://blogs.msdn.com/b/msroboticsstudio/archive/2010/05/20/microsoft-announces-robotics-developer-studio-2008-r3.aspx" shape="rect">R3 version of Microsoft Robotics Developer Studio</a> I sat down to talk
 about the product with Trevor Taylor, Program Manager with the <a shape="rect" href="http://www.microsoft.com/robotics/" shape="rect">
Microsoft Robotics product group</a>.<br />&nbsp;<br />Microsoft Robotics combines a number of components to make up a robotics system including Concurrency and Coordination Runtime (CCR), Decentralized Software Services (DSS),&nbsp;Visual Programming Language (VPL) and a Visual Simulation Environment (VSE).
<br /><br />If your robotic interests go beyond creating hobbyist robots and onto .NET based robotics then spend a few moments to get an update from Trevor and also learn how a group of students from the&nbsp;<a shape="rect" href="http://www.umich.edu/" shape="rect">University
 Of Michigan</a> worked with <a shape="rect" href="http://blogs.msdn.com/b/innov8showcase/archive/2010/05/21/ford-and-microsoft-showcase-fiestaware-custom-application-platform.aspx" shape="rect">
Ford and Microsoft Robotics&nbsp;</a>to add a custom application platform to the car and build the next generation of in car applications.<br /><br />You can find additional code samples at <a shape="rect" href="http://mrdssamples.codeplex.com/" shape="rect">
http://mrdssamples.codeplex.com/</a><br /><br />Finally did I mention that Microsoft Robotics Developer Studio is now free? - you can download it
<a shape="rect" href="http://go.microsoft.com/fwlink/?LinkID=190572" shape="rect">
here</a><a shape="rect" href="http://mrdssamples.codeplex.com/" shape="rect"><br /><br /></a>
<p>Enjoy the show!</p>
<p>John O'Donnell Microsoft Dynamics ISV Architect Evangelist<br />Microsoft Corporation<br /><a shape="rect" href="http://blogs.msdn.com/jodonnell" shape="rect">http://blogs.msdn.com/jodonnell</a><br /><a shape="rect" href="http://blogs.msdn.com/usisvde" shape="rect">http://blogs.msdn.com/usisvde</a><br /><a shape="rect" href="http://www.twitter.com/jodonnel" shape="rect">http://www.twitter.com/jodonnel</a>
</p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:6491f4646a974a7499009dea00a15f36">]]></description>
      <comments>http://channel9.msdn.com/Blogs/jodonnell/Microsoft-Robotics-Developer-Studio-update-with-Trevor-Taylor</comments>
      <itunes:summary>With the launch of the new&amp;nbsp;R3 version of Microsoft Robotics Developer Studio I sat down to talk
 about the product with Trevor Taylor, Program Manager with the 
Microsoft Robotics product group.&amp;nbsp;Microsoft Robotics combines a number of components to make up a robotics system including Concurrency and Coordination Runtime (CCR), Decentralized Software Services (DSS),&amp;nbsp;Visual Programming Language (VPL) and a Visual Simulation Environment (VSE).
If your robotic interests go beyond creating hobbyist robots and onto .NET based robotics then spend a few moments to get an update from Trevor and also learn how a group of students from the&amp;nbsp;University
 Of Michigan worked with 
Ford and Microsoft Robotics&amp;nbsp;to add a custom application platform to the car and build the next generation of in car applications.You can find additional code samples at 
http://mrdssamples.codeplex.com/Finally did I mention that Microsoft Robotics Developer Studio is now free? - you can download it

here
Enjoy the show! 
John O&#39;Donnell Microsoft Dynamics ISV Architect EvangelistMicrosoft Corporationhttp://blogs.msdn.com/jodonnellhttp://blogs.msdn.com/usisvdehttp://www.twitter.com/jodonnel
 
</itunes:summary>
      <link>http://channel9.msdn.com/Blogs/jodonnell/Microsoft-Robotics-Developer-Studio-update-with-Trevor-Taylor</link>
      <pubDate>Wed, 14 Jul 2010 20:34:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/jodonnell/Microsoft-Robotics-Developer-Studio-update-with-Trevor-Taylor</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/561185_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/561185_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/4/8/9/5/3/5/MSRoboticsFY11_320_ch9.png" height="240" width="320"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/4/8/9/5/3/5/MSRoboticsFY11_512_ch9.png" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/4/8/9/5/3/5/MSRoboticsFY11_85_ch9.png" height="64" width="85"></media:thumbnail>
      <media:group>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4/8/9/5/3/5/MSRoboticsFY11_2MB_ch9.wmv" expression="full" fileSize="600209778" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4/8/9/5/3/5/MSRoboticsFY11_ch9.mp3" expression="full" fileSize="7160282" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4/8/9/5/3/5/MSRoboticsFY11_ch9.mp4" expression="full" fileSize="85069997" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4/8/9/5/3/5/MSRoboticsFY11_ch9.wma" expression="full" fileSize="7241613" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4/8/9/5/3/5/MSRoboticsFY11_ch9.wmv" expression="full" fileSize="137714049" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4/8/9/5/3/5/MSRoboticsFY11_Zune_ch9.wmv" expression="full" fileSize="92194101" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ecn.channel9.msdn.com/o9/ch9/4/8/9/5/3/5/MSRoboticsFY11_ch9.wmv" length="137714049" type="video/x-ms-wmv"></enclosure>
      <dc:creator>John O&#39;Donnell</dc:creator>
      <itunes:author>John O&#39;Donnell</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/jodonnell/Microsoft-Robotics-Developer-Studio-update-with-Trevor-Taylor/RSS</wfw:commentRss>
      <category>CCR</category>
      <category>DSS</category>
      <category>FY11</category>
      <category>jodonnel</category>
      <category>Microsoft Robotics</category>
      <category>Microsoft Robotics Developer Studio</category>
      <category>Robotics</category>
      <category>VPL</category>
    </item>
  <item>
      <title>Coding4Fun Cannon – Coding for Windows Phone 7</title>
      <description><![CDATA[<p><strong>In this multipart article series, we’ll cover:</strong></p>
<ol>
<li><a href="http://blogs.msdn.com/coding4fun/archive/2010/03/16/9979874.aspx">Project overview</a> </li><li><a href="http://blogs.msdn.com/b/coding4fun/archive/2010/06/13/my_2D00_microsoft_2D00_teched_2D00_talk.aspx">Developing the phone application</a>
</li><li><a href="http://blogs.msdn.com/coding4fun/archive/2010/04/21/10000413.aspx">Building the robot</a>
</li><li><a href="http://blogs.msdn.com/b/coding4fun/archive/2010/09/09/10059924.aspx">Creating the phone user experience</a>
</li></ol>
<p>
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="645" height="365">
<param name="source" value="http://www.msteched.com/ClientBin/players/VideoPlayer2009_03_27.xap" />
<param name="initParams" value="m=http://ecn.channel9.msdn.com/o9/te/NorthAmerica/2010/wmv/WPH314.wmv,autostart=false,autohide=true,showembed=true, thumbnail=http://www.msteched.com/Skins/TechEdOnline/Styles/images/DefaultPlayerBackground.png, postid=0" />
<param name="background" value="#00FFFFFF" />
<a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;">
<img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/>
</a>
</object>
</p>
<p><a href="http://www.msteched.com/2010/NorthAmerica/WPH314">Session WPH 314 – Coding4Fun: Learning Windows Phone 7 Development by creating a robotic t-shirt cannon!</a></p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:bf7849e687e34940ba0d9e7600c92a8c">]]></description>
      <comments>http://channel9.msdn.com/coding4fun/articles/Coding4Fun-Cannon--Coding-for-Windows-Phone-7</comments>
      <itunes:summary>In this multipart article series, we’ll cover: 

Project overview Developing the phone application
Building the robot
Creating the phone user experience










 
Session WPH 314 – Coding4Fun: Learning Windows Phone 7 Development by creating a robotic t-shirt cannon! 
</itunes:summary>
      <link>http://channel9.msdn.com/coding4fun/articles/Coding4Fun-Cannon--Coding-for-Windows-Phone-7</link>
      <pubDate>Sun, 13 Jun 2010 17:44:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/coding4fun/articles/Coding4Fun-Cannon--Coding-for-Windows-Phone-7</guid>      
      <dc:creator>Clint Rutkas</dc:creator>
      <itunes:author>Clint Rutkas</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/coding4fun/articles/Coding4Fun-Cannon--Coding-for-Windows-Phone-7/RSS</wfw:commentRss>
      <category>ASP.NET</category>
      <category>Robotics</category>
      <category>Silverlight</category>
      <category>Windows Phone</category>
    </item>
  <item>
      <title>Ping 59: Private Cloud strategy, Gadget predictions, Microsoft is the most social company, Free Robotics</title>
      <description><![CDATA[Take a break from your hectic day to join Laura &amp; Paul as they bring you all the top stories that were being sent around Microsoft this week. Stories like :<br /><br /><a shape="rect" href="http://arstechnica.com/microsoft/news/2010/05/redmond-releases-appfabric-biztalk-betas-for-on-premises-clouds.ars?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=rss" shape="rect">A Private Cloud</a><br /><a shape="rect" href="http://gizmodo.com/5541969/bill-gates-told-steve-jobs-about-the-ipad-in-2007" shape="rect">Bill Gates: Device vision- back in 2007</a><br /><a shape="rect" href="http://mashable.com/2010/05/18/social-media-company-employees/" shape="rect">Microsoft is so&nbsp;VERY Social</a><br /><a shape="rect" href="http://spectrum.ieee.org/automaton/robotics/robotics-software/052010-microsoft-shifts-robotics-strategy-makes-robotics-studio-available-free" shape="rect">Robotics for FREE</a>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:169dc040ecc247fda47e9deb000c12bd">]]></description>
      <comments>http://channel9.msdn.com/Shows/PingShow/Ping-59-Private-Cloud-strategy-idea-for-the-iPad-Microsoft-is-the-most-social-company</comments>
      <itunes:summary>Take a break from your hectic day to join Laura &amp;amp; Paul as they bring you all the top stories that were being sent around Microsoft this week. Stories like :A Private CloudBill Gates: Device vision- back in 2007Microsoft is so&amp;nbsp;VERY SocialRobotics for FREE
</itunes:summary>
      <itunes:duration>908</itunes:duration>
      <link>http://channel9.msdn.com/Shows/PingShow/Ping-59-Private-Cloud-strategy-idea-for-the-iPad-Microsoft-is-the-most-social-company</link>
      <pubDate>Mon, 24 May 2010 22:55:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/PingShow/Ping-59-Private-Cloud-strategy-idea-for-the-iPad-Microsoft-is-the-most-social-company</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/551601_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/551601_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/1/0/6/1/5/5/Ping59_320_ch9.png" height="240" width="320"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/1/0/6/1/5/5/Ping59_512_ch9.png" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/1/0/6/1/5/5/Ping59_85_ch9.png" height="64" width="85"></media:thumbnail>
      <media:group>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/1/0/6/1/5/5/Ping59_2MB_ch9.wmv" expression="full" duration="908" fileSize="271658917" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/1/0/6/1/5/5/Ping59_ch9.mp3" expression="full" duration="908" fileSize="7273185" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/1/0/6/1/5/5/Ping59_ch9.mp4" expression="full" duration="908" fileSize="156693894" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/1/0/6/1/5/5/Ping59_ch9.wma" expression="full" duration="908" fileSize="7358769" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/1/0/6/1/5/5/Ping59_ch9.wmv" expression="full" duration="908" fileSize="199554245" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/1/0/6/1/5/5/Ping59_Zune_ch9.wmv" expression="full" duration="908" fileSize="127618297" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ecn.channel9.msdn.com/o9/ch9/1/0/6/1/5/5/Ping59_ch9.wmv" length="199554245" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Laura Foy</dc:creator>
      <itunes:author>Laura Foy</itunes:author>
      <slash:comments>18</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/PingShow/Ping-59-Private-Cloud-strategy-idea-for-the-iPad-Microsoft-is-the-most-social-company/RSS</wfw:commentRss>
      <category>Cloud</category>
      <category>Cloud Computing</category>
      <category>iPad</category>
      <category>Robotics</category>
    </item>
  <item>
      <title>Coding4Fun Cannon – Building the Robot</title>
      <description><![CDATA[
<p>We have a chicken or egg issue here. Do we talk about how to build the robot, or about the software needed to run it? Since the hardware choices directly determine how the software will be developed, we have to think about how to make the robot safe and
 at the same time functional. No one wants a 100lb robo
<p>We have a chicken or egg issue here. Do we talk about how to build the robot, or about the software needed to run it? Since the hardware choices directly determine how the software will be developed, we have to think about how to make the robot safe and
 at the same time functional. No one wants a 100lb robot with a pressurized co2 tank and armed t-shirt cannons running wild. This article won’t really talk about code, since that is a different, upcoming article; rather, this article will explain how to build
 the physical robot, code-named Betty. To find out about the Windows Phone 7 application, code-named Frank, wait for the next article.
</p>
<table cellpadding="0" cellspacing="0" border="0">
<tbody>
<tr>
<td width="175" valign="top">
<p>Clint Rutkas - Microsoft <br>
Coding4Fun Ninja</p>
</td>
<td width="463" valign="top">
<p><b>Source Code:</b> <a href="http://cannon.codeplex.com/">Download</a></p>
<p><b>Difficulty:</b> Software Medium - Hardware Advanced <br>
<b>Time Required:</b> 2 weeks <br>
<b>Software Needed:</b> <a href="http://www.microsoft.com/express/download/">Visual C# 2010 Express</a>,
<a href="http://www.microsoft.com/express/">Visual Studio Phone Developer Express</a>
<br>
<b>Hardware:</b> <a href="http://www.servocity.com/html/pan___tilt_packages.html">
Servo City Pan-Tilt</a>, <a href="http://www.robotcombat.com/products/MAG-BKT120.html">
Robot Marketplace battlebot kit</a>, <a href="http://www.trossenrobotics.com/p/phidgets-004.aspx">
Phidget 0/0/4 Relay board</a>, <a href="http://www.trossenrobotics.com/p/phidget-advanced-usb-servo-controller.aspx">
Phidget Advance Servo controller</a>, <a href="http://aircannonsinc.com/">t-shirt cannons</a>, nuts and bolts, polycarbonate, and a lot of coffee / soda.</p>
</td>
</tr>
</tbody>
</table>
<h3><span>WARNING: </span></h3>
<blockquote>
<p><span>This project deals with voltages and amperages that could hurt you and your electronics. Use voltmeters and common sense before randomly connecting and touching wires.</span></p>
</blockquote>
<h4>In this multipart article series, we’ll cover:</h4>
<ol>
<li><a href="http://blogs.msdn.com/coding4fun/archive/2010/03/16/9979874.aspx">Project overview</a> </li><li><a href="http://blogs.msdn.com/b/coding4fun/archive/2010/06/13/my_2d00_microsoft_2d00_teched_2d00_talk.aspx">Developing the phone application</a>
</li><li><a href="http://blogs.msdn.com/coding4fun/archive/2010/04/21/10000413.aspx">Building the robot</a>
</li><li><a href="http://blogs.msdn.com/b/coding4fun/archive/2010/09/09/10059924.aspx">Creating the phone user experience</a>
</li></ol>
<h3>Part 9c into Part 143B? What?</h3>
<p>For a project like this, there are no real instructions. It is a custom project. If I was asked to build another one, chances are it would look different. I spent a lot of time drawing out and talking to people, figuring out how to get all the parts to play
 nicely. Only then did I go down to my local plastics place (I recommend TAPs Plastic in Seattle) to give them a technical drawing of what I wanted. The parts will vary depending on the look / feel you want. I wish I could give you part drawings that you could
 replicate, but I don’t think they would do you much good. What I will do, however, is give you a ton of pictures, which should point you in the right direction.</p>
<h3>Research and development</h3>
<p>Typically, I research parts and features to death. However, due to the two-week time constraint of being ready for the Mix conference, I went with what I knew worked for my previous projects while focusing on how to make Betty self-contained since requiring
 Betty to be plugged in would defeat the purpose of having her be a robot. The design of Betty was broken down into a few key parts: driving, aiming, shooting, brains, and power.</p>
<p><strong>Primary part list:</strong></p>
<ul>
<li>1x – <a href="http://www.robotcombat.com/products/MAG-BKT120.html">Battlekit medium kit with stock batteries</a>
</li><li>1x – Cisco Linksys gigabit wireless router </li><li>1x – 13” HP Envy laptop </li><li>1x – <a href="http://www.trossenrobotics.com/p/phidgets-004.aspx">Phidget 0/0/4 Relay board</a>
</li><li>1x – <a href="http://www.trossenrobotics.com/p/phidget-advanced-usb-servo-controller.aspx">
Phidget Advanced Servo Controller</a> </li><li>1x – <a href="http://www.servocity.com/html/pan___tilt_packages.html">Servo City Pan-Tilt 985 series</a>
</li><li>2x – <a href="http://aircannonsinc.com/">Burst 175 T-Shirt cannons (with electronic solenoid values)</a>
</li><li>2x – Odyssey PC680MJ 12V 17AH Batteries </li><li>2x – <a href="http://www.castlecreations.com/products/ccbec.html">Castle BECs</a> (set to 6V) (Battery Elimination Circuit)
</li><li>1x – <a href="http://www.castlecreations.com/products/ccbec.html">Castle Pro BECs</a> (set to 12V, has two outputs)
</li><li>1x – 10lb CO2 tank </li><li>1x – Pressure valve (Able to adjust to 300 PSI) </li><li>1x – Serial port to USB Adapter </li></ul>
<h4>Driving a robot</h4>
<p>Without knowing the weight of certain parts, I had to choose a base that could handle the load and be big enough to support everything I loaded onto Betty. From building random, previous robots, I knew of a company, Robot Marketplace, with a ton of internet
 parts, including full bodies. I decided a medium version complete with stock batteries and motors would fit my needs. The batteries are configured here in series to boost the voltage from 12volt to 24volt. The kit comes with an AmpFlow motor controller, which
 is actually a rebranded Roboteq controller. This connects to the computer via a serial to USB adapter. You’ll also have to get the Roboteq software to configure the motor controller to work off RS232 (Serial Port).</p>
<h4>Shooting and aiming a t-shirt cannon </h4>
<p>The cannons are Burst 175 T-Shirt cannons with electronic solenoid valves, allowing them to be fired with the Phidget 0/0/4 Relay board. The cannons are mounted onto a Servo City Pan-Tilt which is controlled by a Phidget Advanced Servo Controller. The pressure
 on the robot is fixed.</p>
<h4>Having a brain and communicating</h4>
<p>Since Dan and myself had features in the initial planning that could require heavy processing, we decided it was best to have a laptop control everything, though initially, ideas of using the .Net Micro-framework were put out there as well. We decided on
 a 13” HP Envy to be the brains of the operation. One thing we loved about this laptop is the extended battery, which snaps onto the bottom to give it a 14-hour life!</p>
<p>We used a Linksys wireless router for getting the phone and the laptop to be able to talk to one another. For the keynote, we had to leverage a wired connection, but we’ll typically use a wireless connection between Betty and Frank.</p>
<h4>Powering everything</h4>
<p>The battlebot kit comes with batteries to power the motors, but we still needed to power everything else. I went with 2 massive 12volt 17-amp hour batteries, which just barely fit the case, and I wired them in series to boost the voltage. This would give
 me the massive amount of energy needed to power all of the random electronics. Since nothing on this robot, other than the motors, runs at 24v, we adjusted the voltage. This is where the BEC (Battery Elimination Circuit) came into play. Here is the breakdown:</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image002_5B12_5D.jpg"><img height="380" width="500" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image002_5B12_5D_thumb.jpg" alt="clip_image002[12]" border="0" title="clip_image002[12]"></a></p>
<p>If you use different parts, you’ll have to pay attention to the voltages. This is one reason why I like the Castle BEC units, I could just alter the voltage instead of buying a new BEC.</p>
<p>I also highly recommend installing on/off switches. If you plug stuff in with this type of voltage, you’ll get sparks, which carbonize the plugs.</p>
<h4>Building knowledge brain dump</h4>
<p>To mount the top of the robot to the chassis, I had to get a drill press and drill the sidewall of the front and back plate. I decided to save some money and buy a low-end drill press for this, but having a higher end drill press would have made my life
 a bit less stressful. Drilling it had 1/16<sup>th</sup> of an inch on either side to punch through. After drilling, I used a 10-24 tap to put in screw threads so I could use thumbscrews to mount the two together. The two plates were T-6 aluminum, so I used
 WD-40 to help lubricate both drilling and tapping. If you’ve never tapped a hole before, make sure you go a half turn in and then a quarter turn out. This helps break up the little bits of metal in the hole and so helps prevent the tap from breaking.</p>
<p>One thing to be aware of is the movement of the Pan-Tilt and how this relates to mounting the cannons. We had programmatic stops so the cannons didn’t go too far up or down or rip out any cords by rotating too much.</p>
<p>Another helpful tip is to use extra wire so you can move stuff around. Then, once you figure out final layout, either trim the extra wire or install entirely new wiring.</p>
<p>My final tip, and the tip to follow if you only follow one, is the following: use a Voltmeter before you connect anything together. I failed to follow this advice and had two wires switched, which reversed the polarity of the power. When I turned it on,
 I had a nice electrical fire break out, which destroyed 3 BECs. This was a hundred dollar mistake, which took a half-day to repair, and it could have been far worse. Verifying and re-verifying the voltage will not only keep you safe, it will keep you from
 having to buy new parts after explaining why the hallway smells like burnt plastic.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image004_5B12_5D.jpg"><img height="240" width="195" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image004_5B12_5D_thumb.jpg" alt="clip_image004[12]" border="0" title="clip_image004[12]"></a></p>
<h4>Hey, wait a second, you have a custom part!</h4>
<p>Yes, yes I do. It is a part I made to help simplify the wiring on my automated bartender, drinktendr . It is designed to have a single power cord in, the positive wires go to the relay and back again, and have proper power cords go back out to the target
 device. You can wire this up without the board; it just will be a bit messier. If you want to get the boards created, the file for the PCB is in Codeplex in the source code area in the Files directory.</p>
<h3>Pictures should help</h3>
<p>I think the two primary areas that will help show the who/what/when/where/why/how are overviews of the top and of the cannon mountings.</p>
<h4>Chassis</h4>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image006_5B12_5D.jpg"><img height="427" width="475" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image006_5B12_5D_thumb.jpg" alt="clip_image006[12]" border="0" title="clip_image006[12]"></a></p>
<h4>Cannon</h4>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image008_5B12_5D.jpg"><img height="254" width="500" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image008_5B12_5D_thumb.jpg" alt="clip_image008[12]" border="0" title="clip_image008[12]"></a></p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image010_5B12_5D.jpg"><img height="233" width="500" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image010_5B12_5D_thumb.jpg" alt="clip_image010[12]" border="0" title="clip_image010[12]"></a></p>
<h4>Body Top</h4>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image012_5B12_5D.jpg"><img height="468" width="425" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image012_5B12_5D_thumb.jpg" alt="clip_image012[12]" border="0" title="clip_image012[12]"></a></p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image013_5B12_5D.jpg"><img height="375" width="500" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image013_5B12_5D_thumb.jpg" alt="clip_image013[12]" border="0" title="clip_image013[12]"></a></p>
<h4>Why doesn’t mine look good yet?!?!</h4>
<p>It takes time to get all the mountings and wiring installed correctly. We had to demo to
<a href="http://weblogs.asp.net/scottgu/">the Gu</a> using a robot that had wires all over the place! It wasn’t pretty, but the key thing is that it got the job done. Only after I got the functionality working did I shorten wires and do some cord clean-up.
 I stated this above, but I’ll reiterate the fact, that having longer wires helped me move stuff around while being able to adapt to new layouts.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image015_5B12_5D.jpg"><img height="357" width="496" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/10000413/clip_image015_5B12_5D_thumb.jpg" alt="clip_image015[12]" border="0" title="clip_image015[12]"></a></p>
<h3>Conclusion</h3>
<p>Building two Betties was a fun and hard project. By leveraging past projects, we completed the project quickly without compromising functionality.</p>
<p>In upcoming articles, we’ll talk about how to program Betty, as well as how to get the phone to talk to her. Also, if I missed a section of building out Betty that you want me to cover, please comment and I’ll happily explain more of what I did.</p>
<h3>About The Author</h3>
<p>Clint runs Coding4Fun and is on the <a href="http://channel9.msdn.com/">Channel 9</a> team at Microsoft. Clint has yet to have a project he can’t catch on fire J. If you need to get a hold of Clint, his email is
<a href="mailto:clint.rutkas@microsoft.com">clint.rutkas@microsoft.com</a>, his personal blog is at
<a href="http://www.betterthaneveryone.com">http://www.betterthaneveryone.com</a> and his twitter account is
<a href="http://twitter.com/clintrutkas">@ClintRutkas</a>.</p>
t with a pressurized co2 tank and armed t-shirt cannons running wild. This article won’t really talk about code, since that is a different, upcoming article; rather, this article will explain how to build
 the physical robot, code-named Betty. To find out about the Windows Phone 7 application, code-named Frank, wait for the next article.
</p>
<table cellpadding="0" cellspacing="0" border="0">
<tbody>
<tr>
<td width="175" valign="top">
<p>Clint Rutkas - Microsoft <br>
Coding4Fun Ninja</p>
</td>
<td width="463" valign="top">
<p><b>Source Code:</b> <a href="http://cannon.codeplex.com/">Download</a></p>
<p><b>Difficulty:</b> Software Medium - Hardware Advanced <br>
<b>Time Required:</b> 2 weeks <br>
<b>Software Needed:</b> <a href="http://www.microsoft.com/express/download/">Visual C# 2010 Express</a>,
<a href="http://www.microsoft.com/express/">Visual Studio Phone Developer Express</a>
<br>
<b>Hardware:</b> <a href="http://www.servocity.com/html/pan___tilt_packages.html">
Servo City Pan-Tilt</a>, <a href="http://www.robotcombat.com/products/MAG-BKT120.html">
Robot Marketplace battlebot kit</a>, <a href="http://www.trossenrobotics.com/p/phidgets-004.aspx">
Phidget 0/0/4 Relay board</a>, <a href="http://www.trossenrobotics.com/p/phidget-advanced-usb-servo-controller.aspx">
Phidget Advance Servo controller</a>, <a href="http://aircannonsinc.com/">t-shirt cannons</a>, nuts and bolts, polycarbonate, and a lot of coffee / soda.</p>
</td>
</tr>
</tbody>
</table>
<h3><span>WARNING: </span></h3>
<blockquote>
<p><span>This project deals with voltages and amperages that could hurt you and your electronics. Use voltmeters and common sense before randomly connecting and touching wires.</span></p>
</blockquote>
<h4>In this multipart article series, we’ll cover:</h4>
<ol>
<li><a href="http://blogs.msdn.com/coding4fun/archive/2010/03/16/9979874.aspx">Project overview</a> </li><li><a href="http://blogs.msdn.com/b/coding4fun/archive/2010/06/13/my_2d00_microsoft_2d00_teched_2d00_talk.aspx">Developing the phone application</a>
</li><li><a href="http://blogs.msdn.com/coding4fun/archive/2010/04/21/10000413.aspx">Building the robot</a>
</li><li><a href="http://blogs.msdn.com/b/coding4fun/archive/2010/09/09/10059924.aspx">Creating the phone user experience</a>
</li></ol>
<h3>Part 9c into Part 143B? What?</h3>
<p>For a project like this, there are no real instructions. It is a custom project. If I was asked to build another one, chances are it would look different. I spent a lot of time drawing out and talking to people, figuring out how to get all the parts to play
 nicely. Only then did I go down to my local plastics place (I recommend TAPs Plastic in Seattle) to give them a technical drawing of what I wanted. The parts will vary depending on the look / feel you want. I wish I could give you part drawings that you could
 replicate, but I don’t think they would do you much good. What I will do, however, is give you a ton of pictures, which should point you in the right direction.</p>
<h3>Research and development</h3>
<p>Typically, I research parts and features to death. However, due to the two-week time constraint of being ready for the Mix conference, I went with what I knew worked for my previous projects while focusing on how to make Betty self-contained since requiring
 Betty to be plugged in would defeat the purpose of having her be a robot. The design of Betty was broken down into a few key parts: driving, aiming, shooting, brains, and power.</p>
<p><strong>Primary part list:</strong></p>
<ul>
<li>1x – <a href="http://www.robotcombat.com/products/MAG-BKT120.html">Battlekit medium kit with stock batteries</a>
</li><li>1x – Cisco Linksys gigabit wireless router </li><li>1x – 13” HP Envy laptop </li><li>1x – <a href="http://www.trossenrobotics.com/p/phidgets-004.aspx">Phidget 0/0/4 Relay board</a>
</li><li>1x – <a href="http://www.trossenrobotics.com/p/phidget-advanced-usb-servo-controller.aspx">
Phidget Advanced Servo Controller</a> </li><li>1x – <a href="http://www.servocity.com/html/pan___tilt_packages.html">Servo City Pan-Tilt 985 series</a>
</li><li>2x – <a href="http://aircannonsinc.com/">Burst 175 T-Shirt cannons (with electronic solenoid values)</a>
</li><li>2x – Odyssey PC680MJ 12V 17AH Batteries </li><li>2x – <a href="http://www.castlecreations.com/products/ccbec.html">Castle BECs</a> (set to 6V) (Battery Elimination Circuit)
</li><li>1x – <a href="http://www.castlecreations.com/products/ccbec.html">Castle Pro BECs</a> (set to 12V, has two outputs)
</li><li>1x – 10lb CO2 tank </li><li>1x – Pressure valve (Able to adjust to 300 PSI) </li><li>1x – Serial port to USB Adapter </li></ul>
<h4>Driving a robot</h4>
<p>Without knowing the weight of certain parts, I had to choose a base that could handle the load and be big enough to support everything I loaded onto Betty. From building random, previous robots, I knew of a company, Robot Marketplace, with a ton of internet
 parts, including full bodies. I decided a medium version complete with stock batteries and motors would fit my needs. The batteries are configured here in series to boost the voltage from 12volt to 24volt. The kit comes with an AmpFlow motor controller, which
 is actually a rebranded Roboteq controller. This connects to the computer via a serial to USB adapter. You’ll also have to get the Roboteq software to configure the motor controller to work off RS232 (Serial Port).</p>
<h4>Shooting and aiming a t-shirt cannon </h4>
<p>The cannons are Burst 175 T-Shirt cannons with electronic solenoid valves, allowing them to be fired with the Phidget 0/0/4 Relay board. The cannons are mounted onto a Servo City Pan-Tilt which is controlled by a Phidget Advanced Servo Controller. The pressure
 on the robot is fixed.</p>
<h4>Having a brain and communicating</h4>
<p>Since Dan and myself had features in the initial planning that could require heavy processing, we decided it was best to have a laptop control everything, though initially, ideas of using the .Net Micro-framework were put out there as well. We decided on
 a 13” HP Envy to be the brains of the operation. One thing we loved about this laptop is the extended battery, which snaps onto the bottom to give it a 14-hour life!</p>
<p>We used a Linksys wireless router for getting the phone and the laptop to be able to talk to one another. For the keynote, we had to leverage a wired connection, but we’ll typically use a wireless connection between Betty and Frank.</p>
<h4>Powering everything</h4>
<p>The battlebot kit comes with batteries to power the motors, but we still needed to power everything else. I went with 2 massive 12volt 17-amp hour batteries, which just barely fit the case, and I wired them in series to boost the voltage. This would give
 me the massive amount of energy needed to power all of the random electronics. Since nothing on this robot, other than the motors, runs at 24v, we adjusted the voltage. This is where the BEC (Battery Elimination Circuit) came into play. Here is the breakdown:</p>
<p><a href="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image002%5B12%5D.jpg"><img height="380" width="500" src="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image002%5B12%5D_thumb.jpg" alt="clip_image002[12]" border="0" title="clip_image002[12]"></a></p>
<p>If you use different parts, you’ll have to pay attention to the voltages. This is one reason why I like the Castle BEC units, I could just alter the voltage instead of buying a new BEC.</p>
<p>I also highly recommend installing on/off switches. If you plug stuff in with this type of voltage, you’ll get sparks, which carbonize the plugs.</p>
<h4>Building knowledge brain dump</h4>
<p>To mount the top of the robot to the chassis, I had to get a drill press and drill the sidewall of the front and back plate. I decided to save some money and buy a low-end drill press for this, but having a higher end drill press would have made my life
 a bit less stressful. Drilling it had 1/16<sup>th</sup> of an inch on either side to punch through. After drilling, I used a 10-24 tap to put in screw threads so I could use thumbscrews to mount the two together. The two plates were T-6 aluminum, so I used
 WD-40 to help lubricate both drilling and tapping. If you’ve never tapped a hole before, make sure you go a half turn in and then a quarter turn out. This helps break up the little bits of metal in the hole and so helps prevent the tap from breaking.</p>
<p>One thing to be aware of is the movement of the Pan-Tilt and how this relates to mounting the cannons. We had programmatic stops so the cannons didn’t go too far up or down or rip out any cords by rotating too much.</p>
<p>Another helpful tip is to use extra wire so you can move stuff around. Then, once you figure out final layout, either trim the extra wire or install entirely new wiring.</p>
<p>My final tip, and the tip to follow if you only follow one, is the following: use a Voltmeter before you connect anything together. I failed to follow this advice and had two wires switched, which reversed the polarity of the power. When I turned it on,
 I had a nice electrical fire break out, which destroyed 3 BECs. This was a hundred dollar mistake, which took a half-day to repair, and it could have been far worse. Verifying and re-verifying the voltage will not only keep you safe, it will keep you from
 having to buy new parts after explaining why the hallway smells like burnt plastic.</p>
<p><a href="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image004%5B12%5D.jpg"><img height="240" width="195" src="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image004%5B12%5D_thumb.jpg" alt="clip_image004[12]" border="0" title="clip_image004[12]"></a></p>
<h4>Hey, wait a second, you have a custom part!</h4>
<p>Yes, yes I do. It is a part I made to help simplify the wiring on my automated bartender, drinktendr . It is designed to have a single power cord in, the positive wires go to the relay and back again, and have proper power cords go back out to the target
 device. You can wire this up without the board; it just will be a bit messier. If you want to get the boards created, the file for the PCB is in Codeplex in the source code area in the Files directory.</p>
<h3>Pictures should help</h3>
<p>I think the two primary areas that will help show the who/what/when/where/why/how are overviews of the top and of the cannon mountings.</p>
<h4>Chassis</h4>
<p><a href="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image006%5B12%5D.jpg"><img height="427" width="475" src="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image006%5B12%5D_thumb.jpg" alt="clip_image006[12]" border="0" title="clip_image006[12]"></a></p>
<h4>Cannon</h4>
<p><a href="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image008%5B12%5D.jpg"><img height="254" width="500" src="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image008%5B12%5D_thumb.jpg" alt="clip_image008[12]" border="0" title="clip_image008[12]"></a></p>
<p><a href="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image010%5B12%5D.jpg"><img height="233" width="500" src="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image010%5B12%5D_thumb.jpg" alt="clip_image010[12]" border="0" title="clip_image010[12]"></a></p>
<h4>Body Top</h4>
<p><a href="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image012%5B12%5D.jpg"><img height="468" width="425" src="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image012%5B12%5D_thumb.jpg" alt="clip_image012[12]" border="0" title="clip_image012[12]"></a></p>
<p><a href="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image013%5B12%5D.jpg"><img height="375" width="500" src="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image013%5B12%5D_thumb.jpg" alt="clip_image013[12]" border="0" title="clip_image013[12]"></a></p>
<h4>Why doesn’t mine look good yet?!?!</h4>
<p>It takes time to get all the mountings and wiring installed correctly. We had to demo to
<a href="http://weblogs.asp.net/scottgu/">the Gu</a> using a robot that had wires all over the place! It wasn’t pretty, but the key thing is that it got the job done. Only after I got the functionality working did I shorten wires and do some cord clean-up.
 I stated this above, but I’ll reiterate the fact, that having longer wires helped me move stuff around while being able to adapt to new layouts.</p>
<p><a href="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image015%5B12%5D.jpg"><img height="357" width="496" src="http://blogs.msdn.com/blogfiles/coding4fun/WindowsLiveWriter/Coding4FunCannonBuildingtheRobot_F66E/clip_image015%5B12%5D_thumb.jpg" alt="clip_image015[12]" border="0" title="clip_image015[12]"></a></p>
<h3>Conclusion</h3>
<p>Building two Betties was a fun and hard project. By leveraging past projects, we completed the project quickly without compromising functionality.</p>
<p>In upcoming articles, we’ll talk about how to program Betty, as well as how to get the phone to talk to her. Also, if I missed a section of building out Betty that you want me to cover, please comment and I’ll happily explain more of what I did.</p>
<h3>About The Author</h3>
<p>Clint runs Coding4Fun and is on the <a href="http://channel9.msdn.com/">Channel 9</a> team at Microsoft. Clint has yet to have a project he can’t catch on fire J. If you need to get a hold of Clint, his email is
<a href="mailto:clint.rutkas@microsoft.com">clint.rutkas@microsoft.com</a>, his personal blog is at
<a href="http://www.betterthaneveryone.com">http://www.betterthaneveryone.com</a> and his twitter account is
<a href="http://twitter.com/clintrutkas">@ClintRutkas</a>.</p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:48351ce68553464f9cea9e7600c98d88">]]></description>
      <comments>http://channel9.msdn.com/coding4fun/articles/Coding4Fun-Cannon--Building-the-Robot</comments>
      <itunes:summary>
We have a chicken or egg issue here. Do we talk about how to build the robot, or about the software needed to run it? Since the hardware choices directly determine how the software will be developed, we have to think about how to make the robot safe and
 at the same time functional. No one wants a 100lb robo
We have a chicken or egg issue here. Do we talk about how to build the robot, or about the software needed to run it? Since the hardware choices directly determine how the software will be developed, we have to think about how to make the robot safe and
 at the same time functional. No one wants a 100lb robot with a pressurized co2 tank and armed t-shirt cannons running wild. This article won’t really talk about code, since that is a different, upcoming article; rather, this article will explain how to build
 the physical robot, code-named Betty. To find out about the Windows Phone 7 application, code-named Frank, wait for the next article.
 




Clint Rutkas - Microsoft 
Coding4Fun Ninja 


Source Code: Download 
Difficulty: Software Medium - Hardware Advanced 
Time Required: 2 weeks 
Software Needed: Visual C# 2010 Express,
Visual Studio Phone Developer Express

Hardware: 
Servo City Pan-Tilt, 
Robot Marketplace battlebot kit, 
Phidget 0/0/4 Relay board, 
Phidget Advance Servo controller, t-shirt cannons, nuts and bolts, polycarbonate, and a lot of coffee / soda. 




WARNING: 

This project deals with voltages and amperages that could hurt you and your electronics. Use voltmeters and common sense before randomly connecting and touching wires. 

In this multipart article series, we’ll cover:

Project overview Developing the phone application
Building the robot
Creating the phone user experience

Part 9c into Part 143B? What?
For a project like this, there are no real instructions. It is a custom project. If I was asked to build another one, chances are it would look different. I spent a lot of time drawing out and talking to people, figuring out how to get al</itunes:summary>
      <link>http://channel9.msdn.com/coding4fun/articles/Coding4Fun-Cannon--Building-the-Robot</link>
      <pubDate>Wed, 21 Apr 2010 21:31:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/coding4fun/articles/Coding4Fun-Cannon--Building-the-Robot</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/c4f/images/10000413_100.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/c4f/images/10000413_220.jpg" height="165" width="220"></media:thumbnail>      
      <dc:creator>Clint Rutkas</dc:creator>
      <itunes:author>Clint Rutkas</itunes:author>
      <slash:comments>2</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/coding4fun/articles/Coding4Fun-Cannon--Building-the-Robot/RSS</wfw:commentRss>
      <category>ASP.NET</category>
      <category>Robotics</category>
      <category>Silverlight</category>
      <category>Windows Phone</category>
    </item>
  <item>
      <title>Coding4Fun Cannon – Project Overview</title>
      <description><![CDATA[
<p>I think the best way I can describe this project is by telling the story of how I got into this. While playing a bit of xbox 360 at 7:52 p.m., I see a legendary email come in:</p>
<blockquote>
<p>Clint,</p>
<p>Scott Guthrie would really like to have a cannon on stage at MIX this year that would allow him to fire t-shirts into the audience.&nbsp; […]&nbsp; We thought it might be something that you could build based on the fun stuff you’ve done in the past. […] Do you think
 you could build something like that?&nbsp; Do you have the time to work on this for MIX?</p>
</blockquote>
<p>So the Coding4Fun team had two weeks to build two robots able to drive, aim, and shoot t-shirts during a MIX10 Keynote demo of unreleased software? Piece of cake.</p>
<p>The following info will explain the who, what, why, and how of the project in order to help you understand the project’s layout.</p>

<p align="center"><img height="333" width="500" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9979874//clip_image002_5B25_5D_thumb.jpg" alt="clip_image002[25]" border="0" title="clip_image002[25]">Picture by Vetala Hawkins - Filmateria
 Digital</p>
<h2>In this multipart article series, we’ll cover:</h2>
<ol>
<li><a href="http://blogs.msdn.com/coding4fun/archive/2010/03/16/9979874.aspx">Project overview</a> </li><li><a href="http://blogs.msdn.com/b/coding4fun/archive/2010/06/13/my_2D00_microsoft_2D00_teched_2D00_talk.aspx">Developing the phone application</a>
</li><li><a href="http://blogs.msdn.com/coding4fun/archive/2010/04/21/10000413.aspx">Building the robot</a>
</li><li><a href="http://blogs.msdn.com/b/coding4fun/archive/2010/09/09/10059924.aspx">Creating the phone user experience
</a></li></ol>
<h2>Say hello to my little friend</h2>
<p>Mid-February, we were asked to build a t-shirt shooting robot for the Mix conference on March 15<sup>th</sup>, 2010. This required us to pitch our vision and then research, build, test, and ship our project—all in about 3 weeks. After Scott Guthrie gave
 us approval based on our SketchFlow demo, we had to divide and conquer the application with only 2 weeks left to build the physical robot, the server software, and the phone software. And on top of all that, since we were consuming an unfinished product, everything
 had to have backup plans.</p>
<h2>Delegating workloads</h2>
<p>The work was broken up into logical sections:</p>
<ul>
<li><strong>Server and Robot (Codenamed: Betty)</strong>
<ul>
<li>Clint Rutkas handled this part </li></ul>
</li><li><strong>Phone (Codenamed: Frank)</strong>
<ul>
<li>Dan Fernandez worked on this </li></ul>
</li><li><strong>The phone user interface</strong>
<ul>
<li><a href="http://www.352media.com/">Web design company</a>, <a href="http://www.352media.com/">
352 Media</a> created the look/feel for us </li></ul>
</li><li><strong>Camera / MJPEG stream</strong>
<ul>
<li><a href="http://www.brianpeek.com/">Brian Peek</a> updated his code so it would work on pretty much any platform
</li></ul>
</li></ul>
<p>But wait, if we had a super-secret project, how did Brian and 352 work on it? We told them they were working on Silverlight out of browser applications! We didn’t tell them it was for the phone! We’re sneaky like that.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9979874//clip_image003_5B25_5D.png"><img height="277" width="544" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9979874//clip_image003_5B25_5D_thumb.png" alt="clip_image003[25]" border="0" title="clip_image003[25]"></a></p>
<h2>Frank and Betty sitting in a tree …</h2>
<p>So why did we use code names? Dan and I got a bit confused when referring to certain item ownerships and the codenames allowed us to chat about the project in non-secured areas so it just sounded like we were gossiping about two people, albeit in extremely
 nerdy conversations and extremely nerdy tones. If memory serves, I wanted to name the robot Frank after the character Frank the Take from the movie
<i>Old School</i>,<i> </i>but Dan had for some reason already jokingly referred to the robot as Betty and so the flip-flopped names stuck. During development, Betty and Frank fought and had some communication issues—just like a real couple. You may see references
 to Frank and Betty in the source code or throughout the series of articles on this project. Just remember, Frank is the phone and Betty is the Robot.
</p>
<h2>Design decisions</h2>
<p>At a conference like Mix or PDC, thousands of people cram into a single room, creating a massive amount of wireless interference. Keeping this in mind while considering the communications aspect of the project, we decided to have Betty make HTTP communication
 calls while physically wired into the network. This required us to have some type of web server on the robot. Given enough time, I’m pretty confident that I can get the entire robot working without having a computer onboard or being 100% phone powered but
 we had to be sure nothing would interfere with communication so wireless was out of the question.</p>
<p>Also, since this project was due in an extremely short period of time, a lot of component decisions were based on my past projects. We looked at network cameras that transmit H264, MPEG4, and MJPEG along with the idea of using live smooth streaming from
 the server onboard the robot. Basically, having a computer on Betty gave us more options in case something didn’t work.
</p>
<p>Due to the time crunch, every part had to be either on-hand or off-the-shelf. Creating custom parts takes a lot of time. So basically, my rule was that if it couldn’t be shipped to me in two days, I’d find something different to accomplish the task at hand.</p>
<p>Throughout development, Dan and I met in a SCRUM meeting first thing every morning to figure out what we should get done that day and to discuss any issues that were occurring. Here is Dan’s whiteboard after one of the final meetings before we flew out to
 the conference:</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9979874//clip_image005_5B25_5D.jpg"><img height="274" width="429" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9979874//clip_image005_5B25_5D_thumb.jpg" alt="clip_image005[25]" border="0" title="clip_image005[25]"></a></p>
<h2>Betty, you can be a real robot if you try</h2>
<p>Betty had to do three tasks: drive, aim, and shoot t-shirts. We used an HP Envy 13” laptop to manage everything and here is the hardware list per task:</p>
<ul>
<li><strong>Aiming:</strong>
<ul>
<li>Aiming was accomplished with the Servo City Pan-tilt and a Phidget advance servo controller.
</li></ul>
</li><li><strong>Shooting:</strong>
<ul>
<li>Shooting was accomplished with a Phidget 0/0/4 Relay controller, a drinktendr wiring board, and the t-shirt cannons.
</li></ul>
</li><li><strong>Driving:</strong>
<ul>
<li>Driving was made possible the battle-bot chassis by Robot Marketplace, which uses an Ampflow motor controller. This is the motor controller I used on my self-balancing skateboard project and I found out that it is actually a rebranded Roboteq motor controller.
 I highly recommend using the Roboteq software to configure and upgrade the firmware.
</li></ul>
</li></ul>
<p>Here is the first time Scott got to drive the robot and fire off a few test shots at real-world pressure all via the phone.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9979874//clip_image007_5B25_5D.jpg"><img height="374" width="500" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9979874//clip_image007_5B25_5D_thumb.jpg" alt="clip_image007[25]" border="0" title="clip_image007[25]"></a></p>
<h2>Seriously, you built it in 2 weeks?</h2>
<p>Yes, but we didn’t build just one. For redundancy, we had to build two Betty’s. If a part broke or something didn’t work, we had to be able to swap robots without anyone knowing. And for the record, I only had one very small electrical fire, which was due
 to a crossed wire. Having completed a few projects like this in the past, I knew what I’d get hung up and when I should ask for help. My experience completing previous projects also taught me which part vendors are the best.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9979874//clip_image009_5B25_5D.jpg"><img height="333" width="500" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9979874//clip_image009_5B25_5D_thumb.jpg" alt="clip_image009[25]" border="0" title="clip_image009[25]"></a></p>
<p>The robot was under constant work and my desk / office was literally covered in wires and parts all the time. Since I had such little space, even the robots were covered in wires and parts! I cleaned up multiple times, but within an hour every square inch
 of space had some type of part on it.</p>
<h2>Frank gets a tux for prom</h2>
<p>Silverlight and WPF use XAML for the design aspect of the application. Since it allows for an extremely nice separation, XAML gives both the designer and developer great power in creating the application. Dan told the great folks at
<a href="http://www.352media.com/">352 Media</a> what controls we were using and their Silverlight 3 final product was inserted directly for consumption with minimal change. In the User Experience and Phone articles in this series, we’ll go into more depth.</p>
<p align="center">What it was: <br>
<a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9979874//image_2.png"><img height="283" width="544" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9979874//image_thumb.png" alt="image" border="0" title="image"></a>
</p>
<p align="center">What it became:</p>
<p align="center"><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9979874//clip_image012_5B25_5D.png"><img height="278" width="544" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9979874//clip_image012_5B25_5D_thumb.png" alt="clip_image012[25]" border="0" title="clip_image012[25]"></a></p>
<h2>What is with the code?</h2>
<p>Rather than risk breaking our code, we’re showing you the keynote rev in all its glory. Dan and I know we have some cleanup to do. We are the first to admit this. We were dogfooding the Silverlight on the Phone and issues of course came up. Due to this,
 our code may look a bit interesting in a few places.</p>
<p>For communication, you’ll notice some of the code looks like it is a WCF (Windows Communication Foundation) service, and this is because it was at some point. We liked the idea behind WCF since it allowed us to lock down the service and prevent someone from
 sending in outside commands. This also allowed us to create very segregated services that only dealt with the service we wanted. Aim, Drive, Settings, and Shooting each had their own and if we wanted to add in another, it was extremely simple.</p>
<p>But as we got to a point where we were giving the phone tools, we had issues getting it to work and so we had to adapt. We shifted to a simple web project and sent in commands. Rather than refactor stuff, since we thought stuff may be fixed in later builds,
 we consumed the project as a reference and treated our services as classes. We never did go back and check <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif?v=c9' alt='Smiley' /></p>
<p>The key projects are:</p>
<ul>
<li><strong>Coding4Fun.Cannon.Phone</strong>
<ul>
<li>The phone application </li></ul>
</li><li><strong>Coding4Fun.Cannon.Robot</strong>
<ul>
<li>Handles all direct hardware communications </li></ul>
</li><li><strong>Coding4Fun.Cannon.WCF</strong>
<ul>
<li>This will be abstracted out to a new, non-WCF project. It creates a simplified command from the Phone and the web server. A quick example of this abstraction is with the servo code. The servos expect a certain value that isn’t an angle. With this abstraction,
 the phone can send in an angle and the servos then can do the translation into a value that is meaningful.
<br>
Another big thing that needs to be added in to this namespace is capturing and sending back the photos off the web server. Right now, this logic is all contained in Coding4Fun.Cannon.Web.
</li></ul>
</li><li><strong>Coding4Fun.Cannon.Web</strong>
<ul>
<li>Handles all requests from the phone, it is basic ASP.Net website. </li></ul>
</li><li><strong>Coding4Fun.Cannon.MVC</strong>
<ul>
<li>In case you want routes instead of query string parameters </li></ul>
</li></ul>
<h2>Fins make a car go faster, right?</h2>
<p>Building this application, we figured out some ways make our application to act faster. We also built out some cool utilities we found very useful in our application, we’ll be abstracting these out into a tool chest project shortly. We will discuss these
 performance solutions later on in the series.</p>
<h2>Conclusion</h2>
<p>I hope everyone enjoyed the project and is ready for a more in-depth look on how it was accomplished. This was a fun and exciting project that pushed us by the short deadline and complexity. If you have any questions, please post a comment and we will be
 sure to address them in the future articles.</p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:623e9a0b064d4412aad29e7600c9c1f8">]]></description>
      <comments>http://channel9.msdn.com/coding4fun/articles/Coding4Fun-Cannon--Project-Overview</comments>
      <itunes:summary>
I think the best way I can describe this project is by telling the story of how I got into this. While playing a bit of xbox 360 at 7:52 p.m., I see a legendary email come in: 

Clint, 
Scott Guthrie would really like to have a cannon on stage at MIX this year that would allow him to fire t-shirts into the audience.&amp;nbsp; […]&amp;nbsp; We thought it might be something that you could build based on the fun stuff you’ve done in the past. […] Do you think
 you could build something like that?&amp;nbsp; Do you have the time to work on this for MIX? 

So the Coding4Fun team had two weeks to build two robots able to drive, aim, and shoot t-shirts during a MIX10 Keynote demo of unreleased software? Piece of cake. 
The following info will explain the who, what, why, and how of the project in order to help you understand the project’s layout. 

Picture by Vetala Hawkins - Filmateria
 Digital 
In this multipart article series, we’ll cover:

Project overview Developing the phone application
Building the robot
Creating the phone user experience

Say hello to my little friend
Mid-February, we were asked to build a t-shirt shooting robot for the Mix conference on March 15th, 2010. This required us to pitch our vision and then research, build, test, and ship our project—all in about 3 weeks. After Scott Guthrie gave
 us approval based on our SketchFlow demo, we had to divide and conquer the application with only 2 weeks left to build the physical robot, the server software, and the phone software. And on top of all that, since we were consuming an unfinished product, everything
 had to have backup plans. 
Delegating workloads
The work was broken up into logical sections: 

Server and Robot (Codenamed: Betty)

Clint Rutkas handled this part 
Phone (Codenamed: Frank)

Dan Fernandez worked on this 
The phone user interface

Web design company, 
352 Media created the look/feel for us 
Camera / MJPEG stream

Brian Peek updated his code so it would work on pretty much any platform


But wait, </itunes:summary>
      <link>http://channel9.msdn.com/coding4fun/articles/Coding4Fun-Cannon--Project-Overview</link>
      <pubDate>Tue, 16 Mar 2010 18:20:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/coding4fun/articles/Coding4Fun-Cannon--Project-Overview</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/c4f/images/9979874_100.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/c4f/images/9979874_220.jpg" height="165" width="220"></media:thumbnail>      
      <dc:creator>Clint Rutkas</dc:creator>
      <itunes:author>Clint Rutkas</itunes:author>
      <slash:comments>7</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/coding4fun/articles/Coding4Fun-Cannon--Project-Overview/RSS</wfw:commentRss>
      <category>ASP.NET</category>
      <category>Robotics</category>
      <category>Silverlight</category>
      <category>Windows Phone</category>
    </item>
  <item>
      <title>Fez’ing with the .Net Micro-framework</title>
      <description><![CDATA[
<p><a href="http://blog.makezine.com/archive/2010/02/hands-on_with_fez_mini_a_net-powere.html">Brian Jepson, from Make Magazine, along with Szymon Kobalczyk posted about their chance to play with the FEZ line of .NET-Powered microcontroller kits</a>.&nbsp; GHI Electronics
 makes them and can be found over at <a href="http://www.tinyclr.com">www.tinyclr.com</a>.&nbsp; The FEZ mini costs about $50 dollars.&nbsp; Adding on sensors is painless too.</p>
<div id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:936418ab-9b18-4b3f-bf36-4deb98612feb" class="wlWriterEditableSmartContent">
<div></div>
</div>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:71199207cb234b7a93ab9e7600c9f440">]]></description>
      <comments>http://channel9.msdn.com/coding4fun/blog/Fezing-with-the-Net-Micro-framework</comments>
      <itunes:summary>
Brian Jepson, from Make Magazine, along with Szymon Kobalczyk posted about their chance to play with the FEZ line of .NET-Powered microcontroller kits.&amp;nbsp; GHI Electronics
 makes them and can be found over at www.tinyclr.com.&amp;nbsp; The FEZ mini costs about $50 dollars.&amp;nbsp; Adding on sensors is painless too. 



</itunes:summary>
      <link>http://channel9.msdn.com/coding4fun/blog/Fezing-with-the-Net-Micro-framework</link>
      <pubDate>Fri, 26 Feb 2010 16:06:33 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/coding4fun/blog/Fezing-with-the-Net-Micro-framework</guid>      
      <dc:creator>Clint Rutkas</dc:creator>
      <itunes:author>Clint Rutkas</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/coding4fun/blog/Fezing-with-the-Net-Micro-framework/RSS</wfw:commentRss>
      <category>Robotics</category>
      <category>C4FNews</category>
    </item>
  <item>
      <title>Robocode – robot warfare</title>
      <description><![CDATA[
<p><a href="http://robo-code.blogspot.com/2010/02/robocode-1720-beta-net-robots-are-now.html"><img title="Anatomy" border="0" alt="Anatomy" align="right" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9968766/Anatomy_a8239700-4cac-4d69-9eb3-1785bfa02bec.jpg" width="225" height="160">Robocode
 just released a new version of their software which now allows you to use .Net coded robots</a>!&nbsp; Awesome job guys.&nbsp; They have a
<a href="http://robo-code.blogspot.com/2010/02/robocode-net-introduction.html">post regarding their implementation</a> and their
<a href="http://robowiki.net/w/index.php?title=Robocode/.NET/Create_a_.NET_robot_with_Visual_Studio">
wiki has a quick example to get you up and running</a> and they also include <a href="http://robocode.sourceforge.net/docs/robocode.dotnet/Index.html">
API references for Robocode</a>.</p>
<p>To download, head to <a title="http://sourceforge.net/projects/robocode/files/" href="http://sourceforge.net/projects/robocode/files/">
http://sourceforge.net/projects/robocode/files/</a></p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:0855f54f9faf457fa56e9e7600c9fa5d">]]></description>
      <comments>http://channel9.msdn.com/coding4fun/blog/Robocode--robot-warfare</comments>
      <itunes:summary>
Robocode
 just released a new version of their software which now allows you to use .Net coded robots!&amp;nbsp; Awesome job guys.&amp;nbsp; They have a
post regarding their implementation and their

wiki has a quick example to get you up and running and they also include 
API references for Robocode. 
To download, head to 
http://sourceforge.net/projects/robocode/files/ 
</itunes:summary>
      <link>http://channel9.msdn.com/coding4fun/blog/Robocode--robot-warfare</link>
      <pubDate>Wed, 24 Feb 2010 14:35:48 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/coding4fun/blog/Robocode--robot-warfare</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/c4f/images/9968766_100.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/c4f/images/9968766_220.jpg" height="165" width="220"></media:thumbnail>      
      <dc:creator>Clint Rutkas</dc:creator>
      <itunes:author>Clint Rutkas</itunes:author>
      <slash:comments>1</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/coding4fun/blog/Robocode--robot-warfare/RSS</wfw:commentRss>
      <category>Robotics</category>
      <category>C4FNews</category>
    </item>
  <item>
      <title>CCR at MySpace</title>
      <description><![CDATA[<a shape="rect" href="http://myspace.com" title="MySpace: A Place for Friends" target="_blank" shape="rect">MySpace
</a>has done some pretty amazing things with the Robotic Developer Studio.&nbsp; When they found out it contained a very powerful component, the&nbsp;<a shape="rect" href="http://www.microsoft.com/ccrdss/" title="CCR &amp; DSS" target="_blank" shape="rect">Concurrency and&nbsp;Coordination
 Runtime</a> (CCR), the architects built it into the architecture of MySpace, the largest .NET site in the world.&nbsp; At MySpace, I met Principal Architect Erik Nelson and Senior Architect Akash Patel who walked me through how they were using the CCR.&nbsp;
<br />If you have an <a shape="rect" href="http://msdn.microsoft.com" target="_blank" shape="rect">
MSDN subscription</a>, you are&nbsp;<a shape="rect" href="http://dreamspark.com" title="DreamSpark program for students" target="_blank" shape="rect">a student</a>, or you are at&nbsp;<a shape="rect" href="http://bizspark.com" title="BizSpark program for startups" target="_blank" shape="rect">a
 qualifying startup</a>, you can now download and use the Robotic Toolkit as part of the program.
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:995702a15f194fc6bcb59dea00c5a31b">]]></description>
      <comments>http://channel9.msdn.com/Shows/Communicating/CCR-at-MySpace</comments>
      <itunes:summary>MySpace
has done some pretty amazing things with the Robotic Developer Studio.&amp;nbsp; When they found out it contained a very powerful component, the&amp;nbsp;Concurrency and&amp;nbsp;Coordination
 Runtime (CCR), the architects built it into the architecture of MySpace, the largest .NET site in the world.&amp;nbsp; At MySpace, I met Principal Architect Erik Nelson and Senior Architect Akash Patel who walked me through how they were using the CCR.&amp;nbsp;
If you have an 
MSDN subscription, you are&amp;nbsp;a student, or you are at&amp;nbsp;a
 qualifying startup, you can now download and use the Robotic Toolkit as part of the program.
</itunes:summary>
      <itunes:duration>1169</itunes:duration>
      <link>http://channel9.msdn.com/Shows/Communicating/CCR-at-MySpace</link>
      <pubDate>Tue, 06 Oct 2009 15:22:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/Communicating/CCR-at-MySpace</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/496303_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/496303_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/3/0/3/6/9/4/CCRatMySpace_320_ch9.png" height="240" width="320"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/3/0/3/6/9/4/CCRatMySpace_512_ch9.png" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/3/0/3/6/9/4/CCRatMySpace_85_ch9.png" height="64" width="85"></media:thumbnail>
      <media:group>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/3/0/3/6/9/4/CCRatMySpace_2MB_ch9.wmv" expression="full" duration="1169" fileSize="383308581" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/3/0/3/6/9/4/CCRatMySpace_ch9.mp3" expression="full" duration="1169" fileSize="9360698" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/3/0/3/6/9/4/CCRatMySpace_ch9.mp4" expression="full" duration="1169" fileSize="115115380" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/3/0/3/6/9/4/CCRatMySpace_ch9.wma" expression="full" duration="1169" fileSize="9470575" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/3/0/3/6/9/4/CCRatMySpace_ch9.wmv" expression="full" duration="1169" fileSize="178389893" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/3/0/3/6/9/4/CCRatMySpace_Zune_ch9.wmv" expression="full" duration="1169" fileSize="98549873" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ecn.channel9.msdn.com/o9/ch9/3/0/3/6/9/4/CCRatMySpace_ch9.wmv" length="178389893" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Michael S. Scherotter</dc:creator>
      <itunes:author>Michael S. Scherotter</itunes:author>
      <slash:comments>4</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/Communicating/CCR-at-MySpace/RSS</wfw:commentRss>
      <category>CCR</category>
      <category>myspace</category>
      <category>Robotics</category>
      <category>Robotics Studio</category>
    </item>
  <item>
      <title>Robotics Developer Studio 2008 R2 Available</title>
      <description><![CDATA[A new version of Robotics Developer Studio 2008 is out and includes some cool new enhancements like DSS Log Analyzer as well as a wrap up of bug fixes. Trevor Taylor, Stewart MacLeod, and Stathis Papaefstathiou came by to show us the latest version and
 walk through some of the features. You can grab the new Express Edition <a shape="rect" href="http://www.microsoft.com/robotics/Content.aspx?pg=GetIt" shape="rect">
here</a>, or if you have access to DreamSpark or MSDNAA, BizSpark, or MSDN you can get it through each. Also, check out the newly redigned Robotics page at
<a shape="rect" href="http://www.microsoft.com/robotics/" shape="rect">http://www.microsoft.com/robotics/</a>.<br>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:ee55758618894f1c9e589deb0011490a">]]></description>
      <comments>http://channel9.msdn.com/Blogs/LarryLarsen/Robotics-Developer-Studio-2008-R2-Available</comments>
      <itunes:summary>A new version of Robotics Developer Studio 2008 is out and includes some cool new enhancements like DSS Log Analyzer as well as a wrap up of bug fixes. Trevor Taylor, Stewart MacLeod, and Stathis Papaefstathiou came by to show us the latest version and
 walk through some of the features. You can grab the new Express Edition 
here, or if you have access to DreamSpark or MSDNAA, BizSpark, or MSDN you can get it through each. Also, check out the newly redigned Robotics page at
http://www.microsoft.com/robotics/.
</itunes:summary>
      <itunes:duration>1391</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/LarryLarsen/Robotics-Developer-Studio-2008-R2-Available</link>
      <pubDate>Thu, 18 Jun 2009 10:38:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/LarryLarsen/Robotics-Developer-Studio-2008-R2-Available</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/474371_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/474371_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/2/2/1/4/7/4/MicrosoftRobotics_large_ch9.png" height="240" width="320"></media:thumbnail>
      <media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/2/2/1/4/7/4/MicrosoftRobotics_small_ch9.png" height="64" width="85"></media:thumbnail>
      <media:group>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/2/2/1/4/7/4/MicrosoftRobotics_2MB_ch9.wmv" expression="full" duration="1391" fileSize="541867793" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/2/2/1/4/7/4/MicrosoftRobotics_ch9.mp3" expression="full" duration="1391" fileSize="11132444" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/2/2/1/4/7/4/MicrosoftRobotics_ch9.mp4" expression="full" duration="1391" fileSize="103350037" type="video/mp4" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/2/2/1/4/7/4/MicrosoftRobotics_ch9.wma" expression="full" duration="1391" fileSize="22510957" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/2/2/1/4/7/4/MicrosoftRobotics_ch9.wmv" expression="full" duration="1391" fileSize="195213789" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/2/2/1/4/7/4/MicrosoftRobotics_Zune_ch9.wmv" expression="full" duration="1391" fileSize="128589769" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="mms://mschnlnine.wmod.llnwd.net/a1809/d1/ch9/2/2/1/4/7/4/MicrosoftRobotics_s_ch9.wmv" expression="full" duration="1391" fileSize="215" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/2/2/1/4/7/4/MicrosoftRobotics_ch9.wmv" length="195213789" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Larry Larsen</dc:creator>
      <itunes:author>Larry Larsen</itunes:author>
      <slash:comments>6</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/LarryLarsen/Robotics-Developer-Studio-2008-R2-Available/RSS</wfw:commentRss>
      <category>Microsoft Robotics</category>
      <category>Robotics</category>
      <category>Robotics Studio</category>
    </item>
  <item>
      <title>Talking about Microsoft Robotics and VPL with Trevor Taylor</title>
      <description><![CDATA[During my last visit to the Microsoft Redmond Campus Trevor Taylor from the Microsoft Robotics team was kind enough to talk to me about the Microsoft Robotics platform and in particular Visual Programming Language or VPL. Of course when you talk aout robotics
 there is always an opportunity to talk about other cool&nbsp;technology such as the simulation environment and the great things our partner
<a href="http://www.simplysim.net">http://www.simplysim.net</a> are doing with it.&nbsp;<br>
<br>
If this video peaks your interest in Microsoft Robotics then take a look at the book
<a href="http://www.amazon.com/Professional-Microsoft-Robotics-Developer-Programmer/dp/0470141077/ref=cm_cr_pr_product_top">
Trevor co-authored with Kyle Johns<br>
</a><br>
<p><b>John O'Donnell</b> Microsoft Dynamics ISV Architect Evangelist<br>
Microsoft Corporation<br>
<a href="http://blogs.msdn.com/jodonnell">http://blogs.msdn.com/jodonnell<br>
</a><a href="http://blogs.msdn.com/usisvde">http://blogs.msdn.com/usisvde</a><br>
<a href="http://www.twitter.com/jodonnel">http://www.twitter.com/jodonnel</a></p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:4943108a27d645b6ad539deb000bc0f2">]]></description>
      <comments>http://channel9.msdn.com/Blogs/jodonnell/Talking-about-Microsoft-Robotics-and-VPL-with-Trevor-Taylor</comments>
      <itunes:summary>During my last visit to the Microsoft Redmond Campus Trevor Taylor from the Microsoft Robotics team was kind enough to talk to me about the Microsoft Robotics platform and in particular Visual Programming Language or VPL. Of course when you talk aout robotics
 there is always an opportunity to talk about other cool&amp;nbsp;technology such as the simulation environment and the great things our partner
http://www.simplysim.net are doing with it.&amp;nbsp;

If this video peaks your interest in Microsoft Robotics then take a look at the book

Trevor co-authored with Kyle Johns

John O&#39;Donnell Microsoft Dynamics ISV Architect Evangelist
Microsoft Corporation
http://blogs.msdn.com/jodonnell
http://blogs.msdn.com/usisvde
http://www.twitter.com/jodonnel 
</itunes:summary>
      <itunes:duration>1920</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/jodonnell/Talking-about-Microsoft-Robotics-and-VPL-with-Trevor-Taylor</link>
      <pubDate>Fri, 22 May 2009 22:19:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/jodonnell/Talking-about-Microsoft-Robotics-and-VPL-with-Trevor-Taylor</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/470295_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/470295_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/5/9/2/0/7/4/MicrosoftRoboticswithTrevorTaylor_large_ch9.png" height="240" width="320"></media:thumbnail>
      <media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/5/9/2/0/7/4/MicrosoftRoboticswithTrevorTaylor_small_ch9.png" height="64" width="85"></media:thumbnail>
      <media:group>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/5/9/2/0/7/4/MicrosoftRoboticswithTrevorTaylor_2MB_ch9.wmv" expression="full" duration="1920" fileSize="118699152" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/5/9/2/0/7/4/MicrosoftRoboticswithTrevorTaylor_ch9.mp3" expression="full" duration="1920" fileSize="15361839" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/5/9/2/0/7/4/MicrosoftRoboticswithTrevorTaylor_ch9.mp4" expression="full" duration="1920" fileSize="92917212" type="video/mp4" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/5/9/2/0/7/4/MicrosoftRoboticswithTrevorTaylor_ch9.wma" expression="full" duration="1920" fileSize="31057337" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/5/9/2/0/7/4/MicrosoftRoboticswithTrevorTaylor_ch9.wmv" expression="full" duration="1920" fileSize="105712963" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/5/9/2/0/7/4/MicrosoftRoboticswithTrevorTaylor_Zune_ch9.wmv" expression="full" duration="1920" fileSize="121056943" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="mms://mschnlnine.wmod.llnwd.net/a1809/d1/ch9/5/9/2/0/7/4/MicrosoftRoboticswithTrevorTaylor_s_ch9.wmv" expression="full" duration="1920" fileSize="247" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/5/9/2/0/7/4/MicrosoftRoboticswithTrevorTaylor_ch9.wmv" length="105712963" type="video/x-ms-wmv"></enclosure>
      <dc:creator>John O&#39;Donnell</dc:creator>
      <itunes:author>John O&#39;Donnell</itunes:author>
      <slash:comments>1</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/jodonnell/Talking-about-Microsoft-Robotics-and-VPL-with-Trevor-Taylor/RSS</wfw:commentRss>
      <category>CCR</category>
      <category>DSS</category>
      <category>Microsoft CCR and DSS Toolkit 2008</category>
      <category>Microsoft Robotics</category>
      <category>Robotics</category>
      <category>Robotics Studio</category>
    </item>
  <item>
      <title>Controlling Your Festive Lights with the .NET Micro Framework</title>
      <description><![CDATA[
<table class="" cellspacing="0" cellpadding="2" width="470" border="0">
<tbody>
<tr>
</tr>
<tr>
<td class="" valign="top" width="105"><strong>Author:</strong></td>
<td class="" valign="top" width="363">Rob Miles: <a href="http://www.robmiles.com">
www.robmiles.com</a> </td>
</tr>
<tr>
<td class="" valign="top" width="105"><strong>Download:</strong></td>
<td class="" valign="top" width="363"><a title="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/festivelights1.0.zip" href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/festivelights1.0.zip">Download</a></td>
</tr>
<tr>
<td class="" valign="top" width="105"><strong>Software:</strong></td>
<td class="" valign="top" width="363">Visual Studio 2008 Express Edition or better,
<br>
<a href="http://www.microsoft.com/netmf/about/gettingstarted.mspx">.NET Micro Framework 3.0</a></td>
</tr>
<tr>
<td class="" valign="top" width="105"><strong>Hardware:</strong></td>
<td class="" valign="top" width="363"><a href="http://www.digi.com/products/embeddedsolutions/digiconnectme.jsp">Digi Connect-ME</a>
<br>
<a href="http://www.ghielectronics.com/embeddedmaster.php">GHI Electronics Embedded Master</a>
<br>
<a href="http://devicesolutions.net/Products/Tahoe.aspx">Devices Solutions Tahoe II
</a></td>
</tr>
<tr>
<td class="" valign="top" width="105"><strong>Time Required:</strong></td>
<td class="" valign="top" width="363">3 hours</td>
</tr>
<tr>
<td class="" valign="top" width="105"><strong>Cost:</strong></td>
<td class="" valign="top" width="363">30 dollars for lights plus the .NET Micro Framework device</td>
</tr>
</tbody>
</table>
<p>The Micro Framework is one of the newest kids on the .NET block, but it does something really rather wonderful. It brings embedded development within the reach of any C# programmer. If you know C# and love Visual Studio, you can now get started building
 hardware and controlling it with your software. Moreover, it lets developers achieve one of their most cherished dreams, to control their festive lights using programs that they have written. This project shows you how to do just that and adds an extra magical
 feature, in that you can make all your festive lights flash red whenever I, Rob Miles, make a new post on that most famous of blogs,
<a href="http://www.robmiles.com">www.robmiles.com</a>. </p>
<p>Actually, you can modify the code so that you can make your lights do most anything in response to an event that happens on the web. You could signal home that you are running late, send the weather forecast to your Christmas tree or explore any number of
 communication options. You might decide that this is so useful that you leave your decorations up all year round.</p>
<p>If you just want to play with the .NET Micro Framework and get a feel for how easy it is to create software for tiny devices you don't actually need to use any extra hardware at all. The project comes with a complete emulation of the lights display so that
 you can run the whole thing on your computer and learn how hardware and software can be made to work together without burning your fingers with a soldering iron.</p>
<p>However building the hardware will give you an understanding of how some simple electronic components can be controlled from C# and even how serial and parallel data transfer works. It is also great fun.</p>
<p>To get started you will need some hardware and some software. Let's take each in turn.</p>
<h1>Hardware</h1>
<h2>Processor Hardware</h2>
<p>The .NET Micro Framework lets you run C# programs on tiny embedded devices. There are a number of these available today, and they are getting progressively cheaper. You can base this project on any.NET Micro Framework device that has a network port and three
 or more output ports. The ones I'd recommend are:</p>
<ul>
<li>Digi Connect-ME: <a href="http://www.digi.com/products/embeddedsolutions/digiconnectme.jsp">
http://www.digi.com/products/embeddedsolutions/digiconnectme.jsp</a> </li><li>GHI Electronics Embedded Master: <a href="http://www.ghielectronics.com/embeddedmaster.php">
http://www.ghielectronics.com/embeddedmaster.php</a> </li><li>Devices Solutions Tahoe II: <a href="http://devicesolutions.net/Products/Tahoe.aspx">
http://devicesolutions.net/Products/Tahoe.aspx</a> </li></ul>
<p>I built the project for Digi Connect board but the code can be customised for any of the above platforms. The beauty of the .NET Micro Framework is that you hardly need to change your program even if the underlying hardware is completely replaced. The only
 thing you will have to do is adjust the code to target different output pins. I'll flag this part of the program up when we get to it.</p>
<p>The project as supplied runs on a special emulator that runs on the PC and behaves like a .NET Micro Framework device with lights connected, so you can get started exploring the code right away.</p>
<h2>Lights</h2>
<p>I'm keeping things deliberately low voltage for this project. This means that kids of all ages can have a go at building the hardware without messing around with mains. The lights that I used were supplied as lines of twenty leds wired up as four strands
 of five leds each. All the leds in each strand were the same colour. The lights were fitted with a little battery box which held three AA batteries and a tiny controller. To get my display I simply removed the battery box and connected the strands to my hardware.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image.png"><img title="image" height="226" alt="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_thumb.png" width="324" border="0"></a>&nbsp;
<br>
<strong>Figure 1: My Battery Powered Lights</strong></p>
<p>You can do the same with any low power lighting kit that you wish to use. The drivers that I'm using can handle around 500 milliamps of continuous current and so you can connect a fair number of lights to each strand.
</p>
<h2>Buying the Lights</h2>
<p>The lights I used can be bought in the UK from Lights4Fun: www.lights4fun.co.uk and are called &quot;C-LED-4.5-M 20 Multi Coloured Battery Operated LED Fairy Lights&quot;. They are supplied with a battery box and controller that you can remove to connect to the Darlington
 drivers. I used an old 5 volt mobile phone charger to power the lights. If you search eBay for &quot;led christmas lights battery&quot; you should find plenty of suppliers.</p>
<h2>Driver Hardware</h2>
<p>We can't connect a .NET Micro Framework device directly to our lights. There are two reasons for this:</p>
<ol>
<li>The Micro Framework device will not be able to switch the amount of current that we need to drive the lights themselves.
</li><li>The Micro Framework device will not have enough outputs to control all the lights that we want to use.
</li></ol>
<p>This means that we need to make some hardware that goes between the processor and our lights. I actually don't see this as a problem. Making hardware is great fun, seeing something that you've built spring into life is very nice. The hardware we are going
 to use will provide a means by which we can control many hundreds of lights from a single Micro Framework board if we wish. It also has the ability to switch reasonable amounts of current, so you can use quite large numbers of lights if you wish. We are going
 to use two semiconductor components, a CD4094 Shift Register/Latch and a ULN2803 Octal Darlington Driver. A pair of these chips will allow us to control 8 outputs. If you want to control more outputs you simply get more chips and chain them together. For my
 version of the project I just used one of each chip, you can use as many as you like.The shift registers and Darlington amplifiers can be obtained in the UK from Maplin:
<a href="http://www.maplin.co.uk">www.maplin.co.uk</a>. The chip numbers and part numbers as are as follows: QW54J 4094 Shift Register, QY79L ULN2803A Darlington Driver. In the US you can obtain the components and breadboard from Digi-Key:
<a href="http://www.digikey.com">www.digikey.com</a>. </p>
<h2>Serial and Parallel Data</h2>
<p>You might be wondering how we can use just three output lines to control lots of lights. We are going to do this by using the three output lines to provide a
<i>serial</i> data stream which is converted by our hardware into <i>parallel</i> data that can be used to control our lights. This is a fundamental principle of digital electronics and is how, amongst many other things, computer networks transfer data.</p>
<p>We are going to use three signals which are called <b>clock</b>, <b>data</b> and
<b>latch</b>. Each of these can be set high (a voltage is present) or low (no voltage is present) by the .NET Micro Framework device under the control of our software. The signals are connected to the clock, data and latch inputs of our CD4094 shift register
 so that the program can talk to it.</p>
<p>The clock line triggers the shift register to do two things:</p>
<ol>
<li>Shift all the bits along to make room. </li><li>Sample the value of the data input and store this value in the space that was created.
</li></ol>
<p>To get a feel for how this works, take a look at Figure 2 below. It shows a shift register with a pattern of bits in it. The pattern is
<b>01100001</b>. Note that although this represents a number; it can also be regarded as a pattern of 0s and 1s in the shift register itself. The value 0 means 0 volts and the value 1 means some volts. These are the signals that will be used to control our
 lights. I'm going to call them 0 and 1 from now on. The Shift Register has Clock, Data and Latch signals connected and they are all set to 1. We can ignore the latch part of the chip for now.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_3.png"><img title="image" height="251" alt="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_thumb_3.png" width="500" border="0"></a>
</p>
<p><strong>Figure 2: A shift register and latch with some data in it</strong></p>
<p>When the clock signal changes from 1 to 0 this causes the shift register to perform the two steps described above. First the data is shifted along to the right. Note that this means that there is an &quot;empty&quot; location at the start of the register, and that
 the right most bit in the register &quot;falls off&quot; the register and disappears. Figure 3 shows how this works.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_4.png"><img title="image" height="236" alt="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_thumb_4.png" width="500" border="0"></a>
</p>
<p><strong>Figure 3: Shifting along the values in the shift register</strong></p>
<p>Once the shift has finished the shift register can copy the data signal into the empty bit at the left as shown in Figure 4 below.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_5.png"><img title="image" height="251" alt="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_thumb_5.png" width="500" border="0"></a>
<strong><br>
Figure 4: Storing the new data bit</strong></p>
<p>By repeating this process 8 times a program can load a new pattern of 8 bits into the shift register. Then it is time to latch the new value to control the lights. This is the point at which the lights will appear to change. When the latch value is changed
 from 0 to 1 this causes the chip to copy the value in the Shift Register into the latch, as shown in Figure 5 below.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_6.png"><img title="image" height="251" alt="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_thumb_6.png" width="500" border="0"></a>
</p>
<p><strong>Figure 5: Copying the shift register pattern into the latch.</strong></p>
<p>The latch is required so that the lights will not flicker as the new patterns are shifted into position. Each of the bits in the latch is connected to an output pin on the CD4094 which is used to switch a particular light colour on or off.</p>
<p>We need to create some C# that will provide the appropriate sequence of signals. It turns out that using the .NET Micro Framework to achieve this is actually very easy. The
<b>displayByte</b> method below sends an 8 bit value into a shift register and then latches it into the output. If you read through the code you can see how the clock, data and latch values are all set to true (high) or false (low) to first clock the data out
 and then trigger the latch to display the pattern on the lights. The input is an 8 bit byte value and the program uses a mask to pick out the value of each bit in turn and set the data output accordingly.</p>
<pre class="csharpcode"><span class="kwrd">private</span> <span class="kwrd">static</span> <span class="kwrd">void</span> displayByte(<span class="kwrd">byte</span> <span class="kwrd">value</span>)
{
    latchPort.Write(<span class="kwrd">false</span>);
    clockPort.Write(<span class="kwrd">false</span>);

    <span class="kwrd">byte</span> mask = 1;

    <span class="kwrd">for</span> (<span class="kwrd">int</span> i = 0; i &lt; 8; i&#43;&#43;)
    {
        <span class="kwrd">if</span> ((<span class="kwrd">value</span> &amp; mask) &gt; 0)
        {
            dataPort.Write(<span class="kwrd">true</span>);
        }
        <span class="kwrd">else</span>
        {
            dataPort.Write(<span class="kwrd">false</span>);
        }
        clockPort.Write(<span class="kwrd">true</span>);
        clockPort.Write(<span class="kwrd">false</span>);
        mask &lt;&lt;= 1;
    }
    latchPort.Write(<span class="kwrd">true</span>);
    latchPort.Write(<span class="kwrd">false</span>);
}</pre>
<style type="text/css">
<!--
.csharpcode, .csharpcode 
	{font-size:small;
	color:black;
	font-family:consolas,"Courier New",courier,monospace;
	background-color:#ffffff}
.csharpcode 
	{margin:0em}
.csharpcode .rem
	{color:#008000}
.csharpcode .kwrd
	{color:#0000ff}
.csharpcode .str
	{color:#006080}
.csharpcode .op
	{color:#0000c0}
.csharpcode .preproc
	{color:#cc6633}
.csharpcode .asp
	{background-color:#ffff00}
.csharpcode .html
	{color:#800000}
.csharpcode .attr
	{color:#ff0000}
.csharpcode .alt
	{background-color:#f4f4f4;
	width:100%;
	margin:0em}
.csharpcode .lnum
	{color:#606060}
-->
</style>
<p>The <b>dataPort</b>, <b>clockPort</b> and <b>latchPort</b> variables are instances of the .NET Micro Framework class
<b>OutputPort</b>, which provides a method called <b>Write</b> which can be used to control the state of the output signal. We will consider how these are created a little later in the article.</p>
<p>The sample code for this project comes with a software emulator of the CD4094 which shows how it works. Figure 6 below shows that a new pattern is in the process of being shifted into the shift register, while the lights retain the previous one in the latch.
 The Clock and Data signals are high and the next statement will drop the Clock signal to add the next bit into the new pattern.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_7.png"><img title="image" height="303" alt="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_thumb_7.png" width="264" border="0"></a>
</p>
<p><strong>Figure 6: The light emulator</strong></p>
<p>This figure also shows that I have two bits in the pattern controlling a strand of each colour. You can single step through the displayByte method above and watch it perform this output.</p>
<p>You can use this technique every time you want to control a large number of outputs using a small number of output pins. The CD4094 has &quot;daisy chain&quot; inputs and outputs so that the devices can be connected in sequence. If I used two devices I could control
 16 bits, with three I could control 24 and so on. This would require only minimal changes to the software.</p>
<h2>Output Driver</h2>
<p>The CD4094 device will produce a signal output, but it is not really powerful enough to drive things like lights. To do this we need an amplifier and the ULN2803 Octal Darlington Driver is perfect for this. It is packaged as a single chip which contains
 8 pairs of transistors. Each transistor pair is wired in a &quot;Darlington&quot; configuration and can be used as a switch which is controlled by on output from the CD4094. When the transistors are turned on they allow current to pass through them and this will cause
 the lamps to light. The lights that I bought used a &quot;pull down&quot; arrangement to make them light up. All of the light emitting diode (LED) lamps had one end wired to a common line that was connected to the positive supply. To make the a chain of LEDs light the
 other end that controls that chain needed to be pulled down to the ground level. This is a common arrangement with lights like these. The ULN2803 driver has the transistors wired in an arrangement that allows it to pull signals low in this way. Figure 7 shows
 how this arrangement works. The resistor shown is actually wired into each LED in the set of lights that I used.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_8.png"><img title="image" height="201" alt="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_thumb_8.png" width="226" border="0"></a>
<br>
<strong>Figure 7: Lighting the LEDs</strong></p>
<h5>Complete Circuit</h5>
<p>The complete circuit shown in Figure 8 simply links each output of the CD4094 shift register to an input on the ULN2803 Darlington Driver. Note that there is no reason to link any particular bit with any other, the diagram shown is one which will translate
 most easily to a prototype &quot;breadboard&quot;.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_9.png"><img title="image" height="260" alt="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_thumb_9.png" width="500" border="0"></a>
<br>
<strong>Figure 8: The Complete Circuit</strong></p>
<p>The diagram just shows four lights connected to OUT1 from pin 18 of the ULN2803, the other 7 channels are connected in exactly the same way. Some of the pins can be left unconnected. Pins 9 and 10 of the CD4094 are only required if you are connecting multiple
 shift registers together and the common connection on pin 10 of the ULN2803 is not required. The Latch, Data and Clock signals on the CD4094 are connected to the output signals from the Micro Framework device.
</p>
<p>Figure 9 shows the completed circuit built up on a prototype breadboard. The chip on the left is the CD4094 and the one on the right is the ULN2803.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_10.png"><img title="image" height="331" alt="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/9149635/image_thumb_10.png" width="484" border="0"></a>
<strong><br>
Figure 9: The Completed Circuit</strong></p>
<p>The red wires carry the positive voltage from the power supply, which is connected to the top left of the circuit. The green wires are ground. Other coloured wires are used for signals. The Clock, Latch and Data signals are brought out to a connector which
 will fit a Digi-ME prototyping board.</p>
<h2>Selecting Lights</h2>
<p>Each bit in the value sent to the <b>displayByte</b> method and then into the shift register will be mapped to a particular chain of lights. The mapping of these is not particularly important, since you can use program constants to represent particular values.
 I wired the red signals to output pins 4 and 8. To light up just the red lights I used the value 0x88 which is the appropriate bit pattern. I then set up constants for all the other colors:</p>
<pre class="csharpcode"><span class="kwrd">const</span> <span class="kwrd">byte</span> GREEN = 0x11;
<span class="kwrd">const</span> <span class="kwrd">byte</span> BLUE = 0x22;
<span class="kwrd">const</span> <span class="kwrd">byte</span> YELLOW = 0x44;
<span class="kwrd">const</span> <span class="kwrd">byte</span> RED = 0x88;</pre>
<h2>Setting Up the Hardware</h2>
<p>The .NET Micro Framework provides a set of classes that can be used to represent the hardware in a system. The program uses instances of the
<b>OutputPort</b> class to represent the output pins. These are created in the method that sets up the hardware:</p>
<pre class="csharpcode"><span class="kwrd">const</span> Cpu.Pin clockPin = Cpu.Pin.GPIO_Pin0;
<span class="kwrd">const</span> Cpu.Pin dataPin = Cpu.Pin.GPIO_Pin1;
<span class="kwrd">const</span> Cpu.Pin latchPin = Cpu.Pin.GPIO_Pin2;

<span class="kwrd">static</span> OutputPort clockPort;
<span class="kwrd">static</span> OutputPort dataPort;
<span class="kwrd">static</span> OutputPort latchPort;

<span class="kwrd">private</span> <span class="kwrd">static</span> <span class="kwrd">void</span> setupOutputs()
{
    clockPort = <span class="kwrd">new</span> OutputPort(clockPin, <span class="kwrd">false</span>);
    dataPort = <span class="kwrd">new</span> OutputPort(dataPin, <span class="kwrd">false</span>);
    latchPort = <span class="kwrd">new</span> OutputPort(latchPin, <span class="kwrd">false</span>);
}</pre>
<p>In this version of the hardware I have connected pin 0 of the processor to the clock, pin 1 to the data and pin 2 to the latch. If you use different pins you can change the settings above.</p>
<h1>Software</h1>
<p>Now that we have working hardware we can consider how the software is to work. Note that this version of the program works correctly but lacks exception handlers that would make it truly robust. I've left these out to simplify the explanation. To make sense
 of this description you will need to have a copy of the program itself available for reference.</p>
<p>You can develop the code using Visual Studio 2008 Express edition, which you can download from
<a href="http://www.microsoft.com/express/">http://www.microsoft.com/express/</a>
</p>
<p>The software is written for the .NET Micro Framework 3.0 which you can download from
<a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9356ed6f-f1f0-43ef-b21a-4644dd089b4a&amp;displaylang=en">
http://www.microsoft.com/downloads/details.aspx?FamilyID=9356ed6f-f1f0-43ef-b21a-4644dd089b4a&amp;displaylang=en</a>
</p>
<h2>Reading the Blog</h2>
<p>The program reads the RSS feed from a blog and looks for the <b>&lt;pubDate&gt;</b> value. This contains the date when the feed was last updated. Whenever this date changes the lights must flash red for a few seconds before resuming a random display. Users of
 the full .NET Framework can use the <b>HTTPRequest</b> class to build a <b>GET</b> command to be sent to a server. Unfortunately the .NET Micro Framework does not support this, so we have to access the web feed using socket based communication. This part of
 the program is heavily based on the <b>SocketClient</b> example supplied with the .NET Micro Framework.</p>
<pre class="csharpcode"><span class="rem">// This method requests a page from the specified server.</span>
<span class="kwrd">private</span> <span class="kwrd">static</span> String GetWebPage(String server, <span class="kwrd">string</span> webPage)
{
    <span class="kwrd">const</span> Int32 c_httpPort = 80;
    <span class="kwrd">const</span> Int32 c_microsecondsPerSecond = 1000000;

    <span class="rem">// Create a socket connection to the specified server and port.</span>
    <span class="kwrd">using</span> (Socket serverSocket = ConnectSocket(server, c_httpPort))
    {
        <span class="rem">// Send request to the server.</span>
        String request = <span class="str">&quot;GET &quot;</span>&#43; webPage &#43; 
             <span class="str">&quot; HTTP/1.1\r\nHost: &quot;</span> &#43; server &#43; 
             <span class="str">&quot;\r\nConnection: Close\r\n\r\n&quot;</span>;
        Byte[] bytesToSend = Encoding.UTF8.GetBytes(request);
        serverSocket.Send(bytesToSend, bytesToSend.Length, 0);

        <span class="rem">// Allocate a buffer to receive HTML chunks</span>
        Byte[] buffer = <span class="kwrd">new</span> Byte[1024];

        <span class="rem">// 'page' refers to the HTML data as it is built up.</span>
        String page = String.Empty; 

        <span class="rem">// Wait up to 30 seconds for initial data </span>
        <span class="rem">// Will throw exception if connection closed</span>
        DateTime timeoutAt = DateTime.Now.AddSeconds(30);
        <span class="kwrd">while</span> (serverSocket.Available == 0 &amp;&amp; 
               DateTime.Now &lt; timeoutAt)
        {
            System.Threading.Thread.Sleep(100);
        }

        <span class="rem">// Poll for data until 30 second time out</span>
        <span class="rem">// Returns true for data and connection closed</span>
        <span class="kwrd">while</span> (serverSocket.Poll(30 * c_microsecondsPerSecond,
                                 SelectMode.SelectRead))
        {
            <span class="rem">// Zero all bytes in the re-usable buffer</span>
            Array.Clear(buffer, 0, buffer.Length);

            <span class="rem">// Read a buffer-sized HTML chunk</span>
            Int32 bytesRead = serverSocket.Receive(buffer);

            <span class="rem">// If 0 bytes in buffer, then connection is closed, </span>
            <span class="rem">// or we have timed out</span>
            <span class="kwrd">if</span> (bytesRead == 0)
                <span class="kwrd">break</span>;

            <span class="rem">// Append the chunk to the string</span>
            page &#43;= <span class="kwrd">new</span> String(Encoding.UTF8.GetChars(buffer));
        }

        <span class="kwrd">return</span> page;   <span class="rem">// Return the complete string</span>
    }
}</pre>
<p>This method is called to fetch the journal RSS feed from my blog:</p>
<pre class="csharpcode"><span class="kwrd">string</span> address = <span class="str">&quot;www.robmiles.com&quot;</span>;
<span class="kwrd">string</span> name = <span class="str">&quot;/journal/rss.xml&quot;</span>;

<span class="kwrd">string</span> html = GetWebPage(address, name);</pre>
<p>You can use it to download from any RSS feed or page on the web. It will throw an exception if the page cannot be read. This version of my program does not perform exception handling however.</p>
<h2>Getting the Published Date</h2>
<p>The date is held in the form:</p>
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">pubDate</span><span class="kwrd">&gt;</span>Wed, 05 Nov 2008 22:38:52 &#43;0000<span class="kwrd">&lt;/</span><span class="html">pubDate</span><span class="kwrd">&gt;</span></pre>
<p>It would be enough just to record this content and check for changes in the text, but I decided that I might want to use the date information in a later version of the program and so I created some small helper methods to read numbers from the input string
 and a larger method to read the publish date itself:</p>
<pre class="csharpcode"><span class="kwrd">private</span> <span class="kwrd">static</span> DateTime getRecentPubDate(<span class="kwrd">string</span> html, <span class="kwrd">string</span> startTag)
{
    <span class="kwrd">int</span> index = html.IndexOf(startTag) ;

    <span class="kwrd">if</span> (index &lt; 0) 
        <span class="kwrd">throw</span> <span class="kwrd">new</span> Exception(<span class="str">&quot;Missing tag &quot;</span> &#43; startTag);

    index &#43;= startTag.Length;

    <span class="rem">// spin past the name of the day</span>
    <span class="kwrd">while</span> (index &lt; html.Length &amp;&amp; html[index] != <span class="str">','</span>) index&#43;&#43;;
    <span class="kwrd">if</span> (index == html.Length) 
        <span class="kwrd">throw</span> <span class="kwrd">new</span> Exception(<span class="str">&quot;Short publish date&quot;</span>);

    <span class="kwrd">int</span> dayValue = getInt(html, <span class="kwrd">ref</span> index, <span class="str">' '</span>);

    <span class="kwrd">string</span> monthName = getString(html, <span class="kwrd">ref</span> index, <span class="str">' '</span>);
    <span class="kwrd">int</span> monthValue = getMonth(monthName);

    <span class="kwrd">int</span> yearValue = getInt(html, <span class="kwrd">ref</span> index, <span class="str">' '</span>);
    <span class="kwrd">int</span> hourValue = getInt(html, <span class="kwrd">ref</span> index, <span class="str">':'</span>);
    <span class="kwrd">int</span> minuteValue = getInt(html, <span class="kwrd">ref</span> index, <span class="str">':'</span>);
    <span class="kwrd">int</span> secondValue = getInt(html, <span class="kwrd">ref</span> index, <span class="str">' '</span>);

    <span class="kwrd">return</span> <span class="kwrd">new</span> DateTime(yearValue, monthValue, dayValue, 
                        hourValue, minuteValue, secondValue);
}</pre>
<p>The main body of the program uses this method to extract the date out of the RSS feed. When a new date is found it is time to update the lights.</p>
<h2>Lights and Threads</h2>
<p>My first version of the program flashed the lights for a while and then checked to see if a new blog post had been made. This worked OK, but the process of loading the RSS feed from the server and checking the dates can take a few seconds, which meant that
 the flashing lights would freeze every now and then. This did not look very good, and so I decided to use two threads instead. One is in charge of flashing the lights in a random pattern and the other loads the RSS feed from my blog and checks the date of
 the most recent publication. </p>
<p>Note that the threading I am using is exactly the same as threading in the full .NET Framework.
</p>
<h2>Thread Communication</h2>
<p>The two threads communicate by means of a single boolean variable which is set to true when the blog alert is to take place. The display thread reads this flag and flashes the lights red if it is time to alert.
</p>
<pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">bool</span> alert = <span class="kwrd">false</span>;

<span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">void</span> flasher()
{
    setupOutputs();

    <span class="kwrd">while</span> (<span class="kwrd">true</span>)
    {
        randomDisplay(400, 10);
        <span class="kwrd">if</span> (alert)
        {
            alert = <span class="kwrd">false</span>;
            flashRed(600, 20);
        }
    }
}</pre>
<p>The methods <b>randomDisplay</b> and <b>flashRed</b> do exactly what you would expect. Each of them gets two numbers to control the lights. The first number gives the delay in milliseconds between flashes (a few hundred milliseconds giving best results).
 The second gives the number of times that the lights should be flashed before the method finishes.
<b>RandomDisplay</b> displays random colors, whereas <b>flashRed</b> is simply flashes the red lights. The
<b>alert</b> flag is cleared before the red lights are flashed so that the system will resume normal display after the alert.</p>
<p>The second thread in the system performs the blog download and date test behaviour. This all happens inside the
<b>Main</b> method:</p>
<pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">void</span> Main()
{
    flashThread = <span class="kwrd">new</span> System.Threading.Thread(flasher);

    flashThread.Start();

    <span class="kwrd">string</span> address = <span class="str">&quot;www.robmiles.com&quot;</span>;
    <span class="kwrd">string</span> name = <span class="str">&quot;/journal/rss.xml&quot;</span>;

    String html = GetWebPage(address, name);

    DateTime lastUpdate = getRecentPubDate(html, <span class="str">&quot;&lt;pubDate&gt;&quot;</span>);

    Debug.Print(<span class="str">&quot;Initial Update Value : &quot;</span> &#43; lastUpdate.ToString());

    <span class="kwrd">while</span> (<span class="kwrd">true</span>)
    {
        System.Threading.Thread.Sleep(10000);

        html = GetWebPage(address, name);

        DateTime blogUpdate = getRecentPubDate(html, <span class="str">&quot;&lt;pubDate&gt;&quot;</span>);

        <span class="kwrd">if</span> (!blogUpdate.Equals(lastUpdate))
        {
            Debug.Print(<span class="str">&quot;Updated at : &quot;</span> &#43; blogUpdate.ToString());
            lastUpdate = blogUpdate;
            alert = <span class="kwrd">true</span>;
        }
    }
}</pre>
<p>To reduce the load on the network the system only checks the blog feed every 10 seconds.</p>
<h1>Future Work</h1>
<p>The program itself works fine, but the error handling is not wonderful. Although some of the methods used throw exceptions these are not caught anywhere, causing the blog reading thread to terminate. This does not stop the lights flashing, but it does mean
 that there will be no more alerts. However, it is not too hard to create a version which contains proper error handling and even flashes the lights different colors to indicate the alarm conditions. I have created a version that flashes the lights yellow every
 now and then if the network connection fails. There is also considerable scope for reading other web based sources and changing the output accordingly. Feel free to do all these things and make sure that you have fun.</p>
<h2>Thanks</h2>
<p>Thanks go to Ian Mitchell of Ormston Technology (<a href="http://www.ormtec.co.uk/">http://www.ormtec.co.uk/</a>) for doing such a great job of hardware design and build.</p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:90ff2e0eefa3449089ad9e7600cda780">]]></description>
      <comments>http://channel9.msdn.com/coding4fun/articles/Controlling-Your-Festive-Lights-with-the-NET-Micro-Framework</comments>
      <itunes:summary>





Author:
Rob Miles: 
www.robmiles.com 


Download:
Download


Software:
Visual Studio 2008 Express Edition or better,

.NET Micro Framework 3.0


Hardware:
Digi Connect-ME

GHI Electronics Embedded Master

Devices Solutions Tahoe II



Time Required:
3 hours


Cost:
30 dollars for lights plus the .NET Micro Framework device



The Micro Framework is one of the newest kids on the .NET block, but it does something really rather wonderful. It brings embedded development within the reach of any C# programmer. If you know C# and love Visual Studio, you can now get started building
 hardware and controlling it with your software. Moreover, it lets developers achieve one of their most cherished dreams, to control their festive lights using programs that they have written. This project shows you how to do just that and adds an extra magical
 feature, in that you can make all your festive lights flash red whenever I, Rob Miles, make a new post on that most famous of blogs,
www.robmiles.com.  
Actually, you can modify the code so that you can make your lights do most anything in response to an event that happens on the web. You could signal home that you are running late, send the weather forecast to your Christmas tree or explore any number of
 communication options. You might decide that this is so useful that you leave your decorations up all year round. 
If you just want to play with the .NET Micro Framework and get a feel for how easy it is to create software for tiny devices you don&#39;t actually need to use any extra hardware at all. The project comes with a complete emulation of the lights display so that
 you can run the whole thing on your computer and learn how hardware and software can be made to work together without burning your fingers with a soldering iron. 
However building the hardware will give you an understanding of how some simple electronic components can be controlled from C# and even how serial and parallel data transfer works. It is also great fun.</itunes:summary>
      <link>http://channel9.msdn.com/coding4fun/articles/Controlling-Your-Festive-Lights-with-the-NET-Micro-Framework</link>
      <pubDate>Fri, 28 Nov 2008 01:58:46 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/coding4fun/articles/Controlling-Your-Festive-Lights-with-the-NET-Micro-Framework</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/c4f/images/9149635_100.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/c4f/images/9149635_220.jpg" height="165" width="220"></media:thumbnail>      
      <dc:creator>Rob Miles</dc:creator>
      <itunes:author>Rob Miles</itunes:author>
      <slash:comments>6</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/coding4fun/articles/Controlling-Your-Festive-Lights-with-the-NET-Micro-Framework/RSS</wfw:commentRss>
      <category>.NET Micro Framework</category>
      <category>Hardware</category>
      <category>Robotics</category>
      <category>Home Automation</category>
      <category>Holiday</category>
      <category>.NET Microframework</category>
      <category>hardwarehacks</category>
    </item>
  <item>
      <title>What&amp;rsquo;s New With Robotics Developer Studio 2008</title>
      <description><![CDATA[ <p>At the RoboDevelopment Conference and Expo in Santa Clara, California, Microsoft released the new version of Microsoft Developer Studio 2008 (Microsoft RDS), the latest version of the robotics programming platform and the third major release in two years. The toolkit allows developers, whether professional or hobbyists, to create software applications that run on robots. </p><h2>RDS 2008</h2><p>In the new version RDS 2008, there are now several new features, including:</p><p>• <strong>I</strong><strong>ncreased runtime performance.</strong> Performance is improved 1.5 to three times faster in message throughput between services, and services now load two times faster. Developers can now also define more specific message communication between services, reducing network utilization and optimizing the processing of data.</p><p>• <strong>Improvements to the Visual Programming Language (VPL) tool.</strong> The simple drag-and-drop-based visual programming tool now includes a simple method for defining and configuring distributed applications, making it easier to create applications that can run across networked devices. </p><p>• <strong>Improvements to the Visual Simulation Environment (VSE) tool.</strong> VSE now includes the ability to record and play back simulations, which allows for easier review of simulation experiences. VSE also adds a new floor-plan editor to simplify the definition of interior structures, and three new sample simulation environments (apartment, outdoor and urban) that enable developers to better test their robot applications. Another new feature is support for importing content from DS SolidWorks<sup>® </sup>3-D computer-aided design (CAD) software and Microsoft trueSpace 3-D modeling software.</p><p>• <strong>Greater development flexibility.</strong> This new release provides support for both Microsoft Visual Studio 2005 and Visual Studio 2008, which makes it accessible to a broad audience of developers. Improved support for running VPL and VSE on 64-bit Windows platforms provides more flexible installation options. </p><p>Along with the new release, ABB, a supplier of industrial robots and robotics software, is offering a connectivity package known as ABB Connect to Microsoft Robotics Developer Studio 2008 (ACM). ACM lets robotics students work in a virtual environment in order to design and implement virtual robotics. The package contains all the services needed to build a complete virtual robot controller. </p><h2>Challenges for Robotics Devs</h2><p>So now that you have the software, what can you do with it? Visit <a href="http://www.robochamps.com/">RoboChamps</a>, of course! At <a href="http://www.robochamps.com/">Robochamps</a>, there are a series of challenges for developers which are based in simulation, thus removing the barriers to entry that normally exist when writing code for robots…things like cost and deep hardware knowledge, for example. RoboChamps is built on top of the simulation functionality provided in Microsoft Robotics Developer Studio 2008, which means that participants can program their robots using the .NET languages they are already familiar with.</p><p><a href="http://on10.net/Link/3d51d55f-4a03-4332-8022-48d1407f6707/"><img width="506" height="384" title="robochamps" alt="robochamps" src="http://on10.net/Link/907a9f0c-1322-4a85-be79-ab727db25e2d/" border="0"></a></p><p>For an example of one of the challenges you could compete in, check out <a href="http://www.robochamps.com/rc/Common/challenge.aspx?id=Mars">The Mars Rover Challenge</a>, where you get to navigate Mars collecting data. </p><p><a href="http://on10.net/Link/097d1575-7c71-475f-8134-739103c1411c/"><img width="589" height="286" title="mars_rover_challenge" alt="mars_rover_challenge" src="http://on10.net/Link/11f3fa1b-03f3-49b1-99b9-057a3ad9d001/" border="0"></a>&nbsp; </p><p>Microsoft Robotics Developer Studio 2008 Standard Edition ($499.95 U.S.) is available at <a href="http://www.microsoft.com/robotics">http://www.microsoft.com/robotics</a>. Microsoft Robotics Developer Studio 2008 Express Edition will be available for no charge and downloadable from <a href="http://www.microsoft.com/robotics">http://www.microsoft.com/robotics</a>.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:1dc7f6ed3a2a4538ad769e0e001cbe15">]]></description>
      <comments>http://channel9.msdn.com/Blogs/coolstuff/Whatrsquos-New-With-Robotics-Developer-Studio-2008</comments>
      <itunes:summary> At the RoboDevelopment Conference and Expo in Santa Clara, California, Microsoft released the new version of Microsoft Developer Studio 2008 (Microsoft RDS), the latest version of the robotics programming platform and the third major release in two years. The toolkit allows developers, whether professional or hobbyists, to create software applications that run on robots.  RDS 2008In the new version RDS 2008, there are now several new features, including: • Increased runtime performance. Performance is improved 1.5 to three times faster in message throughput between services, and services now load two times faster. Developers can now also define more specific message communication between services, reducing network utilization and optimizing the processing of data. • Improvements to the Visual Programming Language (VPL) tool. The simple drag-and-drop-based visual programming tool now includes a simple method for defining and configuring distributed applications, making it easier to create applications that can run across networked devices.  • Improvements to the Visual Simulation Environment (VSE) tool. VSE now includes the ability to record and play back simulations, which allows for easier review of simulation experiences. VSE also adds a new floor-plan editor to simplify the definition of interior structures, and three new sample simulation environments (apartment, outdoor and urban) that enable developers to better test their robot applications. Another new feature is support for importing content from DS SolidWorks&#174; 3-D computer-aided design (CAD) software and Microsoft trueSpace 3-D modeling software. • Greater development flexibility. This new release provides support for both Microsoft Visual Studio 2005 and Visual Studio 2008, which makes it accessible to a broad audience of developers. Improved support for running VPL and VSE on 64-bit Windows platforms provides more flexible installation options.  Along with the new release, ABB, a supplier of industrial </itunes:summary>
      <link>http://channel9.msdn.com/Blogs/coolstuff/Whatrsquos-New-With-Robotics-Developer-Studio-2008</link>
      <pubDate>Mon, 24 Nov 2008 15:20:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/coolstuff/Whatrsquos-New-With-Robotics-Developer-Studio-2008</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/320/on10_b115fb39-edb4-47e1-a663-fa4d5772325e.jpg" height="0" width="0"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/85/on10_e4eae468-f84f-43c8-96d1-040c391291a8.jpg" height="64" width="85"></media:thumbnail>      
      <dc:creator>Sarah Perez</dc:creator>
      <itunes:author>Sarah Perez</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/coolstuff/Whatrsquos-New-With-Robotics-Developer-Studio-2008/RSS</wfw:commentRss>
      <category>Robotics</category>
      <category>Robots</category>
      <category>robochamps</category>
    </item>
  <item>
      <title>This Week on C9: Xbox &amp; Zune get updates, C9 gets custom CSS, and autonomous trucks!</title>
      <description><![CDATA[This week on Channel 9, Dan and Brian are joined by Steve Velat, a PhD student at Univ. of Florida working on cool autonomous robots. This week's news includes:<br>
<br>
- <a shape="rect" href="http://store.microsoft.com" shape="rect">Microsoft store</a> launches (1:00 - 1:40)<br>
- <a shape="rect" href="http://www.xbox.com" shape="rect">The New Xbox Experience</a> is now available including new services like NetFlix, new avatars, and XNA Community games (1:51 - 3:37)<br>
- <a shape="rect" href="http://www.liveside.net/main/archive/2008/11/18/microsoft-discontinues-windows-live-onecare-offers-lightweight-alternative-for-free.aspx" shape="rect">
Windows Live OneCare is discontinued</a>, but Morro will be a free lightweight offering...60% of developed nations don't have up-to-date security protection (higher in emerging markets) (3:37 - 5:09)<br>
- <a shape="rect" href="http://www.microsoft.com/presspass/press/2008/nov08/11-19ZunePassPR.mspx" shape="rect">
Zune Pass update</a> means that every month you can own 10 songs (5:09 - 6:23)<br>
- <a shape="rect" href="http://www.shahine.com/omar/WindowsLivePeopleAndThePast12Months.aspx" shape="rect">
Omar Shahine discusses Windows Live updates</a>, and New York Times declares Microsoft the winner of Social Inbox 2.0 (6:23 - 7:40)<br>
- <a shape="rect" href="http://dev.live.com/blogs/devlive/archive/2008/11/13/434.aspx" shape="rect">
Live Search API</a> adds XML, JSON APIs, removes query limit, and enables you to specify Web, news, images, phonebook, Encarta Instant Answers, etc for search results (7:40 - 9:17)<br>
- CodeProject article shows building a <a shape="rect" href="http://www.codeproject.com/KB/recipes/lego_pan_tilt_camera.aspx" shape="rect">
Pan &amp; Tilt camera with object tracking</a> using LEGO NXT (9:17 - 10:25)<br>
- The 9 guy, Brian, and Dan make it on to <a shape="rect" href="http://www.microspotting.com/2008/11/you-are-the-empire" shape="rect">
Microspotting</a> (10:25 - 11:12)<br>
- Rico Mariani, the architect for Visual Studio tooling, discusses the <a shape="rect" href="http://blogs.msdn.com/ricom/archive/2008/11/18/the-visual-studio-tech-roadmap-starring-visual-studio-2010.aspx" shape="rect">
Visual Studio Technology Roadmap</a> (11:12 - 13:10)<br>
- <a shape="rect" href="http://www.informit.com/podcasts/channel.aspx?c=3761c00b-ef8f-4385-9b08-a6e1c7a9a35f" shape="rect">
OnMicrosoft video site launches</a>, includes interviews with the Microsoft product teams (13:10 - 14:00)<br>
- Channel 9 dev team adds <a shape="rect" href="http://channel9.msdn.com/forums/Coffeehouse/443794-C9-Theme-Thread/" shape="rect">
user-generated CSS extensions and Jamie's built some cool ones already</a> (14:00 - 15:00)<br>
- Charles has a two-part video series with Brian Beckman on state monads and concurrency,
<a shape="rect" href="http://channel9.msdn.com/shows/Going&#43;Deep/Brian-Beckman-The-Zen-of-Expressing-State-The-State-Monad/" shape="rect">
Part 1</a> and <a shape="rect" href="http://channel9.msdn.com/shows/Going&#43;Deep/Brian-Beckman-The-Zen-of-Stateless-State-The-State-Monad-Part-2/" shape="rect">
Part 2</a> (15:00 - 15:46)<br>
- Dan's pick of the week: Dan declares <a shape="rect" href="www.worldofwarcraft.com" shape="rect">
Wrath of the Lich King</a> is the most extensible and popular game on the planet. (15:46 - 18:15)<br>
- Brian's pick of the week: Greg Duncan's find on <a shape="rect" href="http://coolthingoftheday.blogspot.com/2008/11/extending-team-members-feature-in-vsts.html" shape="rect">
extending VSTS Power Tools with Skype</a> to talk directly to teammates (18:15 - 19:20)<br>
- Steve's pick of the week: Robotic Assisted Convoy Operation - A video clip of automated transport vehicles using IR emitters to drive actual convoy trucks&nbsp; (19:20 - end)
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:75048b4ecf2c40b5b26e9dea00c4fb38">]]></description>
      <comments>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/This-Week-on-C9-Xbox--Zune-get-updates-C9-gets-custom-CSS-and-autonomous-trucks</comments>
      <itunes:summary>This week on Channel 9, Dan and Brian are joined by Steve Velat, a PhD student at Univ. of Florida working on cool autonomous robots. This week&#39;s news includes:

- Microsoft store launches (1:00 - 1:40)
- The New Xbox Experience is now available including new services like NetFlix, new avatars, and XNA Community games (1:51 - 3:37)
- 
Windows Live OneCare is discontinued, but Morro will be a free lightweight offering...60% of developed nations don&#39;t have up-to-date security protection (higher in emerging markets) (3:37 - 5:09)
- 
Zune Pass update means that every month you can own 10 songs (5:09 - 6:23)
- 
Omar Shahine discusses Windows Live updates, and New York Times declares Microsoft the winner of Social Inbox 2.0 (6:23 - 7:40)
- 
Live Search API adds XML, JSON APIs, removes query limit, and enables you to specify Web, news, images, phonebook, Encarta Instant Answers, etc for search results (7:40 - 9:17)
- CodeProject article shows building a 
Pan &amp;amp; Tilt camera with object tracking using LEGO NXT (9:17 - 10:25)
- The 9 guy, Brian, and Dan make it on to 
Microspotting (10:25 - 11:12)
- Rico Mariani, the architect for Visual Studio tooling, discusses the 
Visual Studio Technology Roadmap (11:12 - 13:10)
- 
OnMicrosoft video site launches, includes interviews with the Microsoft product teams (13:10 - 14:00)
- Channel 9 dev team adds 
user-generated CSS extensions and Jamie&#39;s built some cool ones already (14:00 - 15:00)
- Charles has a two-part video series with Brian Beckman on state monads and concurrency,

Part 1 and 
Part 2 (15:00 - 15:46)
- Dan&#39;s pick of the week: Dan declares 
Wrath of the Lich King is the most extensible and popular game on the planet. (15:46 - 18:15)
- Brian&#39;s pick of the week: Greg Duncan&#39;s find on 
extending VSTS Power Tools with Skype to talk directly to teammates (18:15 - 19:20)
- Steve&#39;s pick of the week: Robotic Assisted Convoy Operation - A video clip of automated transport vehicles using IR emitters </itunes:summary>
      <itunes:duration>1486</itunes:duration>
      <link>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/This-Week-on-C9-Xbox--Zune-get-updates-C9-gets-custom-CSS-and-autonomous-trucks</link>
      <pubDate>Sat, 22 Nov 2008 18:33:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/This+Week+On+Channel+9/This-Week-on-C9-Xbox--Zune-get-updates-C9-gets-custom-CSS-and-autonomous-trucks</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/444639_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/444639_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/3/6/4/4/4/ThisWeekC9Nov21_large_ch9.jpg" height="240" width="320"></media:thumbnail>
      <media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/3/6/4/4/4/ThisWeekC9Nov21_small_ch9.jpg" height="64" width="85"></media:thumbnail>
      <media:group>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/3/6/4/4/4/ThisWeekC9Nov21_2MB_ch9.wmv" expression="full" duration="1486" fileSize="433522019" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/3/6/4/4/4/ThisWeekC9Nov21_ch9.mp3" expression="full" duration="1486" fileSize="11896291" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/3/6/4/4/4/ThisWeekC9Nov21_ch9.mp4" expression="full" duration="1486" fileSize="303826022" type="video/mp4" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/3/6/4/4/4/ThisWeekC9Nov21_ch9.wma" expression="full" duration="1486" fileSize="24058017" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/3/6/4/4/4/ThisWeekC9Nov21_ch9.wmv" expression="full" duration="1486" fileSize="87006359" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/3/6/4/4/4/ThisWeekC9Nov21_Zune_ch9.wmv" expression="full" duration="1486" fileSize="191454339" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="mms://mschnlnine.wmod.llnwd.net/a1809/d1/ch9/9/3/6/4/4/4/ThisWeekC9Nov21_s_ch9.wmv" expression="full" duration="1486" fileSize="210" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/3/6/4/4/4/ThisWeekC9Nov21_ch9.wmv" length="87006359" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Dan Fernandez</dc:creator>
      <itunes:author>Dan Fernandez</itunes:author>
      <slash:comments>10</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/This-Week-on-C9-Xbox--Zune-get-updates-C9-gets-custom-CSS-and-autonomous-trucks/RSS</wfw:commentRss>
      <category>Channel 9 Team</category>
      <category>Live Services</category>
      <category>Robotics</category>
      <category>Xbox</category>
    </item>
  <item>
      <title>Channel 9 on Mars: Inside the Mars Exploration Mission - Past, Present and Future</title>
      <description><![CDATA[While in LA for <a shape="rect" href="http://microsoftpdc.com" shape="rect" target="_blank">
PDC2008</a>, we were lucky enough to get the chance to head down to Pasadena for a tour and interview at the
<a shape="rect" href="http://www.jpl.nasa.gov/" shape="rect" target="_blank">Jet Propulsion Laboratory</a>.&nbsp;<a shape="rect" href="http://on10.net/People/Nic/" shape="rect" target="_blank">Nic Fillingham</a> and I grabbed a cab and met up with the great Marc
 Mercuri (of <a shape="rect" href="http://www.robochamps.com" shape="rect" target="_blank">
RoboChamps </a>fame), DPE's VP Walid Abu-Hadba and others to get a look at the JPL Mars Rover facility and meet some of the folks behind the
<a shape="rect" href="http://marsrovers.jpl.nasa.gov/home/index.html" shape="rect" target="_blank">
Mars Exploration Rover Mission</a>. Our guide was the venerable Dave Lavery who is the Program Executive for
<a shape="rect" href="http://en.wikipedia.org/wiki/Timeline_of_solar_system_exploration" class="mw-redirect" title="Timeline of solar system exploration" shape="rect">
Solar System Exploration</a> at <a shape="rect" href="http://www.nasa.gov" title="NASA" shape="rect" target="_blank">
NASA</a>.<br /><br />This is a fascinating glimpse into the world of solar system exploration from the perspective of robotics and software design&nbsp;(Dave was a major contributor to the robotics design and development efforts behind (and in) the Mars rovers, Spirit and Opportunity).<br /><br />Tune in and learn about some of the challenges of developing autonomous machines that you will never get to touch again (think about the reduncancy requirements for a robot rover that is deployed 100 million miles away from Earth...). It's really exciting that
 the Mars rovers Spirit and Opportunity will be joined on the red planet by a new mobile robot equipped with an advanced laboratory capable of unparalleled experimentation and analysis. The folks at JPL think 100 million miles outside of the box!<br /><br /> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:f4241b1577a04d51ad8d9dea00cd8176">]]></description>
      <comments>http://channel9.msdn.com/Blogs/Charles/Channel-9-on-Mars-Inside-the-Mars-Exploration-Mission-Past-Present-and-Future</comments>
      <itunes:summary>While in LA for 
PDC2008, we were lucky enough to get the chance to head down to Pasadena for a tour and interview at the
Jet Propulsion Laboratory.&amp;nbsp;Nic Fillingham and I grabbed a cab and met up with the great Marc
 Mercuri (of 
RoboChamps fame), DPE&#39;s VP Walid Abu-Hadba and others to get a look at the JPL Mars Rover facility and meet some of the folks behind the

Mars Exploration Rover Mission. Our guide was the venerable Dave Lavery who is the Program Executive for

Solar System Exploration at 
NASA.This is a fascinating glimpse into the world of solar system exploration from the perspective of robotics and software design&amp;nbsp;(Dave was a major contributor to the robotics design and development efforts behind (and in) the Mars rovers, Spirit and Opportunity).Tune in and learn about some of the challenges of developing autonomous machines that you will never get to touch again (think about the reduncancy requirements for a robot rover that is deployed 100 million miles away from Earth...). It&#39;s really exciting that
 the Mars rovers Spirit and Opportunity will be joined on the red planet by a new mobile robot equipped with an advanced laboratory capable of unparalleled experimentation and analysis. The folks at JPL think 100 million miles outside of the box!</itunes:summary>
      <itunes:duration>1212</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/Charles/Channel-9-on-Mars-Inside-the-Mars-Exploration-Mission-Past-Present-and-Future</link>
      <pubDate>Mon, 17 Nov 2008 17:33:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/Charles/Channel-9-on-Mars-Inside-the-Mars-Exploration-Mission-Past-Present-and-Future</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/6ef4/76630f9f-607e-4d9e-9461-097778f06ef4/JPLVisit_100.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/6ef4/76630f9f-607e-4d9e-9461-097778f06ef4/JPLVisit_220.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/6ef4/76630f9f-607e-4d9e-9461-097778f06ef4/JPLVisit_512.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/6ef4/76630f9f-607e-4d9e-9461-097778f06ef4/JPLVisit.mp3" expression="full" duration="1212" fileSize="19409422" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/6ef4/76630f9f-607e-4d9e-9461-097778f06ef4/JPLVisit.mp4" expression="full" duration="1212" fileSize="115098766" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/6ef4/76630f9f-607e-4d9e-9461-097778f06ef4/JPLVisit.webm" expression="full" duration="1212" fileSize="51318915" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/6ef4/76630f9f-607e-4d9e-9461-097778f06ef4/JPLVisit.wma" expression="full" duration="1212" fileSize="9819099" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/6ef4/76630f9f-607e-4d9e-9461-097778f06ef4/JPLVisit.wmv" expression="full" duration="1212" fileSize="138942725" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/6ef4/76630f9f-607e-4d9e-9461-097778f06ef4/JPLVisit_high.mp4" expression="full" duration="1212" fileSize="252778018" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/6ef4/76630f9f-607e-4d9e-9461-097778f06ef4/JPLVisit_mid.mp4" expression="full" duration="1212" fileSize="176503454" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/6ef4/76630f9f-607e-4d9e-9461-097778f06ef4/JPLVisit_Source.wmv" expression="full" duration="1212" fileSize="357204768" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/6ef4/76630f9f-607e-4d9e-9461-097778f06ef4/JPLVisit.ism/manifest" expression="full" duration="1212" fileSize="5996" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/6ef4/76630f9f-607e-4d9e-9461-097778f06ef4/JPLVisit.wmv" length="138942725" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Charles</dc:creator>
      <itunes:author>Charles</itunes:author>
      <slash:comments>16</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/Charles/Channel-9-on-Mars-Inside-the-Mars-Exploration-Mission-Past-Present-and-Future/RSS</wfw:commentRss>
      <category>Embedded Software</category>
      <category>Mars</category>
      <category>Robotics</category>
    </item>
  <item>
      <title>Channel 9 on Mars: A tour of the NASA Jet Propulsion Lab</title>
      <description><![CDATA[Charles and I were lucky enough to get a tour of the NASA&nbsp;<a href="http://en.wikipedia.org/wiki/Jet_Propulsion_Laboratory" target="_blank">Jet Propulsion Laboratory</a> in Pasendena, CA last month whilst we were in town for PDC2008.<br><a href="http://en.wikipedia.org/wiki/Dave_Lavery" target="_blank">Dave Lavery</a>,&nbsp;<a href="http://ranier.hq.nasa.gov/staff/lavery.shtm" target="_blank">Program Executive for Solar System Exploration</a> (aka coolest job title evar!)&nbsp;granted us permission&nbsp;to film a portion of&nbsp;his&nbsp;awesome&nbsp;tour and spoke with Charles about designing and building robots for use on other planets.<br><br>&quot;<em>Tune in and learn about some of the challenges of developing autonomous machines that you will never get to touch again (think about the reduncancy requirements for a robot rover that is deployed 100 million miles away from Earth...)</em>&quot;<br><br>Check it out here:&nbsp;<a href="http://channel9.msdn.com/posts/Charles/Channel-9-on-Mars-Inside-the-Mars-Exploration-Mission-Past-Present-and-Future/"><strong>http://channel9.msdn.com/posts/Charles/Channel-9-on-Mars-Inside-the-Mars-Exploration-Mission-Past-Present-and-Future/</strong></a> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:fd2f632d3ff14623a6629e0f00ea7e17">]]></description>
      <comments>http://channel9.msdn.com/Blogs/NicFill/Channel-9-on-Mars-A-tour-of-the-NASA-Jet-Propulsion-Lab</comments>
      <itunes:summary>Charles and I were lucky enough to get a tour of the NASA&amp;nbsp;Jet Propulsion Laboratory in Pasendena, CA last month whilst we were in town for PDC2008.Dave Lavery,&amp;nbsp;Program Executive for Solar System Exploration (aka coolest job title evar!)&amp;nbsp;granted us permission&amp;nbsp;to film a portion of&amp;nbsp;his&amp;nbsp;awesome&amp;nbsp;tour and spoke with Charles about designing and building robots for use on other planets.&amp;quot;Tune in and learn about some of the challenges of developing autonomous machines that you will never get to touch again (think about the reduncancy requirements for a robot rover that is deployed 100 million miles away from Earth...)&amp;quot;Check it out here:&amp;nbsp;http://channel9.msdn.com/posts/Charles/Channel-9-on-Mars-Inside-the-Mars-Exploration-Mission-Past-Present-and-Future/</itunes:summary>
      <link>http://channel9.msdn.com/Blogs/NicFill/Channel-9-on-Mars-A-tour-of-the-NASA-Jet-Propulsion-Lab</link>
      <pubDate>Mon, 17 Nov 2008 14:57:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/NicFill/Channel-9-on-Mars-A-tour-of-the-NASA-Jet-Propulsion-Lab</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/320/on10_98d4d903-6298-4d1b-ac2e-d58e8eb18b6a.jpg" height="0" width="0"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/85/on10_fe906f11-36d2-4aa1-8ba4-e3796cd4225e.jpg" height="64" width="85"></media:thumbnail>      
      <dc:creator>Nic Fillingham</dc:creator>
      <itunes:author>Nic Fillingham</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/NicFill/Channel-9-on-Mars-A-tour-of-the-NASA-Jet-Propulsion-Lab/RSS</wfw:commentRss>
      <category>Mars</category>
      <category>NASA</category>
      <category>Robotics</category>
      <category>jpl</category>
    </item>
  <item>
      <title>We Love Robots</title>
      <description><![CDATA[At Microsoft, we love Robots.&nbsp; Turns out, we’re not the only ones.&nbsp; Our friends at NASA’s Jet Propulsion Laboratory have brought a full scale replica of the Mars Exploratory Rover to display in the “Big Room” next to the Robotics Booth.&nbsp; In addition, some
 of the actual engineers and scientists from the Pasadena lab working on the Rover will be on-hand to answer questions and geek out with PDC attendees.&nbsp; Make sure to stop by, get a picture of yourself with the Rover, and ask all those questions you have for
 the “rocket scientists” at NASA!  <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:d4730f575fbc462c93e59df80040b073">]]></description>
      <comments>http://channel9.msdn.com/Blogs/PDCNews/We-Love-Robots</comments>
      <itunes:summary>At Microsoft, we love Robots.&amp;nbsp; Turns out, we’re not the only ones.&amp;nbsp; Our friends at NASA’s Jet Propulsion Laboratory have brought a full scale replica of the Mars Exploratory Rover to display in the “Big Room” next to the Robotics Booth.&amp;nbsp; In addition, some
 of the actual engineers and scientists from the Pasadena lab working on the Rover will be on-hand to answer questions and geek out with PDC attendees.&amp;nbsp; Make sure to stop by, get a picture of yourself with the Rover, and ask all those questions you have for
 the “rocket scientists” at NASA! </itunes:summary>
      <link>http://channel9.msdn.com/Blogs/PDCNews/We-Love-Robots</link>
      <pubDate>Fri, 24 Oct 2008 20:44:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/PDCNews/We-Love-Robots</guid>      
      <dc:creator>D. Begley</dc:creator>
      <itunes:author>D. Begley</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/PDCNews/We-Love-Robots/RSS</wfw:commentRss>
      <category>Announcements</category>
      <category>PDC</category>
      <category>PDC 2008</category>
      <category>PDC08</category>
      <category>Robotics</category>
    </item>
  <item>
      <title>CoroWare Technologies: Mobile Robotics Integrator</title>
      <description><![CDATA[
<p>CoroWare Technologies, a wholly owned subsidiary of <a href="http://www.coroware.com/">
CoroWare, Inc</a>. (CROE.OB), is a systems and mobile robotics integrator.&nbsp; They’ve recently been awarded Microsoft Certified Gold Partner status.&nbsp; CoroWare has made their mark on Microsoft platforms through developing software and solutions for mobile service
 robotics and business automation.&nbsp; Here, we meet David Hyams, CTO for Coroware and learn more about how this company is shaping the future through technology developments to improve and simplify our lives.</p>
<p>Check out the <a href="http://www.microsoft.com/isv" target="_blank">Microsoft ISV site</a> for more information related to partnering with Microsoft.</p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:4c8885f51e1c4c9494249dea00bf85e7">]]></description>
      <comments>http://channel9.msdn.com/Shows/Inside+Out/CoroWare-Technologies-Mobile-Robotics-Integrator</comments>
      <itunes:summary>
CoroWare Technologies, a wholly owned subsidiary of 
CoroWare, Inc. (CROE.OB), is a systems and mobile robotics integrator.&amp;nbsp; They’ve recently been awarded Microsoft Certified Gold Partner status.&amp;nbsp; CoroWare has made their mark on Microsoft platforms through developing software and solutions for mobile service
 robotics and business automation.&amp;nbsp; Here, we meet David Hyams, CTO for Coroware and learn more about how this company is shaping the future through technology developments to improve and simplify our lives. 
Check out the Microsoft ISV site for more information related to partnering with Microsoft. 
</itunes:summary>
      <itunes:duration>825</itunes:duration>
      <link>http://channel9.msdn.com/Shows/Inside+Out/CoroWare-Technologies-Mobile-Robotics-Integrator</link>
      <pubDate>Thu, 18 Sep 2008 18:01:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/Inside+Out/CoroWare-Technologies-Mobile-Robotics-Integrator</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/320/2e546e29-7332-49a6-bc76-9dcf9413c180.jpg" height="0" width="0"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/422769_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/422769_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/85/c5389f2a-97b0-4c3b-a420-6cb70cb34b61.jpg" height="64" width="85"></media:thumbnail>
      <media:group>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/6/7/2/2/4/IOCoroware_2MB_ch9.wmv" expression="full" duration="825" fileSize="258250895" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/6/7/2/2/4/IOCoroware_ch9.mp3" expression="full" duration="825" fileSize="6602292" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/6/7/2/2/4/IOCoroware_ch9.mp4" expression="full" duration="825" fileSize="44645264" type="video/mp4" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/6/7/2/2/4/IOCoroware_ch9.wma" expression="full" duration="825" fileSize="6682953" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/6/7/2/2/4/IOCoroware_ch9.wmv" expression="full" duration="825" fileSize="52502657" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/6/7/2/2/4/IOCoroware_Zune_ch9.wmv" expression="full" duration="825" fileSize="65434461" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="mms://mschnlnine.wmod.llnwd.net/a1809/d1/ch9/9/6/7/2/2/4/IOCoroware_s_ch9.wmv" expression="full" duration="825" fileSize="200" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/9/6/7/2/2/4/IOCoroware_ch9.wmv" length="52502657" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Charles</dc:creator>
      <itunes:author>Charles</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/Inside+Out/CoroWare-Technologies-Mobile-Robotics-Integrator/RSS</wfw:commentRss>
      <category>Microsoft Solutions</category>
      <category>Partner</category>
      <category>Robotics</category>
    </item>
  <item>
      <title>ARCast.TV - Stephen Tarmey of Tyco on adopting Robotics Studio CCR for High Performance Async IO</title>
      <description><![CDATA[
<div><a href="http://blogs.msdn.com/bobfamiliar">Bob Familiar</a>&nbsp;interviews <a href="http://www.informationweek.com/news/software/systems_management/showArticle.jhtml?articleID=208402125&amp;cid=RSSfeed_IWK_All">
Stephen Tarmey </a>of&nbsp;<a href="http://www.swhouse.com/home/default.aspx">Tyco Software House</a> on how he discovered the Concurrency and Coordination Runtime in the
<a href="http://msdn.microsoft.com/en-us/robotics/default.aspx">Robotics Studio </a>
SDK and used it to implement a high throughput&nbsp;asynchronous I/O pattern. </div>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:c06722440d4e4d68ad7a9dea00c12026">]]></description>
      <comments>http://channel9.msdn.com/Shows/ARCast.TV/ARCastTV-Stephen-Tarmey-of-Tyco-on-adopting-Robotics-Studio-CCR-for-High-Performance-Async-IO</comments>
      <itunes:summary>
Bob Familiar&amp;nbsp;interviews 
Stephen Tarmey of&amp;nbsp;Tyco Software House on how he discovered the Concurrency and Coordination Runtime in the
Robotics Studio 
SDK and used it to implement a high throughput&amp;nbsp;asynchronous I/O pattern. 
</itunes:summary>
      <itunes:duration>1076</itunes:duration>
      <link>http://channel9.msdn.com/Shows/ARCast.TV/ARCastTV-Stephen-Tarmey-of-Tyco-on-adopting-Robotics-Studio-CCR-for-High-Performance-Async-IO</link>
      <pubDate>Tue, 16 Sep 2008 15:19:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/ARCast.TV/ARCastTV-Stephen-Tarmey-of-Tyco-on-adopting-Robotics-Studio-CCR-for-High-Performance-Async-IO</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/413356_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/413356_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/6/5/3/3/1/4/ARCastTarmeyOnCCR_large_ch9.jpg" height="240" width="320"></media:thumbnail>
      <media:thumbnail url="http://mschnlnine.vo.llnwd.net/d1/ch9/6/5/3/3/1/4/ARCastTarmeyOnCCR_small_ch9.jpg" height="64" width="85"></media:thumbnail>
      <media:group>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/6/5/3/3/1/4/ARCastTarmeyOnCCR_2MB_ch9.wmv" expression="full" duration="1076" fileSize="279243891" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/6/5/3/3/1/4/ARCastTarmeyOnCCR_ch9.mp3" expression="full" duration="1076" fileSize="8610795" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/6/5/3/3/1/4/ARCastTarmeyOnCCR_ch9.mp4" expression="full" duration="1076" fileSize="61117981" type="video/mp4" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/6/5/3/3/1/4/ARCastTarmeyOnCCR_ch9.wma" expression="full" duration="1076" fileSize="8710653" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/6/5/3/3/1/4/ARCastTarmeyOnCCR_ch9.wmv" expression="full" duration="1076" fileSize="62973683" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://mschnlnine.vo.llnwd.net/d1/ch9/6/5/3/3/1/4/ARCastTarmeyOnCCR_Zune_ch9.wmv" expression="full" duration="1076" fileSize="85275967" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="mms://mschnlnine.wmod.llnwd.net/a1809/d1/ch9/6/5/3/3/1/4/ARCastTarmeyOnCCR_s_ch9.wmv" expression="full" duration="1076" fileSize="214" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://mschnlnine.vo.llnwd.net/d1/ch9/6/5/3/3/1/4/ARCastTarmeyOnCCR_ch9.wmv" length="62973683" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Bob Familiar</dc:creator>
      <itunes:author>Bob Familiar</itunes:author>
      <slash:comments>1</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/ARCast.TV/ARCastTV-Stephen-Tarmey-of-Tyco-on-adopting-Robotics-Studio-CCR-for-High-Performance-Async-IO/RSS</wfw:commentRss>
      <category>ARCast</category>
      <category>Architecture</category>
      <category>CCR</category>
      <category>Concurrency</category>
      <category>Patterns</category>
      <category>Robotics</category>
      <category>Robotics Studio</category>
      <category>Software House</category>
      <category>Tyco</category>
    </item>
  <item>
      <title>Microsoft&amp;rsquo;s New Robotic Receptionist</title>
      <description><![CDATA[Last week, Chief Research and Strategy officer <a href="http://www.microsoft.com/msft/speech/FY08/MundieFAM2008.mspx">Craig Mundie demonstrated a software-based robot</a> that uses both visual and voice recognition as well as speech synthesis to handle some basic tasks. The robot will be put into place on Microsoft’s campus to act as sort of a “robotic receptionist” that will handle shuttle requests from visitors. In the video Mundie played at the <a href="http://www.microsoft.com/msft/speech/FY08/MundieFAM2008.mspx">Financial Analysts Meeting (FAM),</a> two Microsoft employees walked up to the robot and it asked “Which building do you want to go to?” They responded, and then the robot, after double-checking their request and confirming some details, announced that the shuttle “should be here in four minutes.” Says Mundie, “This is what a natural user interface is all about and it won't be just a receptionist. This is just the tip of the iceberg.&quot;&nbsp; <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:f0a5fb7e4a7e4473811e9e0e0097aa08">]]></description>
      <comments>http://channel9.msdn.com/Blogs/coolstuff/Microsoftrsquos-New-Robotic-Receptionist</comments>
      <itunes:summary>Last week, Chief Research and Strategy officer Craig Mundie demonstrated a software-based robot that uses both visual and voice recognition as well as speech synthesis to handle some basic tasks. The robot will be put into place on Microsoft’s campus to act as sort of a “robotic receptionist” that will handle shuttle requests from visitors. In the video Mundie played at the Financial Analysts Meeting (FAM), two Microsoft employees walked up to the robot and it asked “Which building do you want to go to?” They responded, and then the robot, after double-checking their request and confirming some details, announced that the shuttle “should be here in four minutes.” Says Mundie, “This is what a natural user interface is all about and it won&#39;t be just a receptionist. This is just the tip of the iceberg.&amp;quot;&amp;nbsp;</itunes:summary>
      <link>http://channel9.msdn.com/Blogs/coolstuff/Microsoftrsquos-New-Robotic-Receptionist</link>
      <pubDate>Tue, 29 Jul 2008 14:50:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/coolstuff/Microsoftrsquos-New-Robotic-Receptionist</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/320/on10_6b01a473-611b-4089-bd3a-0f426a23a139.jpg" height="0" width="0"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/85/on10_60cc6eab-e258-4685-8df8-0e8b9e0aabee.jpg" height="64" width="85"></media:thumbnail>      
      <dc:creator>Sarah Perez</dc:creator>
      <itunes:author>Sarah Perez</itunes:author>
      <slash:comments>2</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/coolstuff/Microsoftrsquos-New-Robotic-Receptionist/RSS</wfw:commentRss>
      <category>Robotics</category>
      <category>Robot</category>
    </item>
  <item>
      <title>Home Automation with Microsoft Robotics Developer Studio 2008</title>
      <description><![CDATA[<span id="c4fmetadata">
<table cellspacing="0" cellpadding="1" width="100%" border="0">
<tbody>
<tr class="entry_overview">
<td width="50"></td>
<td>
<p>Typically we think of robots as machines from science fiction or as industrial robots such as those that build and paint cars. In the world of Microsoft Robotics Developer Studio, anything that has sensors and/or actuators can be considered a robot. In this
 article, we look at an automated house as a robot and apply the Decentralized Software Services model of Microsoft Robotics Studio to implementing some home automation tasks.</p>
</td>
</tr>
<tr>
<td colspan="2">
<div class="entry_author">Charles Stacy Harris III</div>
<br>
<div class="entry_details"><b>Difficulty: </b><span class="entry_details_input">Intermediate</span></div>
<div class="entry_details"><b>Time Required:</b> <span class="entry_details_input">
6-10 hours</span></div>
<div class="entry_details"><b>Cost: </b><span class="entry_details_input">$100-$200 for hardware (Optional, $0 if using only simulation)</span></div>
<div class="entry_details"><b>Software: </b><span class="entry_details_input">Visual Studio or Visual Studio Express, Microsoft Robotics Developer Studio 2008 CTP April,
<a href="http://www.controlthink.com/zwavesdk.htm">ControlThink Z-Wave PC SDK</a>
</span></div>
<div class="entry_details"><b>Hardware: </b><span class="entry_details_input">(All Optional) Elk M1G/M1EZ Security and Automation Panel, Z-Wave Dimmer Switches, Z-Wave Controller such as the ControlThink ThinkStick or equivalent.</span></div>
<div class="entry_details"><b>Download: </b><a href="http://www.codeplex.com/houserobot">Download</a>
<ul>
</ul>
</div>
</td>
</tr>
</tbody>
</table>
</span>
<h3>House, Robot</h3>
<p>Those of you who know me or who have read my previous Coding4Fun article <a href="http://blogs.msdn.com/coding4fun/archive/2007/10/05/5296972.aspx">
Home Automation with Windows Workflow</a>, know that I'm nuts about home automation. I'm even more passionate about robotics and I've wanted to try out some things with Microsoft Robotics Studio since the very first version. Recently I had a long weekend, so
 I spent a few hours putting together some simple home automation examples using Microsoft Robotics Developer Studio 2008 CTP April. Check out the
<a href="http://msdn2.microsoft.com/en-us/robotics/default.aspx">Microsoft Robotics Developer Center</a> for details on how to get the CTP.</p>
<p>The examples in this article duplicate what I did using Windows Workflow in my previous article, but instead use the Decentralized Software Services (DSS) approach of Microsoft Robotics, and Microsoft Visual Programming Language (VPL) for a simple way to
 write automation tasks. The <a href="http://msdn2.microsoft.com/en-us/robotics/default.aspx">
Microsoft Robotics Developer Center</a> contains a lot of detailed information about DSS, VPL, and the other technologies found in Microsoft Robotics Developer Studio. For now, let's just cover some basics. To get further along with the code in this article,
 you'll want to check out some of the excellent tutorials presented by the Microsoft Robotics team.</p>
<h3>Services, Messages, and Ports</h3>
<p>A DSS Service is the basic component upon which Microsoft Robotics applications are built. In fact, DSS services are a generic construct that can and have been used outside of the context of robotics. DSS services contain state and the service state is manipulated
 via messages sent to the service on a service port.</p>
<p>Messages sent to a service are structured .NET classes that may contain a message payload that determines how or even if state will be modified, or what part of a service state should be retrieved. There are also message that do not directly manipulate state,
 but may have some other side-effects. Services respond to messages such as CREATE, LOOKUP, UPDATE, etc. In addition, you can define messages that extend the semantics of the core messages.</p>
<p>Ports are the mechanism through which services communicate. Ports accept a set of message types that are defined by the service itself. In addition, ports are also used for outbound communication in situations such as subscribing to event notification from
 a service.</p>
<p>Again, there are excellent online resources for learning the details of Microsoft Robotics, DSS, and the underlying technologies for Microsoft Robotics developer Studio. You'll probably want basic familiarity with the Microsoft Robotics architecture including
 the Concurrency and Coordination Runtime (CCR) along with the notion of Arbiters and iterators.</p>
<h3>Robo-Moose</h3>
<p>The security and automation system in my house is centered on an Elk M1G alarm panel from
<a href="http://www.elkproducts.com/index.html">Elk Products Incorporated</a> . This panel allows for up to 208 input zones in the form of contact switches, motion sensors, and so on. It also allows for up to 208 outputs, on-board task scripting and many other
 features. One of the key features for my use is the capability of being able to monitor and control the panel via an Ethernet adaptor. So, my first order of business was to write a DSS service – the ElkService – to communicate with the Elk M1G via sockets.
 This ElkService exchanges messages with the Elk M1G via an ASCII protocol that is documented
<a href="http://www.elkproducts.com/products/m1/m1documentation.htm">here</a>. </p>
<p>The code that the ElkService uses to read from the Elk M1G hardware is shown below. Note that the code looks sequential, but is actually asynchronous. The StreamAdapter.Read method sets up a task to do an asynchronous IO operation and the line “yield return
 (Choice)ioResultPort;” returns this task to the runtime which is iterating over all tasks returned by ElkReader.</p>
<pre class="csharpcode"><span class="rem">/// &lt;summary&gt;</span>
<span class="rem">/// ElkReader opens a socket connection to the hardware panel. It then</span>
<span class="rem">/// enters a loop that</span>
<span class="rem">/// &lt;/summary&gt;</span>
<span class="rem">/// &lt;returns&gt;&lt;/returns&gt;</span>
<span class="kwrd">public</span> IEnumerator&lt;ITask&gt; ElkReader()
{
    Connect();

    <span class="rem">// Send a request to the Elk panel get a report of the entire zone status.</span>
    SendElkMessage(RequestStrings.ZoneStatus);

    <span class="kwrd">byte</span>[] buffer = <span class="kwrd">new</span> <span class="kwrd">byte</span>[256];

    <span class="kwrd">int</span> bytesRead = -1;
    Exception ex = <span class="kwrd">null</span>;

     <span class="kwrd">do</span>
    {
        var ioResultPort = StreamAdapter.Read(networkStream, buffer, 0, buffer.Length);

        <span class="kwrd">yield</span> <span class="kwrd">return</span> (Choice)ioResultPort;

        ex = ioResultPort;
        <span class="kwrd">if</span> (ex != <span class="kwrd">null</span>)
            <span class="kwrd">throw</span> ex;

        bytesRead = ioResultPort;
        <span class="kwrd">if</span> (bytesRead != 0)
            ProcessRawElkMessage(Encoding.ASCII.GetString(buffer, 0, bytesRead));

    } <span class="kwrd">while</span> (bytesRead != 0);
}</pre>
<style type="text/css">
<!--
.csharpcode, .csharpcode 
	{font-size:small;
	color:black;
	font-family:consolas,"Courier New",courier,monospace;
	background-color:#ffffff}
.csharpcode 
	{margin:0em}
.csharpcode .rem
	{color:#008000}
.csharpcode .kwrd
	{color:#0000ff}
.csharpcode .str
	{color:#006080}
.csharpcode .op
	{color:#0000c0}
.csharpcode .preproc
	{color:#cc6633}
.csharpcode .asp
	{background-color:#ffff00}
.csharpcode .html
	{color:#800000}
.csharpcode .attr
	{color:#ff0000}
.csharpcode .alt
	{background-color:#f4f4f4;
	width:100%;
	margin:0em}
.csharpcode .lnum
	{color:#606060}
-->
</style>
<p>When the ElkService receives a packet from the hardware panel, it converts the packet from a string to a custom message containing the raw sensor data and posts the message to the main port of the ElkService itself. For example, when the service receives
 a “ZC” message from the hardware, it converts this to an UpdateRawZone message that contains the raw data from the security panel. This happens in the method ProcessRawElkMessage. Here is a fragment of that code:</p>
<pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">void</span> ProcessRawElkMessage(<span class="kwrd">string</span> message)
{
    <span class="kwrd">string</span> messageType = message.Substring(2, 2);

    <span class="kwrd">switch</span> (messageType)
    {
        <span class="kwrd">case</span> <span class="str">&quot;ZC&quot;</span>: <span class="rem">// Zone status change</span>
            var zoneState = <span class="kwrd">new</span> UpdateRawZoneRequest
            {
                Id = <span class="kwrd">byte</span>.Parse(message.Substring(4, 3)),
                State = <span class="kwrd">byte</span>.Parse(message.Substring(7, 1),
                              NumberStyles.HexNumber)
            };

            var updateZoneMessage = <span class="kwrd">new</span> UpdateRawZone();
            updateZoneMessage.Body = zoneState;

            _mainPort.Post(updateZoneMessage);
            <span class="kwrd">break</span>;
…</pre>
<p>UpdateRawZoneRequest is the message payload and is used to send data about a zone change event to a subscriber. UpdateRawZone is the actual message type that is transmitted on the port for the ElkService.</p>
<pre class="csharpcode">[DataContract]
[Description(<span class="str">&quot;UpdateRawZone Request Message Payload&quot;</span>)]
<span class="kwrd">public</span> <span class="kwrd">class</span> UpdateRawZoneRequest
{
    [DataMember]
    <span class="kwrd">public</span> <span class="kwrd">byte</span> Id { get; set; }

    [DataMember]
    <span class="kwrd">public</span> <span class="kwrd">byte</span> State { get; set; }
}


<span class="rem">/// &lt;summary&gt;</span>
<span class="rem">/// Update Elk zone status</span>
<span class="rem">/// &lt;/summary&gt;</span>
[Description(<span class="str">&quot;UpdateZone request message&quot;</span>)]
<span class="kwrd">public</span> <span class="kwrd">class</span> UpdateRawZone : Update&lt;UpdateRawZoneRequest,
        PortSet&lt;DefaultUpdateResponseType, Fault&gt;&gt;
{
}</pre>
<p>The message processing code can also be written a bit more compactly as:</p>
<pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">void</span> ProcessRawElkMessage(<span class="kwrd">string</span> message)
{
    <span class="kwrd">string</span> messageType = message.Substring(2, 2);

    <span class="kwrd">switch</span> (messageType)
    {
        <span class="kwrd">case</span> <span class="str">&quot;ZC&quot;</span>: <span class="rem">// Zone status change</span>
            var updateZoneMessage = <span class="kwrd">new</span> UpdateRawZone
            {
                Body = <span class="kwrd">new</span> UpdateRawZoneRequest
                {
                    Id = <span class="kwrd">byte</span>.Parse(message.Substring(4, 3)),
                    State = <span class="kwrd">byte</span>.Parse(message.Substring(7, 1),
                          NumberStyles.HexNumber)
                }
            };

            _mainPort.Post(updateZoneMessage);
            <span class="kwrd">break</span>;
…</pre>
<p>UpdateRawZoneHandler is a message receiver that is active on the main port and which responds to the update message by updating internal state, and notifying subscribers of the change in state.</p>
<pre class="csharpcode">[ServiceHandler(ServiceHandlerBehavior.Exclusive)]
<span class="kwrd">public</span> IEnumerator&lt;ITask&gt; UpdateRawZoneHandler(UpdateRawZone message)
{
    _state.ZoneStates[message.Body.Id - 1] = message.Body.State;

    SendNotification(_submgrPort, message);

    message.ResponsePort.Post(DefaultUpdateResponseType.Instance);

    <span class="kwrd">yield</span> <span class="kwrd">break</span>;
}</pre>
<h3>In the Zone</h3>
<p>The ElkService represents the core service that communicates with the Elk M1G hardware. The next service – ElkZoneSensor – represents a higher level “sensor array” that is attached to the Elk hardware. ElkZoneSensor “partners” with the ElkService. This means
 that the ElkZoneSensor relies on the ElkService to function. The DSS infrastructure will ensure that the ElkService is started if needed when starting the ElkZoneSensor service.</p>
<p>The ElkZoneSensor subscribes to updates from the ElkService for changes in the hardware zones. When these changes occur, the ElkService notifies the ElkZoneSensor which updates its state and notifies any of its subscribers. The ElkZoneSensor uses a higher
 level message – UpdateZone – that contains a sensor ID and an enumeration that describes the state of the sensor.</p>
<pre class="csharpcode">[DataContract]
<span class="kwrd">public</span> <span class="kwrd">class</span> Zone
{
    [DataMember]
    [Description(<span class="str">&quot;The Elk hardware zone id of the sensor&quot;</span>)]
    [DataMemberConstructor]
    <span class="kwrd">public</span> <span class="kwrd">byte</span> Id { get; set; }

    [DataMember]
    [Description(<span class="str">&quot;The Elk defined state of the sensor&quot;</span>)]
    <span class="kwrd">public</span> ZoneStatus Status { get; set; }
}</pre>
<h3>Candlepower</h3>
<p>The next services that we need for the robotic house are services to control the lights. In this case, I started with a
<i>generic</i> contract for the DSS service. A generic contract in DSS terms just defines the set of messages to which a service will respond and defines the port type on which those messages will be sent. The generic contract does not contain code to actually
 implement the service behavior. One of the benefits of a generic service contract is that you can specify the contract, write algorithms that use the contract, and later connect the generic service contracts to code that actually implements the behavior. This
 is very much like programming to an abstract interface in the object oriented world, and having multiple classes that actually implement the interface.</p>
<p>We start off with a generic service called the GenericDimmer that represents a dimmer switch and we implement two concrete services: the SimulatedDimmer and the ZWaveDimmer. SimulatedDimmer just logs a message to represent its state change. The ZWaveDimmer
 actually controls the lights via a hardware Z-Wave controller.</p>
<p>Here's what the GenericDimmer contract looks like:</p>
<pre class="csharpcode"><span class="kwrd">namespace</span> Robotics.GenericHouseControls.Dimmer
{


    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// GenericDimmer Contract class</span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="kwrd">public</span> <span class="kwrd">sealed</span> <span class="kwrd">class</span> Contract
    {
        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// The Dss Service contract</span>
        <span class="rem">/// &lt;/summary&gt;</span>
        [DataMember]
        <span class="kwrd">public</span> <span class="kwrd">const</span> String Identifier = <span class="str">&quot;http://schemas.tempuri.org/2008/04/generichousecontrolsdimmer.html&quot;</span>;
    }

    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// The GenericDimmer State</span>
    <span class="rem">/// &lt;/summary&gt;</span>
    [DataContract]
    <span class="kwrd">public</span> <span class="kwrd">class</span> GenericDimmerState
    {
        [DataMember]
        [DataMemberConstructor(Order = 1)]
        <span class="kwrd">public</span> <span class="kwrd">int</span> Id;

        [DataMember]
        <span class="kwrd">public</span> <span class="kwrd">int</span> Level;
    }

    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// GenericDimmer Main Operations Port</span>
    <span class="rem">/// &lt;/summary&gt;</span>
    [ServicePort(AllowMultipleInstances = <span class="kwrd">true</span>)]
    <span class="kwrd">public</span> <span class="kwrd">class</span> GenericDimmerOperations : PortSet&lt;DsspDefaultLookup, DsspDefaultDrop, Get, HttpGet, On, Off, SetLevel&gt;
    {
    }

    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// GenericDimmer Get Operation</span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="kwrd">public</span> <span class="kwrd">class</span> Get : Get&lt;GetRequestType, PortSet&lt;GenericDimmerState, Fault&gt;&gt;
    {

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// GenericDimmer Get Operation</span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="kwrd">public</span> Get()
        {
        }

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// GenericDimmer Get Operation</span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="kwrd">public</span> Get(Microsoft.Dss.ServiceModel.Dssp.GetRequestType body) :
            <span class="kwrd">base</span>(body)
        {
        }

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// GenericDimmer Get Operation</span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="kwrd">public</span> Get(Microsoft.Dss.ServiceModel.Dssp.GetRequestType body, Microsoft.Ccr.Core.PortSet&lt;GenericDimmerState, W3C.Soap.Fault&gt; responsePort) :
            <span class="kwrd">base</span>(body, responsePort)
        {
        }
    }

    [DataContract]
    <span class="kwrd">public</span> <span class="kwrd">class</span> OnRequest
    {
    }

    [Description(<span class="str">&quot;Turn the switch on&quot;</span>)]
    <span class="kwrd">public</span> <span class="kwrd">class</span> On : Update&lt;OnRequest, PortSet&lt;DefaultUpdateResponseType, Fault&gt;&gt;
    {
    }

    [DataContract]
    <span class="kwrd">public</span> <span class="kwrd">class</span> OffRequest
    {
    }

    [Description(<span class="str">&quot;Turn the switch off&quot;</span>)]
    <span class="kwrd">public</span> <span class="kwrd">class</span> Off : Update&lt;OffRequest, PortSet&lt;DefaultUpdateResponseType, Fault&gt;&gt;
    {
    }

    [DataContract]
    <span class="kwrd">public</span> <span class="kwrd">class</span> SetLevelRequest
    {
        [DataMember]
        [DataMemberConstructor]
        <span class="kwrd">public</span> <span class="kwrd">int</span> Level { get; set; }
    }

    [Description(<span class="str">&quot;Set the dim level&quot;</span>)]
    <span class="kwrd">public</span> <span class="kwrd">class</span> SetLevel : Update&lt;SetLevelRequest, PortSet&lt;DefaultUpdateResponseType, Fault&gt;&gt;
    {
    }
}</pre>
<p>This code defines the contract only. Now to implement that contract we can run the DssNewService utility with the /implement switch and generate a service based on this contract. For example:
</p>
<p>dssnewservice /s:SimulatedDimmer /n:Robotics.HouseControls.SimulatedDimmer /i:GenericHouseControls.Y2008.M04.Proxy.dll</p>
<p>will generate a new service called SimulatedDimmer in the .NET namespace Robotics.HouseControls.SimulatedDimmer. The service will have a stubbed out implementation of the GenericDimmer contract including service startup code, state, and stubbed out message
 handlers.</p>
<p>Here's what the main service file looks like for the simulated dimmer after I added logging to the generated methods. I've also deleted some of the using statements for easier reading.</p>
<pre class="csharpcode"><span class="kwrd">using</span> pxdimmer = Robotics.GenericHouseControls.Dimmer.Proxy;

<span class="kwrd">namespace</span> Robotics.HouseControls.SimulatedDimmer
{


    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// House Controls Service</span>
    <span class="rem">/// &lt;/summary&gt;</span>
    [DisplayName(<span class="str">&quot;Simulated Dimmer&quot;</span>)]
    [Description(<span class="str">&quot;The Simulated Dimmer Switch Service&quot;</span>)]
    [Contract(Contract.Identifier)]
    [AlternateContract(pxdimmer.Contract.Identifier)]
    <span class="kwrd">public</span> <span class="kwrd">class</span> SimulatedDimmerService : DsspServiceBase
    {

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// _state</span>
        <span class="rem">/// &lt;/summary&gt;</span>
        [ServiceState]
        [InitialStatePartner(Optional = <span class="kwrd">true</span>)]
        <span class="kwrd">private</span> pxdimmer.GenericDimmerState _state = <span class="kwrd">new</span> pxdimmer.GenericDimmerState();

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// _main Port</span>
        <span class="rem">/// &lt;/summary&gt;</span>
        [ServicePort(<span class="str">&quot;/simulateddimmer&quot;</span>, AllowMultipleInstances = <span class="kwrd">true</span>)]
        <span class="kwrd">private</span> pxdimmer.GenericDimmerOperations _mainPort = <span class="kwrd">new</span> pxdimmer.GenericDimmerOperations();


        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// Default Service Constructor</span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="kwrd">public</span> SimulatedDimmerService(DsspServiceCreationPort creationPort) :
            <span class="kwrd">base</span>(creationPort)
        {
        }

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// Service Start</span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="kwrd">protected</span> <span class="kwrd">override</span> <span class="kwrd">void</span> Start()
        {
            <span class="kwrd">base</span>.Start();

            <span class="rem">// Add service specific initialization here.</span>
            LogInfo(<span class="kwrd">string</span>.Format(<span class="str">&quot;Dimmer State =&gt; Id:{0} Level:{1}&quot;</span>, _state.Id, _state.Level));
        }

        [ServiceHandler(ServiceHandlerBehavior.Concurrent)]
        <span class="kwrd">public</span> IEnumerator&lt;ITask&gt; OnHandler(pxdimmer.On update)
        {
            LogInfo(<span class="kwrd">string</span>.Format(<span class="str">&quot;Simulated Dimmer =&gt; Id:{0} On&quot;</span>, _state.Id));

            update.ResponsePort.Post(DefaultUpdateResponseType.Instance);
            <span class="kwrd">yield</span> <span class="kwrd">break</span>;
        }

        [ServiceHandler(ServiceHandlerBehavior.Concurrent)]
        <span class="kwrd">public</span> IEnumerator&lt;ITask&gt; OffHandler(pxdimmer.Off update)
        {
            LogInfo(<span class="kwrd">string</span>.Format(<span class="str">&quot;Simulated Dimmer =&gt; Id:{0} Off&quot;</span>, _state.Id));

            update.ResponsePort.Post(DefaultUpdateResponseType.Instance);
            <span class="kwrd">yield</span> <span class="kwrd">break</span>;
        }

        [ServiceHandler(ServiceHandlerBehavior.Exclusive)]
        <span class="kwrd">public</span> IEnumerator&lt;ITask&gt; SetLevelHandler(pxdimmer.SetLevel update)
        {           
            _state.Level = update.Body.Level;
            LogInfo(<span class="kwrd">string</span>.Format(<span class="str">&quot;Simulated Dimmer =&gt; Id:{0} Level:{1}&quot;</span>, _state.Id, update.Body.Level));

            update.ResponsePort.Post(DefaultUpdateResponseType.Instance);            
            <span class="kwrd">yield</span> <span class="kwrd">break</span>;
        }
    }
}</pre>
<style type="text/css">
<!--
.csharpcode, .csharpcode 
	{font-size:small;
	color:black;
	font-family:consolas,"Courier New",courier,monospace;
	background-color:#ffffff}
.csharpcode 
	{margin:0em}
.csharpcode .rem
	{color:#008000}
.csharpcode .kwrd
	{color:#0000ff}
.csharpcode .str
	{color:#006080}
.csharpcode .op
	{color:#0000c0}
.csharpcode .preproc
	{color:#cc6633}
.csharpcode .asp
	{background-color:#ffff00}
.csharpcode .html
	{color:#800000}
.csharpcode .attr
	{color:#ff0000}
.csharpcode .alt
	{background-color:#f4f4f4;
	width:100%;
	margin:0em}
.csharpcode .lnum
	{color:#606060}
-->
</style>
<p>Check the code download for the implementation of the ZWaveDimmer. You'll find that it's pretty straightforward. It should be simple to write similar code if you use a different technology for lighting control. You just write a service that matches the GenericDimmer
 contract, and you should be able to configure the GenericDimmer using a manifest to point to the actual dimmer service. Check out the documentation in Microsoft Robotics Developer Studio for more information on manifests and how to use the manifest editor.</p>
<h3>Bulb On, Bulb Off!</h3>
<p>The “Hello, World” application for any home automation software that I've tested in my house has always been the automating of my pantry light. The pantry has a Z-Wave light switch inside and the pantry door has a contact switch that is connected to the
 Elk M1G. When the door is open, we want the light to turn on, and when the door is closed we want the light to turn off. Now that we have all the pieces for this, here's what the VPL diagram for this looks like:</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/8544962/image.png"><img title="image" height="259" alt="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/8544962/image_thumb.png" width="500" border="0"></a>
</p>
<p>As you can see, it was also a relatively easy matter to add text-to-speech to announce the opening and closing of the pantry door. You may find out quickly that this is an annoyance to those in the testing areas – for me that was my kitchen – so it's nice
 to know that two quick hits of the delete key will also remove the text-to-speech. This is part of the beauty of the Microsoft Robotics programming model!</p>
<p>The second example shows how you can use a motion detector – in this case connected to zone 19 on the Elk – to trigger a light. The light comes on at a level that you control from the VPL code, and stays on for a duration that you can also control from the
 code. For the example, I set the timer to a pretty low level, but you can customize it. You could also add additional rules to only turn on the light at certain times, or better still connect an ambient light sensor to decide whether you should turn the light
 on.</p>
<p><a href="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/8544962/image_3.png"><img title="image" height="319" alt="image" src="http://ecn.channel9.msdn.com/o9/c4fcontent/migration/8544962/image_thumb_3.png" width="500" border="0"></a>
</p>
<p>In this diagram, if motion is detected – that is zone 19 is triggered with a status of ViolatedOpen – the light is turned on at a low dim level and a timer is set. When the timer completes, the light is turned off. If, however, there is more motion before
 the timer completes, the SetTimer message will cancel the old timeout and restart the timer.</p>
<p>There are more VPL examples included in the download including an extra service that you can use to send email from your VPL code. I'm experimenting with using the email service to send me a text message whenever my alarm is armed or disarmed.</p>
<h3>Miscellanea</h3>
<p>Since I haven't had a lot of time to study the testing framework and simulation environments used by Microsoft Robotics, I included a service called the ElkTestDataPlayback service that allows me to replay the contents of a text file to simulate the ElkService
 getting actual data. This works pretty well for testing. The contents of the file are merely raw data captures that I made from the data sent by the Elk M1G panel. To use this service in VPL, you just drop it onto your diagram, configure it's TestDataFileName
 via “Set initial configuration” to point to a data file, and send it a message to start playback.</p>
<p><b>Important:</b> If you have the Elk hardware, you will want to uncomment the
<i>SpawnIterator(ElkReader)</i> line in the ElkService.Start method. I know this is a hack for now. It would probably be better to write a SimulatedElk service based on a generic service contract. If I have time, I will do that in the future. That would involve
 a lot more work than I had for this weekend project!</p>
<h3>TODO List</h3>
<p>Since this was my first foray into Microsoft Robotics Developer Studio and I had limited time to really explore the features in depth, there are a few things that I've left unimplemented. Here are some of the things that I would like to expand on in the
 future:</p>
<p>1. <b>Support for more of the Elk features:</b> Currently, I only support Zone Change notifications. Fuller support of the Elk hardware would not be difficult and would be beneficial to anyone wanting to use this on an ongoing basis. There's some stub code
 for a few other notifications if you want to add to the service.</p>
<p>2. <b>Generic contracts for the Elk M1G:</b> I didn't base the Elk services on generic contract because I'm not familiar with enough other types of security and automation panels to make the needed generalizations. It would be interesting to try to come
 up with something more generic. I thought about using the Generic Contact Sensor array, but I'm not sure that it models what we need. For example, a door contact is considered
<b><i>violated</i></b> when it's open, but a water sensor is considered <b><i>violated</i></b> when it's closed.</p>
<p>3. <b>Additional Z-Wave features:</b> I've left out notification for lighting level changes, support for scenes and a host of other features. There's so much more that's possible with full Z-Wave support.</p>
<p>4. <b>Refined Generic Contracts:</b> Generic contracts allow developers to write code that is independent of the final hardware. That is one of the major benefits of the model used by Microsoft Robotics. You could for example have a generic light switch
 for simulation and testing, and based on configuration you could plug in a Z-Wave switch or an Insteon switch when it's time to deploy the actual solution.</p>
<p>5. <b>Simulation Support:</b> One of the major benefits of Microsoft Robotics Developer Studio is the simulation environment. For example, if we had a motion detector in the simulation environment, we could test some of the algorithms that I presented above
 by having a simulated mobile robot “violate” the motion detector's zone and trigger the corresponding VPL code.</p>
<p>6. <b>Exception Handling:</b> As I build more on the code in this article, I'll add exception handling and retry logic. Microsoft Robotics has some extremely robust features such as Causalities that make handling exceptions in a concurrent environment much
 easier.</p>
<p>7. <b>HttpHandlers:</b> I have a start at code for handling HTTP requests in the ZWaveController service. Handling HTTP requests is handy for building client applications that access your services without themselves having to be DSS services.</p>
<p>Other experiments that might be fun to try include integrating your Microsoft Robotics controlled home with remote control applications that are based on WPF or Silverlight, or perhaps integrating control from a Windows Media Center PC or Windows Home Server.</p>
<p>I hope you enjoy Microsoft Robotics Developer Studio as much as I have. I look forward to seeing what other people build with this fantastic technology. If people are interested, I can continue to share my home automation experiments. I think Microsoft Robotics
 Developer Studio will be the major tool in my home automation toolbox for quite some time.</p>
<h3>Project Settings Note:</h3>
<p>You will have to modify the project settings for the projects included in the House.Robot solution since your installation of Microsoft Robotics Developer Studio will be in a different directory than mine. The DssProjectMigration.exe command line tool will
 make short work of this. Just run it with a parameter that specifies the directory you want it to search, and it will find all of the project files in that directory and subdirectories and convert them to be buildable with your installation settings.</p>
<p>If you use the ElkTestDataPlayback service, in the examples, you'll need to set the path to the location of the test data file either in the initial configuration for the component, or in a manifest that configures the component. Make sure that you
<b>do not</b> put quotes around the path name. I included a test data file from my system.</p>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/robotics/RSS&WT.dl=0&WT.entryid=Entry:RSSView:57770cc07d4e4541ac5b9e7600cf847d">]]></description>
      <comments>http://channel9.msdn.com/coding4fun/articles/Home-Automation-with-Microsoft-Robotics-Developer-Studio-2008</comments>
      <itunes:summary>





Typically we think of robots as machines from science fiction or as industrial robots such as those that build and paint cars. In the world of Microsoft Robotics Developer Studio, anything that has sensors and/or actuators can be considered a robot. In this
 article, we look at an automated house as a robot and apply the Decentralized Software Services model of Microsoft Robotics Studio to implementing some home automation tasks. 




Charles Stacy Harris III

Difficulty: Intermediate
Time Required: 
6-10 hours
Cost: $100-$200 for hardware (Optional, $0 if using only simulation)
Software: Visual Studio or Visual Studio Express, Microsoft Robotics Developer Studio 2008 CTP April,
ControlThink Z-Wave PC SDK

Hardware: (All Optional) Elk M1G/M1EZ Security and Automation Panel, Z-Wave Dimmer Switches, Z-Wave Controller such as the ControlThink ThinkStick or equivalent.
Download: Download








House, Robot
Those of you who know me or who have read my previous Coding4Fun article 
Home Automation with Windows Workflow, know that I&#39;m nuts about home automation. I&#39;m even more passionate about robotics and I&#39;ve wanted to try out some things with Microsoft Robotics Studio since the very first version. Recently I had a long weekend, so
 I spent a few hours putting together some simple home automation examples using Microsoft Robotics Developer Studio 2008 CTP April. Check out the
Microsoft Robotics Developer Center for details on how to get the CTP. 
The examples in this article duplicate what I did using Windows Workflow in my previous article, but instead use the Decentralized Software Services (DSS) approach of Microsoft Robotics, and Microsoft Visual Programming Language (VPL) for a simple way to
 write automation tasks. The 
Microsoft Robotics Developer Center contains a lot of detailed information about DSS, VPL, and the other technologies found in Microsoft Robotics Developer Studio. For now, let&#39;s just cover some basics. To get further along with the code in th</itunes:summary>
      <link>http://channel9.msdn.com/coding4fun/articles/Home-Automation-with-Microsoft-Robotics-Developer-Studio-2008</link>
      <pubDate>Sat, 24 May 2008 03:56:55 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/coding4fun/articles/Home-Automation-with-Microsoft-Robotics-Developer-Studio-2008</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/c4f/images/8544962_100.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/c4f/images/8544962_220.jpg" height="165" width="220"></media:thumbnail>      
      <dc:creator>Charles Stacy Harris III</dc:creator>
      <itunes:author>Charles Stacy Harris III</itunes:author>
      <slash:comments>20</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/coding4fun/articles/Home-Automation-with-Microsoft-Robotics-Developer-Studio-2008/RSS</wfw:commentRss>
      <category>Hardware</category>
      <category>Robotics</category>
      <category>Home Automation</category>
    </item>    
</channel>
</rss>