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

<channel>
	<title>Robotfreak Blog &#187; Robotik</title>
	<atom:link href="http://www.robotfreak.de/blog/category/robotik/feed" rel="self" type="application/rss+xml" />
	<link>http://www.robotfreak.de/blog</link>
	<description>Robotik, Elektronik, Arduino und mehr</description>
	<lastBuildDate>Fri, 02 Jul 2010 19:09:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Roomba 500 im MRDS Simulator</title>
		<link>http://www.robotfreak.de/blog/robotik/roomba-500-im-mrds-simulator/359</link>
		<comments>http://www.robotfreak.de/blog/robotik/roomba-500-im-mrds-simulator/359#comments</comments>
		<pubDate>Fri, 04 Jun 2010 12:06:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MRDS]]></category>
		<category><![CDATA[Robotik]]></category>
		<category><![CDATA[Roomba]]></category>
		<category><![CDATA[Microsoft Robotics Studio]]></category>
		<category><![CDATA[VSE]]></category>

		<guid isPermaLink="false">http://www.robotfreak.de/blog/?p=359</guid>
		<description><![CDATA[F&#252;r den Simulator (VSE) im Microsoft Robotics Developer Studio (MRDS) gibt es nun auch ein aktualisiertes Mesh File um einen Roomba 560 oder 625 anstelle des iRobot Create zu verwenden. Dazu mu&#223; lediglich das bestehende &#8216;iRobotCreate.bos&#8217; File ausgetauscht werden. Das physikalische Modell ist identisch, an den VSE Beispielen selbst mu&#223; nichts ge&#228;ndert werden. Google SketchUp [...]]]></description>
			<content:encoded><![CDATA[<p>F&#252;r den Simulator (VSE) im Microsoft Robotics Developer Studio (MRDS) gibt es nun auch ein aktualisiertes Mesh File um einen Roomba 560 oder 625 anstelle des iRobot Create zu verwenden. Dazu mu&#223; lediglich das bestehende &#8216;iRobotCreate.bos&#8217; File ausgetauscht werden. Das physikalische Modell ist identisch, an den VSE Beispielen selbst mu&#223; nichts ge&#228;ndert werden.<br />
<img src='http://farm5.static.flickr.com/4017/4668386061_39e7dc386e.jpg' alt='roomba560vse'/><br />
<span id="more-359"></span></p>
<h2>Google SketchUp</h2>
<p>Wie schon bei einigen anderen Modelle wurde das Roomba 500 Modell mit <a href="http://sketchup.google.com/intl/de/" class="liexternal">Google SketchUp</a> erzeugt und anschlie&#223;end mit dem <a href="http://sketchuptips.blogspot.com/2009/01/wavefront-obj-exporter-with-materials.html" class="liexternal">objconverter Plugin</a> exportiert. Das erzeugte .obj und .mtl File wird in den MRDS store/media Ordner kopiert. Anschlie&#223;end mit dem Obj2Bos Tool in das .bos Format konvertiert. </p>
<p>Leider entspricht das exportierte Modell nicht zu 100% dem SketchUp File. Es fehlt das iRobot Logo und die Beschriftung der Tasten ist spiegelverkehrt.</p>
<p><img src='http://farm5.static.flickr.com/4045/4668372009_c11356bc7e.jpg' alt='roomba560'/></p>
<p><img src='http://farm5.static.flickr.com/4023/4668371991_563cd63af0.jpg' alt='roomba625'/></p>
<p>Zwar erlaubt die SketchUp Version 7 den Export ins Collada Format. Das scheint aber nicht zu funktionierten. Zumal das Collada Format eher f&#252;r Landschaften und Umgebungs Bilder gedacht ist, weniger f&#252;r Roboter Modelle. </p>
<h2>Weblinks</h2>
<ul>
<li><a href="http://sketchup.google.com/3dwarehouse/search?uq=15151886031596908117&#038;styp=c&#038;scoring=m" class="liexternal">Roomba Modelle in Google SketchUp</a></li>
<li><a href="http://www.flickr.com/photos/hmblgrmpf/sets/72157623882897143/" class="liexternal">Roomba Fotoalbum auf Flickr</a></li>
<li><a href="http://robotfreak.googlecode.com/files/roomba-media.zip" class="lizip">Roomba 560/625 Media Files</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.robotfreak.de/blog/robotik/roomba-500-im-mrds-simulator/359/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Roomba 500 und das Microsoft Robotics Developer Studio</title>
		<link>http://www.robotfreak.de/blog/robotik/roomba-500-und-das-microsoft-robotics-developer-studio/346</link>
		<comments>http://www.robotfreak.de/blog/robotik/roomba-500-und-das-microsoft-robotics-developer-studio/346#comments</comments>
		<pubDate>Wed, 26 May 2010 20:10:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MRDS]]></category>
		<category><![CDATA[Robotik]]></category>
		<category><![CDATA[Roomba]]></category>
		<category><![CDATA[Microsoft Robotics Studio]]></category>

		<guid isPermaLink="false">http://www.robotfreak.de/blog/?p=346</guid>
		<description><![CDATA[Die iRobot Roomba/Create Reihe wird seit Anbeginn vom Microsoft Robotics Developer Studio (MRDS) unterst&#252;tzt. Leider werden die neueren Modelle der 500 Serie nur unzureichend unterst&#252;tzt, besser gesagt es werden nur die gemeinsamen Features zwischen Create und Roomba500 unterst&#252;tzt. Zwar gibt es eine Portierung f&#252;r die Roomba 500 Reihe, allerdings nur f&#252;r MRDS V1.5. Inzwischen gibt [...]]]></description>
			<content:encoded><![CDATA[<p>Die <a href="http://www.irobot.de" class="liexternal">iRobot</a> Roomba/Create Reihe wird seit Anbeginn vom <a href="http://www.micosoft.com/robotics" class="liexternal">Microsoft Robotics Developer Studio</a> (MRDS) unterst&#252;tzt. Leider werden die neueren Modelle der 500 Serie nur unzureichend unterst&#252;tzt, besser gesagt es werden nur die gemeinsamen Features zwischen Create und Roomba500 unterst&#252;tzt. Zwar gibt es eine Portierung f&#252;r die Roomba 500 Reihe, allerdings nur f&#252;r MRDS V1.5. Inzwischen gibt es MRDS 2008 R3. Zudem bietet Microsoft das Developer Studio in der Vollversion zum Nulltarif an. Genug Gr&#252;nde, um sich an einer Portierung auf die aktuelle Version zu versuchen.<br />
<span id="more-346"></span><br />
Die Portierung befindet sich noch im Experimental Stadium. Da die SCI Schnittstelle bei meinem Roomba weiterhin defekt ist, kann ich die Software auch nicht testen (neues Mainboard aus USA ist unterwegs).<br />
Beim Start der TestRoomba500 Applikation sollte sich ein Windows Form &#246;ffnen. Bei jedem Druck auf die Clean Taste des Roombas, sollte in dieser Form dann ein neuer Befehl des Roomba 500 angezeigt und durchgef&#252;hrt werden.<br />
Im Control Panel erscheint als neues iRobot Modell der Roomba500.<br />
<img src='http://farm4.static.flickr.com/3350/4642441265_96053bbeda.jpg' alt='testroomba500-2'/><br />
Die erweiterten Sensoren des Roomba 500 findet man am Ende der Seite.<br />
<img src='http://farm5.static.flickr.com/4038/4643054068_0177fa5e1c.jpg' alt='testroomba500-3'/></p>
<h2>Bekannte Probleme</h2>
<p>Beim 1. Ausf&#252;hren des BuildRoomba.cmd Scripts gibt es Fehlermeldungen (Fehlt ein Assembly Verweis). Das liegt daran, das das TestRoomba500 Programm DLLs verwendet, die gerade erst erzeugt wurden. Evtl hilft ein erneutes Compilieren, Ansonsten die beiden User.iRobot DLL&#8217;s in Visual Studio von Hand neu einbinden (unter References bzw. Verweise).<br />
<img src='http://farm4.static.flickr.com/3359/4642441209_39e7965dff.jpg' alt='testroomba500-1'/></p>
<h2>Weblinks</h2>
<ul>
<li><a href="http://robotfreak.googlecode.com/files/Roomba500_v301.zip" class="lizip">Roomba 500 Sources f&#252;r MRDS 2008 R3</a></li>
<li><a href="http://www.irobot.lv/uploaded_files/File/iRobot_Roomba_500_Open_Interface_Spec.pdf" class="lipdf">Roomba 500 OI Specification</a></li>
<li><a href="http://www.roboternetz.de/phpBB2/viewtopic.php?t=54316" class="liexternal">Roboternetz Thread zum Roomba 500 und MRDS</a></li>
<li><a href="http://channel9.msdn.com/playground/Sandbox/414590-Roomba-500-series-robots-in-Microsoft-Robotics-Studio/" class="liexternal">Channel9 Original Roomba 500 Sources f&#252;r MRDS 1.5</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.robotfreak.de/blog/robotik/roomba-500-und-das-microsoft-robotics-developer-studio/346/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Roomba RF Protokoll (Teil 2)</title>
		<link>http://www.robotfreak.de/blog/robotik/roomba-rf-protokoll-teil-2/328</link>
		<comments>http://www.robotfreak.de/blog/robotik/roomba-rf-protokoll-teil-2/328#comments</comments>
		<pubDate>Fri, 14 May 2010 13:03:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Robotik]]></category>
		<category><![CDATA[Roomba]]></category>
		<category><![CDATA[IEEE 802.15.4]]></category>
		<category><![CDATA[rf protocol]]></category>
		<category><![CDATA[wireless protocol]]></category>
		<category><![CDATA[Wireshark]]></category>

		<guid isPermaLink="false">http://www.robotfreak.de/blog/?p=328</guid>
		<description><![CDATA[Im zweiten Teil der Roomba RF Protokoll Reihe geht es um die Unterschiede im MAC Layer Protokoll. Unverst&#228;ndlicherweise wird beim Roomba nicht der IEEE 802.15.4 MAC Layer verwendet, sondern ein eigenes Protokoll, obwohl IEEE 802.15.4 ein Standard ist und lizens- und kostenfrei verwendet werden kann, im Gegensatz zum lizens- und kostenpflichtigen Zigbee Protokoll. Das unterschiedliche [...]]]></description>
			<content:encoded><![CDATA[<p>Im zweiten Teil der Roomba RF Protokoll Reihe geht es um die Unterschiede im MAC Layer Protokoll. Unverst&#228;ndlicherweise wird beim Roomba nicht der IEEE 802.15.4 MAC Layer verwendet, sondern ein eigenes Protokoll, obwohl IEEE 802.15.4 ein Standard ist und lizens- und kostenfrei verwendet werden kann, im Gegensatz zum lizens- und kostenpflichtigen Zigbee Protokoll.<br />
Das unterschiedliche MAC Layer Protokoll ist wahrscheinlich auch die Ursache daf&#252;r, das ich mit der Standard RZRAVEN Software keinen Erfolg beim Sniffen der Pakete hatte.<br />
<span id="more-328"></span></p>
<h2>Unterschiede im MAC Layer</h2>
<p>Die Protokolle sind zwar &#228;hnlich aber im Detail doch sehr unterschiedlich, was das Reengineering nicht gerade einfach macht.</p>
<h3>IEEE 802.15.4 MAC Layer Frame:</h3>
<p>IEEE 802.15.4 Pakete sind im Little Endian Format. (HIGH Byte wird vor dem LOW Bate gesendet). Jedes Byte wird mit LSB zuerst gesendet.</p>
<pre>
  |  FCF  |Seq No|  Addressing |         Data          |  FCS  |
  |2 bytes|1 byte|0 to 20 bytes|Length-(Overhead) bytes|2 Bytes|
 </pre>
<p>Hier findet man neben dem 2 Byte Frame Control Field (FCF) noch einen 1 Byte Frame Counter.</p>
<h3>Roomba MAC Layer Frame:</h3>
<pre>
  |  FCF  Seq No |  Addressing |         Data          |  FCS  |
  |2 bytes       |0 to xx bytes|Length-(Overhead) bytes|2 Bytes|
 </pre>
<p>Beim Roomba Protokoll gibt es nur den kombinierten 2 Byte Frame Header / Frame Counter. </p>
<p>Wenn man nun mit Wireshark oder einem anderen Paket-Sniffer die Roomba Frames encoden m&#246;chte, erh&#228;lt man lauter &#8216;unknown frame types&#8217; und &#8216;invalid address mode&#8217; Fehlermeldungen. Man m&#252;&#223;te seinen eigenen Dissector f&#252;r Wireshark schreiben oder das frame encoding abschalten.<br />
<img src='http://farm2.static.flickr.com/1233/4606477712_565eca2776.jpg' alt='wireshark-frame'/><br />
<img src='http://farm2.static.flickr.com/1053/4605862947_7e83922905.jpg' alt='wireshark-frame7'/></p>
<h2>Frame Checksumme FCS</h2>
<p>Zum Gl&#252;ck wird bei beiden MAC layer das selbe Format f&#252;r die Frame Checksumme (FCS) verwendet. In den Wireshark Quellen findet man die genauen Parameter und den Algorythmus zur Checksummen Erzeugung.</p>
<pre>
   CRC16 is calculated using the x^16 + x^12 + x^5 + 1 polynomial
   as specified by ITU-T, and is calculated over the IEEE 802.15.4
   packet (excluding the FCS) as transmitted over the air. Note,
   that because the least significan bits are transmitted first, this
   will require reversing the bit-order in each byte. Also, unlike
   most CRC algorithms, IEEE 802.15.4 uses an initial and final value
   of 0x0000, instead of 0xffff (which is used by the CCITT).
</pre>
<p>Klingt kompliziert, aber es ist l&#246;sbar. Mein C# Sniffer kann inzwischen auch die Checksumme erzeugen. Damit steht dem Erzeugen/Senden eigener Frames eigentlich nichts mehr im Wege.<br />
<img src='http://farm5.static.flickr.com/4036/4606543876_6ece510ec4.jpg' alt='Roomba RF sniffer'/></p>
<h2>Fazit</h2>
<p>Mit den neuen Erkenntnissen und vor allem mit der Checksummen Erzeugung ist es nun m&#246;glich eigene Frames zu erzeugen und zu senden. Vorest als Notl&#246;sung auf PC Seite. Sp&#228;ter ist es sicher besser, die ganze MAC Schicht auf dem Jackdaw Board laufen zu lassen und zum PC nur auf der Applikationsebene zu kommunizieren.</p>
<h2>Weblinks</h2>
<ul>
<li><a href="http://standards.ieee.org/getieee802/download/802.15.4-2006.pdf" class="lipdf">IEEE 802.15.x Standards</a></li>
<li><a href="http://www.wireshark.org/" class="liexternal">Wireshark</a></li>
<li><a href="http://media-2.cacetech.com/wireshark/src/wireshark-1.2.8.tar.bz2" class="liexternal">Wireshark Sourcecode</a></li>
<li><a href="http://github.com/robotfreak/RoombaRFCtrl" class="liexternal">RoombaRFCtrl  Sourcecode (GitHub)</a></li>
<li><a href="http://pcapdotnet.codeplex.com/" class="liexternal">Pcap.Net Library</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.robotfreak.de/blog/robotik/roomba-rf-protokoll-teil-2/328/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Roomba RF Protokoll (Teil 1)</title>
		<link>http://www.robotfreak.de/blog/robotik/roomba-rf-protokoll/276</link>
		<comments>http://www.robotfreak.de/blog/robotik/roomba-rf-protokoll/276#comments</comments>
		<pubDate>Fri, 07 May 2010 07:14:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Robotik]]></category>
		<category><![CDATA[Roomba]]></category>
		<category><![CDATA[IEEE 802.15.4]]></category>
		<category><![CDATA[rf protocol]]></category>
		<category><![CDATA[robotic]]></category>
		<category><![CDATA[wireless protocol]]></category>

		<guid isPermaLink="false">http://www.robotfreak.de/blog/?p=276</guid>
		<description><![CDATA[Meine Frau meinte, es w&#228;re mal an der Zeit, das meine Roboter auch mal eine sinnvolle Aufgabe &#252;bernehmen sollten. Gesagt, getan habe ich mir zu &#8220;Forschungszwecken&#8221; einen Roomba Staubsauger Roboter von iRobot besorgt. Damit konnte ich gleich 2 Fliegen mit einer Klappe schlagen. Meine Frau hat ein n&#252;tzliches Haushaltsger&#228;t, und wenn der Roomba mal nicht [...]]]></description>
			<content:encoded><![CDATA[<p>Meine Frau meinte, es w&#228;re mal an der Zeit, das meine Roboter auch mal eine sinnvolle Aufgabe &#252;bernehmen sollten. Gesagt, getan habe ich mir zu &#8220;Forschungszwecken&#8221; einen Roomba Staubsauger Roboter von <a href="http://www.irobot.com" class="liexternal">iRobot</a> besorgt. Damit konnte ich gleich 2 Fliegen mit einer Klappe schlagen. Meine Frau hat ein n&#252;tzliches Haushaltsger&#228;t, und wenn der Roomba mal nicht am arbeiten ist, kann ich mich damit befassen.<br />
<img src='http://farm5.static.flickr.com/4041/4585197000_2e4b887ef5.jpg' alt='Roomba 625'/><br />
<span id="more-276"></span></p>
<h2>SCI / OI Schnittstelle</h2>
<p>Wie schon die &#228;lteren Modelle, besitzen auch die aktuellen Modelle der Roomba 500 Reihe eine serielle Schnittstelle &#252;ber die man den Roomba fernsteuern kann, oder seine Sensorwerte abfragen kann. Die sogenannte <a href="http://www.irobot.com/images/consumer/hacker/Roomba_SCI_Spec_Manual.pdf" class="lipdf">SCI Schnittstelle</a> ist gut dokumentiert und erhielt mit Einf&#252;hrung der 500 Reihe auch ein Update mit <a href="http://www.irobot.lv/uploaded_files/File/iRobot_Roomba_500_Open_Interface_Spec.pdf" class="lipdf">erweiterten Befehlen</a>, die Schnittstelle erhielt auch einen neuen Namen und hei&#223;t jetzt OI (Open Interface). Zudem besitzen die Roomba 5xx Modelle viel mehr Sensoren als die Vorg&#228;ngerversionen.</p>
<p>Leider w&#228;hrte meine Freude nicht sehr lange, da mir beim Anschluss eines Controller Boards ein kleiner Fehler mit fatalen Folgen unterlief. Blind vertrauend auf den Aufdruck auf dem Controller Board vertauschte ich RX mit TX  und damit war es um die Roomba Schnittstelle und den Controller geschehen. Zwar funktioniert der Roomba weiterhin problemlos, aber die SCI Schnittstelle l&#228;&#223;t sich nun nicht mehr nutzen.<br />
<img src='http://farm5.static.flickr.com/4030/4584564637_7ab6fc26b9.jpg' alt='Roomba SCI FTDI UART'/></p>
<h2>IEEE 802.11.4 2.4GHz Schnittstelle</h2>
<p>Die Modelle ab dem Roomba 560 aufw&#228;rts besitzen neben dem seriellen Interface auch eine Drahtlos Schnittstelle im 2.4GHz Bereich. Damit kommuniziert der Roomba mit den neuen Virtual Wall/Lighthouse Modulen (kurz VWLH) und einer drahtlosen Fernbedienung, dem Wireless Control Center (kurz WCC). &#220;ber diese Schnittstelle ist leider wenig bekannt, es gibt keinerlei Doku dazu, lediglich die Eckdaten sind bekannt.</p>
<ul>
<li>2.4GHz <a href="http://de.wikipedia.org/wiki/IEEE_802.15.4" rel="nofollow" class="liwikipedia">IEEE 802.15.4</a> Transceiver</li>
<li>nicht ZigBee kompatibles, propriet&#228;res Protokoll</li>
<li>Freescale MC13202 2.4GHz RF transceiver</li>
</ul>
<p>Nach dem Lesen dieses <a href=" http://www.robotreviews.com/chat/viewtopic.php?f=4&amp;t=7529" class="liinternal">robotreviews Threads</a>,  kam ich dann auf die Idee mich n&#228;her mit dem RF Protokoll des Roomba zu befassen und die in dem Thread begonnene Arbeit fortzusetzen.<br />
<img src='http://farm5.static.flickr.com/4009/4587636226_7d0dc65254.jpg' alt='Roomba RF Modul'/></p>
<h2>verwendete Hard- und Software</h2>
<p>Da ich auch ein bisher ungenutztes RZRAVEN Bord herumliegen hatte, war auch die n&#246;tige Hardware vorhanden, um das Roomba RF Protokoll zu erforschen.<br />
Die Software-Tools des RZRAVEN Boards funktionierten leider nicht so wie ich das gerne mochte, deshalb wurde die Firmware des RZRAVEN Board mit der <a href="http://www.sics.se/~adam/contiki/docs-uipv6/a01108.html" class="liexternal">Jackdaw Firmware</a> aus dem <a href="http://www.sics.se/contiki/" class="liexternal">Contiki Projekt</a> ersetzt. Man ben&#246;tigt nicht das komplette Contiki Paket, es gen&#252;gt das <a href="https://sourceforge.net/projects/contiki/files/Contiki/Contiki%202.4/contiki-raven-2.4.zip/download" class="liexternal">Contiki Raven Paket</a>. Somit wurde aus dem Raben (Raven) eine Dohle (Jackdaw) und damit funktioniert bisher alles wunderbar. Man kann damit sogar <a href="http://www.wireshark.org/" class="liexternal">Wireshark</a> f&#252;r das Packet Capturing verwenden.<br />
Der Trick dabei ist, das die Jackdaw Firmware die 802.15.4 Pakete in einem Ethernet-Frame einbindet. Mit den Jackdaw Treiber erscheint das Board unter Windows zum einen als Netzwerk-Ger&#228;t und als USB-Ger&#228;t f&#252;r die serielle Konfiguration (zum ausw&#228;hlen des Kanals, dem Sniffer Mode, etc.).<br />
<img src='http://farm5.static.flickr.com/4068/4584566929_1977494e11.jpg' alt='Atmel RZRAVEN'/><br />
Leider wird zum Umprogrammieren des RZRAVEN boards ein JTAG Programmer ben&#246;tigt, d.h. man ben&#246;tigt einen JTAG ICE Mk II, einen AVR ONE! oder ein Dragon Board.<br />
<img src='http://farm5.static.flickr.com/4015/4584567891_abe1df6880.jpg' alt='Atmel RZRAVEN JTAG Adapter'/><br />
Diese derzeitige L&#246;sung ist sicher nicht f&#252;r jedermann geeignet. Das RZRAVEN Kit ist nicht gerade billig (105€ bei <a href="http://www.watterott.com/de/Atmel-RZ-Raven" class="liexternal">Watterott</a>) und zudem ist ein JTAG Programmer erforderlich. Vielleicht ergibt sich ein Weg, das Transceiver Modul aus der WCC oder einem VWLH auszul&#246;ten und &#252;ber einen anderen Controller (z.B. einem Arduino) anzusteuern. Die Schnittstelle ist ein einfaches SPI Interface. Eine Firmware gibt es im Transceiver auch nicht, der ist relativ dumm. Eine andere M&#246;glichkeit w&#228;ren vielleicht die <a href="http://www.digi.com/products/wireless/zigbee-mesh/xbee-zb-module.jsp#overview" class="liexternal">XBee Module von Digi</a>. Diese verwenden wohl den gleichen Freescale Transceiver. Allerdings arbeiten die XBees im ZigBee Mode.</p>
<h2>Erste Untersuchungen</h2>
<p>Hier ist mein derzeitiger Stand der Forschung &#252;ber das Roomba RF-Protokoll:</p>
<p>Begonnen wurde damit, bei jedem Ger&#228;t einzeln die Batterien einzulegen und die rohen IEEE 802.15.4 Pakete mit Wireshark aufzuzeichnen.</p>
<h3>Roomba auf Kanal 15:</h3>
<pre>   No.     Time      Data
      1 0.000000   17 00 ff ff 00 05 00 01 10 f7 02
      2 0.420558   17 10 ff ff 00 05 00 01 10 8f 59
      3 1.488229   17 00 ff ff fc 00 01 16 76 43
      4 2.188864   17 10 ff ff fc 00 01 16 bf f6
      5 2.971726   17 20 ff ff fc 00 01 16 f5 20
      6 3.754072   17 30 ff ff fc 00 01 16 3c 95
      7 4.537940   17 40 ff ff fc 00 01 16 70 84
      8 5.320669   17 50 ff ff fc 00 01 16 b9 31
      9 6.103414   17 60 ff ff fc 00 01 16 f3 e7
     10 6.885647   17 70 ff ff fc 00 01 16 3a 52
     11 7.669509   17 80 ff ff fc 00 01 16 6b c5
     12 8.451608   17 90 ff ff fc 00 01 16 a2 70
     13 9.235353   17 a0 ff ff fc 00 01 16 e8 a6
     14 10.017840  17 b0 ff ff fc 00 01 16 21 13
     15 10.801700  17 c0 ff ff fc 00 01 16 6d 02
     16 11.584420  17 d0 ff ff fc 00 01 16 a4 b7
     17 12.366922  17 e0 ff ff fc 00 01 16 ee 61
     18 13.149155  17 f0 ff ff fc 00 01 16 27 d4</pre>
<p>Die ersten beiden Frames werden nur nach Einlegen des Batteriepacks eingelegt, ansonsten werden immer nur die folgenden 16 Frames stetig wiederholt.</p>
<h3>WCC auf Kanal 15:</h3>
<pre>   No.     Time      Data
      1 0.000000   17 00 14 c4 00 11 00 01 10 55 0d
      2 0.357063   17 10 14 c4 00 11 00 01 10 2d 56
      3 2.254351   17 00 14 c4 00 11 00 01 10 55 0d
      4 2.610909   17 10 14 c4 00 11 00 01 10 2d 56
      5 4.509101   17 00 14 c4 00 11 00 01 10 55 0d
      6 4.866875   17 10 14 c4 00 11 00 01 10 2d 56
      7 6.764044   17 00 14 c4 00 11 00 01 10 55 0d
      8 7.121856   17 10 14 c4 00 11 00 01 10 2d 56</pre>
<p>Im Unterschied zu Roomba und VWLH &#228;ndert sich der Frame counter nur zwischen 0 und 1. Alle 2 Sekunden werden die beiden Pakete wiederholt.</p>
<h3>VWLH auf Kanal 15:</h3>
<pre>   No.     Time      Data
      1 0.000000   17 00 ff ff 00 07 b8 01 10 01 77
      2 0.359804   17 10 ff ff 00 07 b8 01 10 79 2c
      3 4.113874   17 20 ff ff 00 07 b8 01 10 f1 c1
      4 4.478571   17 30 ff ff 00 07 b8 01 10 89 9a
      5 8.233644   17 40 ff ff 00 07 b8 01 10 f0 12
      6 8.599708   17 50 ff ff 00 07 b8 01 10 88 49
      7 12.355781  17 60 ff ff 00 07 b8 01 10 00 a4
      8 12.722344  17 70 ff ff 00 07 b8 01 10 78 ff
      9 16.478553  17 80 ff ff 00 07 b8 01 10 e3 bc
     10 16.844117  17 90 ff ff 00 07 b8 01 10 9b e7
     11 20.597685  17 a0 ff ff 00 07 b8 01 10 13 0a
     12 20.963336  17 b0 ff ff 00 07 b8 01 10 6b 51
     13 24.719456  17 c0 ff ff 00 07 b8 01 10 12 d9
     14 25.086514  17 d0 ff ff 00 07 b8 01 10 6a 82
     15 28.842096  17 e0 ff ff 00 07 b8 01 10 e2 6f
     16 29.207154  17 f0 ff ff 00 07 b8 01 10 9a 34</pre>
<p>Beim VWLH werden jeweils 2 Pakete alle 4 Sekunden gesendet. Der Frame counter z&#228;hlt wie beim Roomba von 0 bis F.</p>
<p>Alle Messages sehen ziemlich &#228;hnlich aus, beginnend mit 0&#215;17 (wie fast jedes Paket). Das HIGH Nibble des folgenden Bytes wird mit jedem Paket inkrementiert, ich denke es ist ein Frame counter. Das LOW Nibble ist wohl der Message Typ, in diesem Fall 0. Die n&#228;chsten 2 Bytes k&#246;nnte ein 16-Bit-Adresse. Roomba und VWLH verwendet 0xFFFF als Adresse, das ist demnach eine Broadcast-Adresse. Nur das WCC liefert eine andere Adresse, 0x14C4 in diesem Fall. Der Rest der Nachricht ist so weit unbekannt, mit Ausnahme der letzten 2 Bytes, der CRC-Pr&#252;fsumme f&#252;r das Paket.</p>
<h3>Pairing Roomba mit WCC auf Kanal 15:</h3>
<pre>   No.     Time      Data
      1 0.000000   17 00 ff ff 00 05 00 01 10 f7 02
      2 0.420800   17 10 ff ff 00 05 00 01 10 8f 59
      3 1.487354   17 00 ff ff fc 00 01 16 76 43
      4 2.188480   17 10 ff ff fc 00 01 16 bf f6
      5 2.970842   17 20 ff ff fc 00 01 16 f5 20
      6 3.753079   17 30 ff ff fc 00 01 16 3c 95
      7 4.536435   17 40 ff ff fc 00 01 16 70 84
      8 5.320184   17 50 ff ff fc 00 01 16 b9 31
      9 5.333627   17 00 14 c4 00 11 00 01 17 ea 79
     10 6.171521   17 10 14 c4 00 11 00 01 10 2d 56
     11 6.528450   17 20 14 c4 00 11 00 01 10 a5 bb
     12 6.544792   17 00 ff ff fc 00 01 11 14 c4 0f 01 e6 82</pre>
<p>Die Frames 1 bis 8 kennt man bereits vom &#8216;Roomba auf Kanal 15&#8242; capture. Die n&#228;chsten 3 Frames stammen vom WCC. Ein kleiner Unterschied ist die letzte Date im Frame 9 (0&#215;17 anstelle de 0&#215;10). Dann folgt als letzter Frame wieder eine Antwort vom Roomba, l&#228;nger als die bisherigen Pakete. Zudem erscheint die WCC Adresse 0x14c4 in diesem Antwort Paket. Das ist wohl die eigentliche Pairing complete Message. Danach ist auf Kanal 15 Sendepause. Der weitere Datenverkehr findet nun auf Kanal 26 statt.</p>
<h3>Datenverkehr Roomba / WCC auf Kanal 26:</h3>
<pre>   No.     Time      Data
      1 0.000000   17 02 14 c4 fc 00 48 15 23 eb
      2 0.720154   17 12 14 c4 fc 00 48 15 ea 5e
      3 24.349287  17 12 14 c4 fc 00 48 15 ea 5e
      5 25.789405  17 22 14 c4 fc 00 48 15 a0 88
      6 25.804986  17 01 14 c4 10 11 00 01 20 29 09
      7 25.810707  17 01 14 c4 10 11 00 01 20 29 09
      8 25.817085  17 01 14 c4 10 11 00 01 20 29 09
      9 25.822579  17 01 14 c4 10 11 00 01 20 29 09
     10 25.828787  17 01 14 c4 10 11 00 01 20 29 09
     11 25.843207  17 11 14 c4 10 11 00 01 20 51 52
     12 25.849459  17 11 14 c4 10 11 00 01 20 51 52
     13 25.854948  17 11 14 c4 10 11 00 01 20 51 52
     14 25.861073  17 11 14 c4 10 11 00 01 20 51 52
     15 25.868092  17 11 14 c4 10 11 00 01 20 51 52
     16 25.880333  17 21 14 c4 00 11 00 01 30 0a 88 33
     17 25.881948  17 24 bf bf
     18 25.892321  17 31 14 c4 00 11 00 14 02 00 00 b1 b9
     19 25.894274  17 34 3e af
     20 25.903341  17 41 14 c4 00 11 00 14 02 00 00 2d 96
     21 25.905069  17 44 b9 dc
     22 25.915725  17 51 14 c4 00 11 00 14 02 00 00 7f 44
     23 25.917568  17 54 38 cc
     24 25.924315  17 21 14 c4 10 00 17 41 0a 0a 8a 0a 00 00 53 ad
     25 25.925691  17 24 bf bf
     26 25.928831  17 61 14 c4 00 11 00 14 02 00 00 98 3a
     27 25.930092  17 64 bb fd
     28 25.941191  17 71 14 c4 00 11 00 14 02 00 00 ca e8
     29 25.942873  17 74 3a ed
     30 25.953745  17 81 14 c4 00 11 00 14 02 00 00 a0 65
     31 25.955264  17 84 b5 1a
     32 25.965316  17 91 14 c4 00 11 00 14 02 00 00 f2 b7
     33 25.966801  17 94 34 0a
     34 26.509151  17 32 14 c4 fc 00 14 14 b7 56
     35 26.512332  17 a1 14 c4 00 11 00 14 02 00 00 15 c9
     36 26.513828  17 a4 b7 3b
     37 26.520839  17 b1 14 c4 00 11 00 14 02 00 00 47 1b
     38 26.522708  17 b4 36 2b
     39 26.532451  17 c1 14 c4 00 11 00 14 02 00 00 db 34
     40 26.534199  17 c4 b1 58
     41 26.545332  17 d1 14 c4 00 11 00 14 02 00 00 89 e6
     42 26.547079  17 d4 30 48
     43 26.556988  17 e1 14 c4 00 11 00 14 02 00 00 6e 98
     44 26.558448  17 e4 b3 79
     45 26.569661  17 f1 14 c4 00 11 00 14 02 00 00 3c 4a
     46 26.571201  17 f4 32 69</pre>
<p>Es gibt wesentlich mehr Traffic auf diesem Kanal nach erfolreichem Pairing. Im Gegensatz zu den Nachrichten auf Kanal 15 gibt es hier andere Message Typen (Low Nibble des 2. Byte, 0 bei Kanal 15, hier 1,2 und 4).<br />
Der Frame counter wird in Abh&#228;ngigkeit des Message Typs inkrementiert (siehe Frame 34).<br />
Ebenso enthalten die meisten Pakete die WCC-Adresse 0x14C4, stammen also vom WCC. Dazwischen gibt es einige kurze Mitteilungen zu 4 Bytes (ohne Adresse). Sieht nach einer Acknowlegde Nachricht vom Roomba zur vorherigen Nachricht aus. Z.B.  sendet die WCC 0&#215;17 0xD1 &#8230; Dann lautet die Antwort des Roombas dazu: 0&#215;17 0xD4. Man erkennt zudem die gleiche Frame-Nummer im Acknowledge Paket.</p>
<p>In den Wireshark PCAP Files standen auch  einige Eintr&#228;ge mit Nachrichten, die kein Acknowledge bekamen. Die WCC wiederholt dann solange die Nachricht, bis ein Acknowledge kommt.</p>
<h2>Fazit</h2>
<h3>Message Format</h3>
<p>So sieht nach derzeitigem Kenntnisstand der allgemeinen Nachrichten Aufbau aus:</p>
<pre>    &lt;hh&gt; &lt;ft&gt; &lt;aa &lt;aa&gt; &lt;dd&gt;.....&lt;dd&gt; 

    hh    8bit Frame Header constant 0x17
    ft    4Bit Frame counter / 4bit Message Typ
    aa    optionale 16bit Adresse
    dd    optionale Daten variabler L&#228;nge
    cc    16bit CRC Checksumme CCITT</pre>
<h3>Message Typ</h3>
<pre>     0    Pairing, Connection
     1    Command, ACK expected
     2    ???, no ACK expected
     4    Acknowledge</pre>
<h3>WCC Bedien Message</h3>
<p>Die Kodierung der gedr&#252;ckten Tasten beim WCC waren sehr leicht anhand der aufgezeichneten Protokolle zu erkennen. Jedes Paket wird zudem vom Roomba mit einer Acknowledge Message quittiert. So sieht die Befehlsfolge dazu aus:</p>
<pre>    17 f1 14 C4 00 11 00 14 02 kk kk cc cc   (13 Bytes) command from WCC
    17 f4 cc cc                              (4 Bytes) ack from roomba

    f 4Bit Frame counter 0..f
    k 16Bit Key number bit oriented
    c 16Bit CRC checksum</pre>
<h3>Tasten  Bits</h3>
<pre>
    00 00   no key
    00 01   hour
    00 02   minute
    00 04   clock
    00 08   ???
    00 10   ???
    00 20   ???
    00 40   ???
    00 80   ???
    01 00   clean
    02 00   spot
    04 00   max
    08 00   schedule
    10 00   forward
    20 00   right
    40 00   left
    80 00   day</pre>
<p>Taste geddr&#252;ckt, das entsprechende Bit ist 1, Taste losgelassen, das entsprechend Bit ist 0. 11 Tasten befinden sich auf der Remote, 5 Bits bleiben unbenutzt.<br />
<img src='http://farm5.static.flickr.com/4032/4585193170_58f56390f0.jpg' alt='Roomba WCC'/></p>
<h3>Was kann man damit anfangen</h3>
<p>Nach derzeitigem Stand kann man zumindest die Funktionen der WCC mit einem PC Programm und dem RZRAVEN USB Dongle nachbilden und den Roomba damit rudiment&#228;r ansteueren. F&#252;r die Einbindung in eine bestehende Hausautomation oder einen PC gesteuerte Scheduler ist das sicher ausreichend.<br />
Die kompletten Features zur Steuerung, wie sie die SCI/OI Schnittstelle bietet, wird man damit wohl leider nicht erreichen. Hier sollte vielleicht der Hersteller <a href="http://www.irobot.com" class="liexternal">iRobot</a> dar&#252;ber mal nachdenken, diese Schnittstelle freizugeben bzw. besser zu unterst&#252;tzen. Technisch w&#228;re es sicher kein Problem, die bestehende SCI/OI Schnittstelle auch &#252;ber das RF Modul zu rooten. Bedarf daf&#252;r gibt es auf alle F&#228;lle. Der Vorteil liegt einfach darin, dass man ohne Umbau und Aufbauten auf dem Roomba diesen &#252;ber eine drahtlose Schnittstelle steuern k&#246;nnte.</p>
<h2>Wie geht es  weiter</h2>
<p>Viele Fragen bleiben noch offen:</p>
<ul>
<li>Wie werden die Uhrzeit und die Scheduler Zeiten &#252;bertragen?</li>
<li>Liefert der Roomba seinen Akku Ladezustand?</li>
<li>Was hat es mit den omin&#246;sen Messages auf sich, die nicht in das derzeitige Protokoll passen?</li>
<li>Gibt es vielleicht ein Hintert&#252;rchen um an die Blackbox Daten oder an das SCI/OI Interface heranzukommen?</li>
</ul>
<p>Ich habe begonnen, ein Tool mit der <a href="http://pcapdotnet.codeplex.com/" class="liexternal">Pcap.Net Bibliothek</a> in C# zu programmieren. Damit soll der Empfang und das Versenden von Paketen sowie das Pairing mit dem Roomba erm&#246;glicht werden. Im Moment ist das Tools aber noch ein reiner Paket-Sniffer.</p>
<p>Was derzeit noch fehlt:</p>
<ul>
<li>Generieren / Check  der Check. Dieses sollte eine normale CCITT CRC Checksumme sein.</li>
<li>Senden von Paketen</li>
<li>Interpreter f&#252;r die empfangenen Pakete</li>
<li>Automatischer Kanalwechsel, nach dem Pairing</li>
</ul>
<h2>Weblinks</h2>
<ul>
<li><a href="http://www.irobot.com" class="liexternal">iRobot</a></li>
<li><a href="http://www.irobot.lv/uploaded_files/File/iRobot_Roomba_500_Open_Interface_Spec.pdf" class="lipdf">Roomba 500 Open Interface</a></li>
<li><a href="http://www.irobot.com/images/consumer/hacker/Roomba_SCI_Spec_Manual.pdf" class="lipdf">Roomba SCI Interface</a></li>
<li><a href="http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MC13202" class="liexternal">Freescale MC13202 2.4GHz RF Transceiver</a></li>
<li><a href="http://www.sics.se/~adam/contiki/docs-uipv6/a01108.html" class="liexternal">Jackdaw Firmware</a></li>
<li><a href="https://sourceforge.net/projects/contiki/files/Contiki/Contiki%202.4/contiki-raven-2.4.zip/download" class="liexternal">Contiki Raven Paket</a></li>
<li><a href="http://www.wireshark.org/" class="liexternal">Wireshark</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.robotfreak.de/blog/robotik/roomba-rf-protokoll/276/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NIBObee vs. Asuro</title>
		<link>http://www.robotfreak.de/blog/robotik/nibobee-vs-asuro/216</link>
		<comments>http://www.robotfreak.de/blog/robotik/nibobee-vs-asuro/216#comments</comments>
		<pubDate>Fri, 16 Apr 2010 10:13:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Robotik]]></category>
		<category><![CDATA[Asuro]]></category>
		<category><![CDATA[Nibobee]]></category>

		<guid isPermaLink="false">http://www.robotfreak.de/blog/?p=216</guid>
		<description><![CDATA[Im Jahre 2005 erschien der Asuro Roboter auf dem Markt und sorgte f&#252;r eine kleine Revolution. Der Asuro wurde damals wie heute f&#252;r 50€ angeboten, und setzte damit den Einstiegspreis f&#252;r einen Roboter Bausatz auf ein neues Tiefpreis Niveau. 4 Jahre sp&#228;ter erscheint nun mit dem NIBObee ein Rivale auf der Bildfl&#228;che, der ebenfalls f&#252;r [...]]]></description>
			<content:encoded><![CDATA[<p>Im Jahre 2005 erschien der Asuro Roboter auf dem Markt und sorgte f&#252;r eine kleine Revolution. Der Asuro wurde damals wie heute f&#252;r 50€ angeboten, und setzte damit den Einstiegspreis f&#252;r einen Roboter Bausatz auf ein neues Tiefpreis Niveau. 4 Jahre sp&#228;ter erscheint nun mit dem NIBObee ein Rivale auf der Bildfl&#228;che, der ebenfalls f&#252;r 50€ angeboten wird. In diesem Artikel geht es u.a. um die Frage: Ist der NIBObee ein w&#252;rdiger Asuro Nachfolger?<br />
<img src="http://farm3.static.flickr.com/2725/4105008595_44f2d97453.jpg" alt="NIBObee vs. Asuro" /><br />
<span id="more-216"></span><br />
Im <a href="http://www.roboternetz.de/phpBB2" class="liexternal">Roboternetz.de</a> und <a href="http://www.mikrocontroller.net" class="liexternal">Mikrocontroller.net</a> Forum wurden vom Hersteller <a href="http://www.nicai-systems.de/nibobee.html" class="liexternal">nicai-systems</a> jeweils 10 Exemplare an interessierte User kostenlos zur Verf&#252;gung gestellt, die in den beiden Foren dann &#252;ber ihre Erfahrungen berichten. Auch ich konnte einen der Gratis Baus&#228;tze ergattern.</p>
<h2>Aufbau</h2>
<p>Der Aufbau des NIBObee gestaltet sich insgesamt einfacher als beim Asuro. Die NIBObee Leiterplatte ist wesentlich gr&#246;&#223;er, die Bauteile sind nicht so dicht gedr&#228;ngt, Widerst&#228;nde liegen plan und stehen nicht aufrecht wie beim Asuro. Allerdings mu&#223; man schon die n&#246;tige Sorgfalt walten lassen insbesondere beim Zusammenbau der Getriebek&#228;sten.<br />
Sind die Achsen erst mal schr&#228;g und alles schon zusamengel&#246;tet l&#228;&#223;t sich das nur noch schwer korrigieren.<br />
<img src="http://farm3.static.flickr.com/2508/4093883056_15850031af.jpg" alt="NIBObee Getriebe" /><br />
Bei der Verwendung von bleifreiem Lot ist eine genaue Nachkontrolle unumg&#228;nglich. Kalte L&#246;tstellen sind nicht so einfach zu finden wie bei Bleilot. Im Bild unten sieht man, das die 2. L&#246;tstelle neben dem NIBObee Schriftzug fehlerhaft ist.<br />
<img src="http://farm3.static.flickr.com/2637/4093884472_08e7594ab5.jpg" alt="NIBObee" /></p>
<h2>Ausstattung</h2>
<p>Auch bei der Ausstattung punktet der NIBObee ganz klar. Der gr&#246;&#223;ere Prozessor mit mehr IOs bietet einfach mehr Anschlussm&#246;glichkeiten f&#252;r Sensoren.<br />

<table id="wp-table-reloaded-id-1-no-1" class="wp-table-reloaded wp-table-reloaded-id-1">
<thead>
	<tr class="row-1 odd">
		<th class="column-1">Feature</th><th class="column-2">Nibobee</th><th class="column-3">Asuro</th>
	</tr>
</thead>
<tbody>
	<tr class="row-2 even">
		<td class="column-1">Prozessor</td><td class="column-2">ATMega16 erweiterbar auf ATmega644</td><td class="column-3">ATmega8 erweiterbar auf ATmega328</td>
	</tr>
	<tr class="row-3 odd">
		<td class="column-1">Speicher</td><td class="column-2">16kByte</td><td class="column-3">8kByte, davon 1kByte Bootloader</td>
	</tr>
	<tr class="row-4 even">
		<td class="column-1">Flashtool</td><td class="column-2">USB Programmer onboard</td><td class="column-3">drahtlos RS232 IR, optional USB IR </td>
	</tr>
	<tr class="row-5 odd">
		<td class="column-1">Odometrie</td><td class="column-2">digital, IR mit Abschirmung und Schmitt Trigger</td><td class="column-3">analog, IR ohne Abschirmung</td>
	</tr>
	<tr class="row-6 even">
		<td class="column-1">Liniensensor</td><td class="column-2">3 Fototransistoren, 2 IR LEDs</td><td class="column-3">2 Fototransistoren, 1 rote LED</td>
	</tr>
	<tr class="row-7 odd">
		<td class="column-1">Bumper</td><td class="column-2">2 Fühler mit 4 Taster (Vorwärts, rückwärts)</td><td class="column-3">6 Taster</td>
	</tr>
	<tr class="row-8 even">
		<td class="column-1">Motorbrücke</td><td class="column-2">diskret mit Transistoren</td><td class="column-3">diskret mit Transistoren</td>
	</tr>
	<tr class="row-9 odd">
		<td class="column-1">Anzeigen</td><td class="column-2">2 rote,<br />
3 grüne,<br />
2 gelbe LEDs</td><td class="column-3">1 Front LED rot, 1 Status LED 2-farbig rot, grün, gelb, 2 Back LEDs rot</td>
	</tr>
	<tr class="row-10 even">
		<td class="column-1">Schnittstellen</td><td class="column-2">UART nur auf Erweiterungsport, <br />
I2C nur auf Erweiterungsport </td><td class="column-3">UART IR 2400 Baud, <br />
I2C nur unter Verlust der Liniensensoren</td>
	</tr>
</tbody>
</table>
</p>
<h2>Programmierung</h2>
<p>Bei der Programmierung gibt es keinen eindeutigen Sieger. Beide Prozessoren aus der Atmel Reihe k&#246;nnen mit den gleichen Tools und Programmiersprachen programmiert werden. Der Asuro ist hier vielleicht etwas einfacher zu programmieren, aber nur, weil er halt nicht so viele Peripherie hat. Zum NIBObee geh&#246;rt daf&#252;r eine ausgewachsene Programmier Bibliothek vom Hersteller, die die AsuroLib an Umfang um L&#228;ngen schl&#228;gt.<br />
Beim Flashtool zum &#220;bertragen der Programme ist die NIBObee wieder im Vortiel. Der eingebaute USB Programmer schl&#228;gt den Standard IR-RS232 Transceiver ganz klar. Viele neue PCs haben keine RS232 Schnittstelle mehr. Der Anwender mu&#223; sich f&#252;r extra Kohle den USB Transceiver zulegen. Au&#223;erdem ist die IR Schnittstelle Nummer 1 der Fehlerquellen beim Asuro. Ein Punkt spricht allerdings f&#252;r den Asuro. &#220;ber die IR Schnittstelle kann der Asuro auch mit dem PC kommunizieren, das geht bei der NIBObee leider nicht. Man braucht schon einen extra USB-Seriell Wandler.<br />
<img src='http://farm3.static.flickr.com/2671/4105013297_cab7a4a466.jpg' alt='NIBObee mit USB seriell Wandler'/></p>
<h2>Erweiterungen</h2>
<p>F&#252;r den Asuro werden einige Erweiterungen vom Hersteller angeboten. </p>
<ul>
<li>Ultraschall Modul</li>
<li>LCD Modul</li>
<li>SnakeVision</li>
</ul>
<p>Dazu gibt es noch eine kleine Experimentierplatine f&#252;r eigene Erweiterungen. Leider werden alle Erweiterungen mit dem Nachtel erkauft, das man z.B. auf den Liniensensor verzichten mu&#223;.<br />
Bei der NIBObee gibt es 5 freie Erweiterungsports mit insgesamt 10 IOs. Damit l&#228;&#223;t sich schon einiges mehr anfangen. Neben der I2C und UART Schnittstelle stehen noch 6 digitale/analoge Ports zur Verf&#252;gung. Vom Hersteller ist bisher nur ein Graphik Display angek&#252;ndigt, so ist also vorerst DIY angesagt. Im Bild unten ist z.B ein LCD mit I2C Anschluss zu sehen.<br />
<img src='http://farm3.static.flickr.com/2788/4122379136_cf8c1232f1.jpg' alt='NIBObee mt I2C LCD'/><br />
Weitere Erweiterungen sind im <a href="http://www.roboternetz.de/phpBB2/viewtopic.php?p=474366" class="liexternal">Roboternetz Forum</a> zu finden.</p>
<h2>Fazit</h2>
<p>Keine gro&#223;e &#220;berraschung. Der klare Sieger nach Punkten hei&#223;t NIBObee. Allerdings werde ich meinen liebgewonnenen Asuro deshalb noch lange nicht in die Ecke stellen. Konkurrenz belebt das Gesch&#228;ft und es gibt sicher genug Fans f&#252;r beide Robotermodelle. So schnell werden wohl auch die Asuro Fans nicht austerben.</p>
<h2>Weblinks</h2>
<ul>
<li><a href="http://www.nicai-systems.de/nibobee.html" class="liexternal">nicai-systems</a> Roboterbausatz NIBObee</li>
<li><a href="http://sourceforge.net/projects/nibobeelib" class="liexternal">Sourceforge NIBObee Library</a></li>
<li><a href="http://www.nibo-roboter.de/wiki/NIBObee" class="liexternal">NIBObee Wiki</a></li>
<li><a href="http://www.reichelt.de/?ACTION=3;ARTICLE=91023;PROVID=2402" class="liexternal">NIBObee bei Reichelt</a></li>
<li><a href="http://www.flickr.com/photos/hmblgrmpf/sets/72157622770689906/" class="liexternal">NIBObee Flickr Album</a></li>
<li><a href="http://www.youtube.com/results?search_query=nibobee&amp;search_type=&amp;aq=f" class="liexternal">NIBObee Videos auf Youtube</a></li>
<li><a href="http://www.mikrocontroller.net/topic/155179" class="liexternal">Microcontroller.net</a> &#8211; Thread zur Nibobee</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.robotfreak.de/blog/robotik/nibobee-vs-asuro/216/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ardubot</title>
		<link>http://www.robotfreak.de/blog/robotik/ardubot/194</link>
		<comments>http://www.robotfreak.de/blog/robotik/ardubot/194#comments</comments>
		<pubDate>Fri, 23 Oct 2009 21:43:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ardubot]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Robotik]]></category>

		<guid isPermaLink="false">http://www.robotfreak.de/blog/?p=194</guid>
		<description><![CDATA[Ardubot heisst mein aktuelles Roboterprojekt. Benannt wurde er nach dem  Sparkfun Ardubot PCB, welches das Chassis bildet. Als Prozessor Board kommt ein Seeeduino V328 mit ATmega328 zum Einsatz. Dieses ist voll kompatibel zum Arduino Duemilanove, hat aber noch einige sinnvolle Erweiterungen. Die Stromversorgung bildet ein 7,4V 1100mAh LiPo Akku. Der Motor Controller besteht aus einem [...]]]></description>
			<content:encoded><![CDATA[<p>Ardubot heisst mein aktuelles Roboterprojekt. Benannt wurde er nach dem  <a href="http://www.sparkfun.com/commerce/product_info.php?products_id=9207" class="liexternal">Sparkfun Ardubot PCB</a>, welches das Chassis bildet. Als Prozessor Board kommt ein <a href="http://letsmakerobots.com/node/10254" class="liexternal">Seeeduino V328</a> mit ATmega328 zum Einsatz. Dieses ist voll kompatibel zum Arduino Duemilanove, hat aber noch einige sinnvolle Erweiterungen. Die Stromversorgung bildet ein 7,4V 1100mAh LiPo Akku. Der Motor Controller besteht aus einem L293D. Angetrieben wird der Ardubot von 2 <a href="http://www.pololu.com/catalog/product/992" class="liexternal">Pololu Micro Metal Gearmotoren</a> mit einer 100:1 &#220;bersetzung und den passenden <a href="http://www.pololu.com/catalog/product/1218" class="liexternal">Pololu 42&#215;19 R&#228;dern mit Quadratur Encodern</a>. Dazu kommt noch ein <a href="http://www.lcd-module.com/produkte/dog.html" class="liexternal">DOGM163</a> 16&#215;3 Zeichen LCD Modul.</p>
<p><img src="http://farm3.static.flickr.com/2700/4032469329_bb50e8edd0.jpg" alt="Ardubot" /></p>
<p><span id="more-194"></span></p>
<h2>Aufbau:</h2>
<p>Der Ardubot ist modular aufgebaut. Alle Module werden nur einfach aufeinander gesteckt oder verschraubt. Die Verbindungen zwischen den Modulen sind mit Dr&#228;hten bzw. Kabel steckbar ausgef&#252;hrt. Auf dem Tr&#228;gerplatine bzw. dem Seeeduino  sind alle Steckverbinder angebracht die zum Verbinden der Module ben&#246;tigt werden. Durch diese flexible Verkabelung lassen sich leicht unterschiedliche Varianten zum Anschlu&#223; der Hardware mit dem Arduino ausprobieren.</p>
<p>Die bisher vorhandenen  Module sind im einzelnen:</p>
<ul>
<li>Tr&#228;gerboard mit Motor Treiber, Motoren, Radencoder</li>
<li>Prozessor Modul</li>
<li>I<sup>2</sup>C LCD Modul</li>
<li>Liniensensor</li>
</ul>
<p>Als Erweiterungen sind geplant bzw. befinden sich im Bau:</p>
<ul>
<li>Asuro Erweiterungs Modul.  Erm&#246;glicht das Anschlie&#223;en von Asuro Erweiterungen wie SnakeVision,  US Sensor.</li>
<li>Sensor Modul f&#252;r verschiedene Ultraschall bzw Infrarot Entfernungssensoren, Lichtsensoren</li>
<li>Gyro/Acceleration Board um den Ardubot auf  den Hinterr&#228;dern balancieren zu lassen</li>
<li>Funk Kamera Modul mit Schwenk/ Neige Servo</li>
<li>Bluetooth oder ein anderes drahtloses Kommunikations Modul</li>
</ul>
<h2>Tr&#228;gerboard:</h2>
<p>Das Ardubot PCB ist das Tr&#228;gerboard f&#252;r den Ardubot. Wie beim Asuro bildet die Platine zugleich das Chassis f&#252;r den Roboters. Die Ardubot Platine besteht aus:</p>
<ul>
<li> Lochrasterfl&#228;chen und Strom Versorgungs Reihen,</li>
<li>einem Arduino konformen Steckplatz und Bohrungen,</li>
<li>Bohrungen f&#252;r die Motor Halterungen und das Bugrad</li>
<li>Anschlu&#223; f&#252;r Batterie und Schalter</li>
<li>der Anschlu&#223; f&#252;r den L293D  Motor Halter und die Motoren</li>
</ul>
<p>Leider ist einiges nicht so verdrahtet, wie ich mir das gew&#252;nscht h&#228;tte. Im Nachhinein h&#228;tte ich auch gleich eine fertige doppelseitig kontaktierte Lochraster Platine verwenden k&#246;nnen. Folgende &#196;nderungen wurden deshalb an der Ardubot Platine vorgenommen:</p>
<ul>
<li>Motor Controller Eing&#228;nge von den Arduino Steckplatz durchtrennt und auf eine eigene Buchsenleiste gef&#252;hrt</li>
<li>Enable Pins des Motor Controller waren mit VCC verbunden. Durchtrennt und ebenfalls auf die Buchsenleiste gef&#252;hrt</li>
<li>Die beiden Reihen f&#252;r  Batteriespannung und GND getauscht. Damit sich Sensoren oder Servos mit 3pol Standard Anschl&#252;ssen anschlie&#223;en lassen</li>
<li>alle Arduino Pins sind nochmals vorne an den Seiten auf Stiftleisten gef&#252;hrt</li>
</ul>
<p>Trotz aller Umbauten ist die Ardubot Platine immer noch nicht perfekt.</p>
<ul>
<li>Durch die verwendeten gr&#246;&#223;eren R&#228;der kann man den USB Stecker am Arduino nicht mehr anstecken, ohne das er am Rad schleift. </li>
<li>Ich h&#228;tte gerne auch das Seeeduino Mega Board ausprobiert. Von den Abmessungen kaum gr&#246;&#223;er als das Seeeduino V328 aber die Steckverbinder sind leider etwas versetzt. Darum pa&#223;t es nicht. Auf einem etwas gr&#246;&#223;eren Board (Standard EuoPlatine 100x160mm) m&#252;&#223;te es gehen oder mit l&#228;ngeren Steckverbindern.</li>
<li>Dadurch, dass das Arduino Baord mit den Steckverbindern nach unten auf die Ardubot Platine gesteckt wird, kann man kein Standard Arduino Shield verwenden. Au&#223;er es ist ein Shield mit &#8216;stackable Headers&#8217;.
</li>
</ul>
<h3>Ardubot Unterseite:<strong> </strong></h3>
<p>Die Unterseite der Ardubot Platine enth&#228;lt eine Menge an zus&#228;tzlichen Dr&#228;hten und Bauteilen. Neben dem L293D Motor Controller, einem weiteremPCF8574 Port Expander f&#252;r den Liniensensor auch ein 74AC14 Hex Inverter C. Derzeit werden 2 Inverter f&#252;r die Motor Steuerung verwendet, was 2 Arduino IOs einspart.</p>
<p><img src="http://farm3.static.flickr.com/2705/4033229186_5b949cd865.jpg" alt="Ardubot" /></p>
<p>Dieses Bild mit Notizen auf <a href="http://www.flickr.com/photos/hmblgrmpf/4033229186/" class="liexternal">Flickr</a> anschauen.</p>
<h3>Ardubot Oberseite:</h3>
<p>Auf der Oberseite sieht man neben den neu verdrahteten Verbindungen eine Menge an SMD Widerst&#228;nden. Da alles so flexibel wie m&#246;glich sein soll, sind alle Eing&#228;nge der Chips mit Pulldown Widerst&#228;nden versehen. Zudem sind alle Ein-und Ausg&#228;nge auf die unten zu sehenden Front Steckverbinder gef&#252;hrt. So kann relativ schnell die Hardware neu verdrahtet werden ohne zum L&#246;tkolben greifen zu m&#252;ssen.</p>
<p><img src="http://farm3.static.flickr.com/2517/4033221138_12dabcb0c2.jpg" alt="Ardubot" /></p>
<p>Dieses Bild mit Notizen auf <a href="http://www.flickr.com/photos/hmblgrmpf/4033221138/" class="liexternal">Flickr</a> anschauen.</p>
<h3>Quadratur Encoder:</h3>
<p>Das folgende Bild zeigt ein Pololu Rad mit dem Quadratur Encoder. &#220;ber 2 Trimmer kann man die beiden Ausgangssignale anpassen, damit diese ein perfektes Rechteck Signal und ein 90° phasenverschobenes Signal ausgeben.</p>
<p><img src="http://farm4.static.flickr.com/3067/4033219620_264ab28786.jpg" alt="Ardubot" /></p>
<h2>Prozessor Modul:</h2>
<p>Als Gehirn f&#252;r den Ardubot kommt ein  Seeeduino V328 Board zum Einsatz. Ein Arduino Duemilanove clone. Das Seeeduino wurde von mir nicht nur wegen der zum Tr&#228;gerboard passenden Farbe ausgew&#228;hlt. Es hat zudem einige wichtige Vorz&#252;ge gegen&#252;ber dem Duemilanove:</p>
<ul>
<li>2 extra A/D pins</li>
<li>seperate Anschl&#252;sse  f&#252;r I<sup>2</sup>C und UART</li>
<li>separate Arduino IOs auf der R&#252;ckseite mit Lochraster konformen Abmessungen</li>
<li>Arbeitet mit 5V oder 3,3V (&#252;ber Schalter umschaltbar)</li>
<li>Auto oder Manueller Reset (&#252;ber Schalter umschaltbar)</li>
</ul>
<p><img src="http://farm4.static.flickr.com/3483/4035048953_5575933741.jpg" alt="Ardubot" /></p>
<p>Dieses Bild mit Notizen auf <a href="http://www.flickr.com/photos/hmblgrmpf/4035048953/" class="liexternal">Flickr</a> anschauen.</p>
<h2>I<sup>2</sup>C LCD Modul:</h2>
<p>Das LCD Module ist ein DOGM 163 3&#215;16 Zeichen Display von <a href="http://www.lcd-module.de" class="liexternal">lcd-module.de</a>. Es kann im 8-bit, 4-bit und SPI Mode betrieben werden. Aufgrund der Limitierung der Arduino IOs wird das LCD im 4-Bit Mode &#252;ber einen I<sup>2</sup>C Port Expander betrieben. Die Standard LiquidCrystal Arduino Bibliothek wurde entsprechend angepasst. &#220;ber Jumper und einen separaten Steckverbinder kann man das Modul auch im SPI Mode betrieben. &#220;ber die hinteren Steckverbinder ist auch ein 4-Bit Betrieb m&#246;glich. I2C ist nat&#252;rlich aufgrund des Bussystems nat&#252;rlich die Methode die die wenigsten Pins ben&#246;tigt, allerdings auch sehr langsam (100µs pro Zeichen bei 100kHz I2C Bustakt).</p>
<p><img src="http://farm3.static.flickr.com/2732/4033227754_c06af29fbb.jpg" alt="Ardubot" /></p>
<p>Dieses Bild mit Notizen auf <a href="http://www.flickr.com/photos/hmblgrmpf/4033227754/" class="liexternal">Flickr</a> anschauen.</p>
<h2>Erster Test, schreibe &#8216;LMR&#8217;:<strong><br />
</strong></h2>
<p>Der erste Test f&#252;r den Ardubot gilt den Rad Encodern. Diese sind zwar mit einer Aufl&#246;sung von 48 Impulsen pro Rad Umdrehung nicht sehr exakt. Um einfache Figuren zu zeichnen, sollte es aber allemal reichen. Bei <a href="http://www.letsmakerobots.com" class="liexternal">letsmakerobots</a> gibt es schon seit einiger Zeit einen Wettbewerb, in dem es darum geht, die Buchstaben &#8216;LMR&#8217;, die Abk&#252;rzung f&#252;r letsmakerobots, mit einem Roboter darzustellen. Das ist doch schon mal eine echte Herausforderung.</p>
<p>Als fauler Programmieren baut man nat&#252;rlich auf etwas, was man schon kennt. In diesem Fall den Asuro und die Asuro Library. Der Asuro hat ja auch Radencoder mit einer &#228;hnlichen Aufl&#246;sung und in der Asuro Lib gibt es die passenden Funktionen f&#252;r Go und Turn zum Fahren unter Zuhilfenahme der Radencoder. Die beiden Funtkionen bzw. die aktuelle GoTurn Funktion ist schnell f&#252;r den Ardubot in ein Arduino Sketch umgewandelt. Aber irgendwie funktioniert das ganze noch nicht so richtig. Es ist scheinbar egal ob ich die Korrektur der Geschwindigkeit durch Vergleich von linkem und rechtem Encoder drinhabe oder nicht. Es kommt fast immer zu einer leichten Abweichung. Wenn ich die Korrektur weglasse, sieht das Ergebnis genauso aus. Da steckt noch irgendwie der Wurm drin. Trotzdem bin ich mit dem ersten Ergebnis soweit zufrieden.</p>
<p>Hier gibt es das Video zu diesem ersten Test.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="350" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/GM3jkn8ZhFc" /><embed type="application/x-shockwave-flash" width="425" height="350" src="http://www.youtube.com/v/GM3jkn8ZhFc"></embed></object></p>
<p>Wie man beim letzten Buchstaben dem &#8216;R&#8217; sehen kann ist der Halbkreis doch sehr klein geworden. Das liegt diesmal aber nicht an der Software, sondern an der Hardware. Die R&#228;der bewegen sich erst ab einem PWM Wert von ca. 80. Unter 80 geben die Motoren nur pfeifende Ger&#228;usche vonn sich. wenn sich die R&#228;der dann drehen, schafft man es einfach nicht mehr engere Kurven zu fahren. Der Kreis wird gleich zu gro&#223; (ca 30cm) wenn sich das innere Rad zu drehen beginnt oder zu klein, wenn es stehen bleibt (ca 9cm). F&#252;r den perfekten Halbkreis w&#228;ren aber 15cm richtig.</p>
<p>Des weitern erkennt man in dem Video, das der Stift bei jeder Drehung einen kleinen Bogen beschreibt. Ist nat&#252;rlich logisch, da der Stift ja versetzt von der Drehachse des Roboters angebracht ist. Abhilfe k&#246;nnte hier ein Servo schaffen, der den Stift auf Kommando absetzt oder anhebt. Zudem m&#252;&#223;te man dann mit dem Roboter vor jeder Drehung:</p>
<ul>
<li>den Stift anheben</li>
<li>ein kleines St&#252;ck zur&#252;ckfahren</li>
<li>drehen</li>
<li>wieder ein kleines St&#252;ck vorfahren</li>
<li>Stift absenken</li>
</ul>
<p>Daran bastele ich gerade als n&#228;chstes.</p>
<h2>Weitere Tests:</h2>
<p>F&#252;r die Zukunft sind weitere Test geplant:</p>
<ul>
<li>Zeichnen mit Stift und Servo</li>
<li>Liniensensor Test</li>
<li>Enrfernungs Sensoren testen</li>
<li>IR Fernbedienung</li>
<li>Balancieren auf den Hinterr&#228;dern</li>
</ul>
<h2>Weblinks</h2>
<ul>
<li><a href="http://www.flickr.com/photos/hmblgrmpf/sets/72157622510554147/" class="liexternal">Ardubot Flickr Album</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.robotfreak.de/blog/robotik/ardubot/194/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Asuro &#8211; DIY USB-IR Transceiver</title>
		<link>http://www.robotfreak.de/blog/robotik/asuro-diy-usb-ir-transceiver/176</link>
		<comments>http://www.robotfreak.de/blog/robotik/asuro-diy-usb-ir-transceiver/176#comments</comments>
		<pubDate>Wed, 02 Sep 2009 20:29:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Asuro]]></category>
		<category><![CDATA[Robotik]]></category>

		<guid isPermaLink="false">http://www.robotfreak.de/blog/?p=176</guid>
		<description><![CDATA[Ein kleiner Adapter macht aus dem Standard RS232-IR Transceivers zusammen mit einem USB-UART Modul einen USB IR Transceiver. Da neuere Rechner kaum noch mit einer seriellen Schnittstelle ausgestattet sind, gucken Asuro Benutzer erst mal in die R&#246;hre, da dem Bausatz nur ein RS232-IR Transceiver beiliegt. Der Asuro l&#228;sst sich leider nur &#252;ber diese propriet&#228;re Infrarot [...]]]></description>
			<content:encoded><![CDATA[<p>Ein kleiner Adapter macht aus dem Standard RS232-IR Transceivers zusammen mit einem USB-UART Modul einen USB IR Transceiver.<br />
<img src="http://farm3.static.flickr.com/2646/3881569373_a685d1689a.jpg" alt="Asuro DIY USB IR Transceiver" /><br />
<span id="more-176"></span><br />
Da neuere Rechner kaum noch mit einer seriellen Schnittstelle ausgestattet sind, gucken Asuro Benutzer erst mal in die R&#246;hre, da dem Bausatz nur ein RS232-IR Transceiver beiliegt. Der Asuro l&#228;sst sich leider nur &#252;ber diese propriet&#228;re Infrarot Schnittstelle Flashen, bzw. zur seriellen Kommunikation nutzen. Zwar gibt es auch den USB-IR Transceiver. Doch der kosten mit 18€ nicht gerade wenig, und taugt zudem nur f&#252;r den Asuro (bzw. den Yeti).</p>
<p>Es liegt also nahe, eine kosteng&#252;nstige L&#246;sung zu finden, die mit dem zum Bausatz geh&#246;renden RS232-IR Transceiver funktioniert. Und besser noch, eine L&#246;sung die nicht nur f&#252;r den Asuro taugt, sondern auch f&#252;r andere Projekte. Denn auch wenn, die serielle Schnittstelle beim PC quasi verschwinden ist, so findet sie sich noch bei vielen Mikrocontrollern.</p>
<p>USB UART Wandler gibt es sehr viele auf der Welt, aber nicht alle funktionieren auch mit dem Asuro bzw. dem Flash Tool. Doch es gibt Hoffnung. Auf dem USB-IR Transceiver wird ein USB UART Wandler der Firma <a href="http://www.ftdichip.com" class="liexternal">FTDI</a> verwendet. Diese USB UART Wandler findet man auf vielen Boards. So sind z.B. fast alle <a href="http://www.arduino.cc" class="liexternal">Ardui</a> Boards mit einem FTDI-Chip f&#252;r die Kommunikation mit dem PC ausger&#252;stet. Au&#223;erdem gibt es immer aktuelle Treiber f&#252;r alle wichtigen Betriebssysteme und der Support ist auch ok. Zudem gibt es eine Reihe von USB-UART Wandlern mit FTDI Chip als kleine Adapter oder als simple Kabel, die man einfach an sein System anst&#246;pseln kann.<br />
<img src="http://farm3.static.flickr.com/2582/3882367572_bfa919cc41.jpg" alt="Asuro DIY USB IR Transceiver" /></p>
<h2>Schaltung</h2>
<p>Der RS232-IR Transceiver arbeitet eigentlich mit den bei RS232 Schnittstellen &#252;blichen Pegeln von +-12V. Nach einem Blick in den Schaltplan  erkennt man aber schnell, dass die ankommenden Pegel zuerst auf normalen 5V TTL Pegel gebracht werden. Insbesondere der IR Empf&#228;nger Chip ist sehr empfindlich und vertr&#228;gt nur wenig mehr als 5V. Negative Spannungen sind ebenso tabu. Das n&#228;hrt die Vermutung, dass der  Transceiver auch mit normalen 5V funktioniert, wie sie der FTDI UART Wandler liefert. Im Gegensatz zu den USB-RS232 Wandlern, die mit +-12V Pegeln arbeiten.</p>
<p>An der COM Schnittstelle im PC werden diese RS232 Pegel ebenfalls wieder auf 5V Pegel gebracht. Die dabei verwendeten Pegelwandler invertieren zudem die Logik Pegel. Deshalb kann man den USB UART Adapter nicht direkt mit dem RS232-IR Tarnsceiver verbinden. Es werden noch Inverter f&#252;r die Signale ben&#246;tigt.<br />
Nach genauerem Schaltplan Studium werden 2 Inverter ben&#246;tigt. Einen f&#252;r das empfangene und einer f&#252;r das zu sendende Signal. 2 NPN Transistoren eignen sich sehr gut f&#252;r diese Aufgabe.</p>
<p><img src="http://farm4.static.flickr.com/3438/3878676941_051e7628d2.jpg" alt="Asuro DIY USB IR Transceiver" /><br />
<img src="http://farm4.static.flickr.com/3508/3878677229_b60268ef28.jpg" alt="Asuro DIY USB IR Transceiver" /></p>
<p>Entsprechend &#252;bersichtlich sieht der Schaltplan aus. Neben den Transistoren noch 4 Widerst&#228;nde Steckverbinder und ein kleines St&#252;ck Lochrasterplatine, das war es dann schon.</p>
<p><strong>St&#252;ckliste:</strong></p>
<ul>
<li>1 x SUB-D 9polig Stecker gewinkelt,</li>
<li>1 x Stiftleiste 6polig</li>
<li>1 x Lochraster ca. 3x4cm</li>
<li>2 x NPN Transistoren BC547 o.&#228;.</li>
<li>4 x Widerst&#228;nde 1k o. 1k5</li>
</ul>
<p><img src='http://farm4.static.flickr.com/3483/3881571945_18c68482b4.jpg' alt='Asuro DIY USB IR Transceiver'/><br />
<img src='http://farm3.static.flickr.com/2480/3881572889_2b836fc7f0.jpg' alt='Asuro DIY USB IR Transceiver'/></p>
<h2>Video</h2>
<p>Ein kleines Video zeigt den USB IR Transceiver in Aktion.<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/PFV3zh0K4ro&#038;hl=de&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/PFV3zh0K4ro&#038;hl=de&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<h2>Weiterf&#252;hrende Themen</h2>
<p>F&#252;r die FTDI USB UART Chips gibt es auch Entwickler Libs um, den Chip vom PC aus f&#252;r eigene Projekte zu verwenden. So gibt es f&#252;r die g&#228;ngigen PC Sprachen (.NET C#, C++, Visual Basic) auf der <a href="http://www.ftdichip.com/Projects/CodeExamples.htm" class="liexternal">FTDI Homepage</a> entsprechende Libraries und Beispiel Code. F&#252;r die folgenden Beispiele werden Entwickler oder Breakout Boards mit FTDI Chips ben&#246;tigt. Boards, bei denen praktisch alle Anschl&#252;sse des FTDI Chips nach au&#223;en gef&#252;hrt sind. Bei dem oben genannten FTDI Basic Adapter ist das nicht der Fall, wohl aber beim <a href="http://www.watterott.com/de/Breakout-Board-mit-FT232RL-USB-Seriell-Wandler" class="liexternal">Breakout Board</a> mit FTDI232RL Chip.</p>
<h3>ISP Dongle</h3>
<p>Die FTDI USB-UART Wandler sind schon tolle Chips, mit denen man nicht nur USB in seriell UART Signale wandeln kann. So ein Chip kann auch als Low Cost ISP Dongle verwendet werden. Dazu wird der sogenannte Bitbang Modus verwendet. Damit lassen sich &#252;ber USB z.B. alle g&#228;ngigen Atmel Mega und tiny Chips programmieren. Mehr unter: <a href="http://translate.google.com/translate?u=http%3A%2F%2Fwww.geocities.jp%2Farduino_diecimila%2Fbootloader%2Findex.html%23top&amp;hl=de&amp;ie=UTF-8&amp;sl=ja&amp;tl=en" class="liexternal">www.geocities.jp</a></p>
<h3>I2C Master</h3>
<p>Auch als I2C Master l&#228;sst sich so ein FTDI Chip missbrauchen. Man braucht dazu keinen Mikrocontroller. Alles wird einem PC Programm gesteuert. Zwar ist der Bitbang Modus nicht besonders schnell, aber zum Testen von einem I2C Baustein reicht es alle mal. Die neueren FTDI Chips bieten hier schon bessere Performance. Mehr unter: <a href="http://www.mikrocontroller.net/topic/102360#new" class="liexternal">microcontroller.net</a></p>
<h2>Weblinks</h2>
<ul>
<li><a href="http://www.ftdichip.com" class="liexternal">FTDI</a></li>
<li><a href="http://www.flickr.com/photos/hmblgrmpf/sets/72157622084807891/" class="liexternal">Flickr Album</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.robotfreak.de/blog/robotik/asuro-diy-usb-ir-transceiver/176/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mr. Red Adair &#8211; Feuerwehr Roboter</title>
		<link>http://www.robotfreak.de/blog/robotik/mr-red-adair-feuerwehr-roboter/125</link>
		<comments>http://www.robotfreak.de/blog/robotik/mr-red-adair-feuerwehr-roboter/125#comments</comments>
		<pubDate>Wed, 08 Jul 2009 20:09:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Robotik]]></category>
		<category><![CDATA[Atmel]]></category>
		<category><![CDATA[Wii]]></category>

		<guid isPermaLink="false">http://www.robotfreak.de/blog/?p=125</guid>
		<description><![CDATA[Mr. Red Adair benannt nach dem wohl ber&#252;hmtesten Feuerwehrmann der Welt, Paul &#8220;Red&#8221; Adair ist ein Feuerwehr Roboter. Nat&#252;rlich nicht f&#252;r echte Feuer sondern nur f&#252;r kleinere Br&#228;nde wie z.B. Kerzen oder Teelichter. Der Roboter nahm erfolgreich an einem Roboter Wettbewerb teil, allerdings keinem speziellen Feuerwehr Roboter Wettbewerb sondern am LMR DAGU Mr. Basic Wettbewerb [...]]]></description>
			<content:encoded><![CDATA[<p>Mr. Red Adair benannt nach dem wohl ber&#252;hmtesten Feuerwehrmann der Welt, Paul &#8220;Red&#8221; Adair ist ein Feuerwehr Roboter. Nat&#252;rlich nicht f&#252;r echte Feuer sondern nur f&#252;r kleinere Br&#228;nde wie z.B. Kerzen oder Teelichter. Der Roboter nahm erfolgreich an einem Roboter Wettbewerb teil, allerdings keinem speziellen Feuerwehr Roboter Wettbewerb sondern am LMR DAGU Mr. Basic Wettbewerb von <a href="http://www.letsmakerobots.com" class="liexternal">letsmakerobots.com</a>.</p>
<p><img src="http://farm4.static.flickr.com/3385/3625798875_de5cfa762b.jpg" alt="Mr-Red-Adair-early-study" /></p>
<p><span id="more-125"></span></p>
<h2>LMR DAGU Mr. Basic Wettbewerb:</h2>
<p>Das Chassis von Mr. Red Adair ist das Mr. Basic Chassis der chinesischen Firma DAGU / AREXX. DAGU / AREXX ist auch Hersteller der Asuro Baus&#228;tze  und hat f&#252;r letsmakerobots (LMR) eine Sonder Edition von 50 Mr. Basic Chassis f&#252;r den Wettbewerb zur Verf&#252;gung gestellt. F&#252;r einen Unkostenbeitrag von 22US$ konnte jedes LMR Mitglied einen der Baus&#228;tze erwerben und am <a href="http://letsmakerobots.com/taxonomy/term/3546" class="liexternal">Wettbewerb</a> teilnehmen. Regeln gab es keine besonderen. Man musste lediglich den kompletten Bausatz (mit Ausnahme der Aufbauten wie z.B. der Leerplatine und dem Batteriefach) verwenden. Pr&#228;miert wurden die ersten 3 Roboter Modelle mit den meisten User Stimmen. Der <a href="http://letsmakerobots.com/taxonomy/term/3546" class="liexternal">Wettbewerb</a> endete am 5. Juli 2009. Mit etwas Gl&#252;ck landete Mr. Red Adair unter den ersten Drei und erhielt ein Preisgeld von 100US$.</p>
<h2>Aufbau</h2>
<p>Mr. Red Adair besteht aus dem Mr. Basic Chassis mit seinem 4-Rad Antrieb. 2 DC Motoren mit angeschlossenem Getriebe und den Antriebsachsen bilden einem gew&#246;hnlichen differentiellem Roboter Antrieb. Nach anf&#228;nglichen Schwierigkeiten mit falsch gelieferten Achsen l&#228;uft das ganze nun doch noch rund. Die Schrauben m&#252;ssen allerdings regelm&#228;&#223;ig nachgezogen werden oder besser gleich mit Sekundenkleber fixiert werden.</p>
<p><img class="alignnone size-full wp-image-163" title="mr-basic" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/07/mr-basic.jpg" alt="mr-basic-google-sketchup" width="640" height="480" /></p>
<h3>Steuerung</h3>
<p>Als Gehirn kommt ein Atmel ATmega328 mit Arduino Bootloader zum Einsatz. Der Controller wurde einfach auf Lochraster aufgebaut, mit den &#252;blichen Steckverbindern f&#252;r Sensoren/Aktoren (3polig, Signal, VCC, GND) f&#252;r alle IOs, FTDI  USB-UART Kabel (6polig), Reset Taster und einem 16MHz Quartz best&#252;ckt. Damit ist er unter der Arduino Oberfl&#228;che als normales Arduino Duemilanove Board ohne &#196;nderungen  ansprechbar. Aufgrund des USB-UART Anschlusses und dem bereits eingebrannten Bootloader kann der obligatorische ISP Steckverbinder entfallen.</p>
<p><img src="http://farm3.static.flickr.com/2543/3713476787_e812b536cf.jpg" alt="arduino-clone-main-controller" /></p>
<h3>Sensoren</h3>
<p>Als Sensoren kommt zum neben einem Maxbotix EZ1 Ultraschall Entfernungsmesser nur noch eine Wii IR Camera als Flammendetektor zum Einsatz. Die Wii IR Camera wurde aus einer Original Wii Remote ausgel&#246;tet und zusammen mit einigen anderen Bauteilen auf Lochraster aufgebaut. Dank an U. J&#252;rss vom <a href="http://cczwei.de" class="liexternal">CC2</a> f&#252;r die Schaltung. Die Wii IR Camera verf&#252;gt &#252;ber ein I2C Interface und kann so recht einfach vom Arduino Controller ausgelesen werden. Nach Senden der Initialisierungs Sequenz kann man die Koordinaten (X, Y) und die Intensit&#228;t von bis zu 4 Infrarot Quellen auslesen. Die Koordinaten umfassen 1024&#215;1024 Punkte, der Erfassungsbereich betr&#228;gt etwa 1-2m f&#252;r eine Kerze in einem horizontalen Winkel von ca 40°. Die Intensit&#228;t der IR Quelle kann in 15 Stufen erfasst werden, daraus l&#228;sst sich in Grenzen auf die Entfernung zum Objekt schlie&#223;en. Ansonsten dient der EZ1 zum Erkennen der Entfernung zum Objekt.</p>
<p><img src="http://farm4.static.flickr.com/3614/3626730660_053a49a871.jpg" alt="wii-ir-camera-maxbotic-sensor" /></p>
<p>Der Wii IR Sensor mit externer Beschaltung auf Lochraster. Wichtig ist, den Sensor mit dem IR Filter zu betreiben, jene schwarze Kunststoffsscheibe, die sich vor dem Sensor im Wii Remote Geh&#228;use befindet.</p>
<p><img src="http://farm4.static.flickr.com/3377/3626622456_83e54e3a82.jpg" alt="wii-ir-camera" /></p>
<h3>Aktoren</h3>
<p>Da die <a href="http://www.mabuchi-motor.co.jp/en_US/cat_files/re_260ra.pdf" class="lipdf">Mabuchi RE-260</a> Motoren nur mit max. 4.5 V betrieben werden, aber gerne bis zu 2A ziehen, sind Motor Treiber mit besonderen Anforderungen gefragt. Zwar w&#228;re es nach Reglement m&#246;glich mehr Batterien (z.B. 6xAA) zu verwenden und die Motoren &#252;ber PWM zu regeln (ohne 100% Ansteuerung). Ich entschied mich f&#252;r den <a href="http://www.pololu.com/catalog/product/120" class="liexternal">Pololu LVDSMC</a> Low Voltage Serial Dual Motor Controller (LVSDMC) und komme daf&#252;r mit dem Original 3xAA Batteriepack aus. Allerdings war noch eine 9V Block Batterie f&#252;r die Elektronik (5V geregelt) und den Blower Motor (9V ungeregelt) notwendig. Der Blower Motor ist vorne am Chassis mit einem Alu Winkel befestigt und wird einfach &#252;ber einen N-FET ein- und ausgeschaltet. Eine Motorbr&#252;cke ist hier nicht notwendig, da er immer nur in dieselbe Richtung l&#228;uft. Zum Einsatz kommt hier ein Motor, den ich aus einem defekten Haar Trockner ausgebaut hatte. Ohne zu wissen, das dieser Motor auch mit Gleichstrom l&#228;uft hatte ich ihn mal testweise an eine Batterie geklemmt und er lief. So konnte dann auch gleich der Propeller ohne &#196;nderung mit &#252;bernommen werden. Mit t 9V lief der Motor flott genug um eine Kerze oder ein Teelicht auszublasen. Dabei zieht er zwar ca. 500mA, aber er l&#228;uft ja nur kurze Zeit.</p>
<p><img src="http://farm4.static.flickr.com/3660/3625809709_d91e1295c5.jpg" alt="blower-motor" /></p>
<p>Der Pololu Low Voltage Dual Serial Motor Controller (LVDSMC) ben&#246;tigt nur zwei Prozessor Pin und einige wenige externe Bauteile. Ein paar Abblock Kondensatoren (100µF und 100nF) und ganz wichtig ein Pullup Widerstand von 1..1.5kOhm an der Reset Leitung. &#220;ber den Reset Pin kann der Motor Controller zur&#252;ckgesetzt werden, der andere Pin ist f&#252;r die Kommunikation zust&#228;ndig. Ein simples serielles Protokoll, mit einer Soft-UART auf dem Arduino Prozessor simuliert, reicht aus. So bleibt die normale UART f&#252;r Debug Ausgaben frei.</p>
<p><img src="http://farm3.static.flickr.com/2427/3626729132_dea9738460.jpg" alt="pololu-lvdsmc-motor-controller" /></p>
<h2>Videos</h2>
<p>Das erste Video zeigt den Test der Einzelkomponenten.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/ZFuyRBvPL0c&amp;hl=de&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/ZFuyRBvPL0c&amp;hl=de&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Das zweite Video zeigt den finalen Test.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/rDjLI9XPWlA&amp;hl=de&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/rDjLI9XPWlA&amp;hl=de&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h1>Weblinks:</h1>
<ul>
<li><a href="http://letsmakerobots.com/node/8180" class="liexternal">Mr. Red Adair Artikel auf LMR</a></li>
<li><a href="http://letsmakerobots.com/node/7752" class="liexternal">Wii IR Camera als Standalone Sensor</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.robotfreak.de/blog/robotik/mr-red-adair-feuerwehr-roboter/125/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>3D Roboter Modelle in Microsoft RDS importieren</title>
		<link>http://www.robotfreak.de/blog/robotik/3d-roboter-modelle-in-microsoft-rds-importieren/82</link>
		<comments>http://www.robotfreak.de/blog/robotik/3d-roboter-modelle-in-microsoft-rds-importieren/82#comments</comments>
		<pubDate>Fri, 20 Feb 2009 22:38:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MRDS]]></category>
		<category><![CDATA[Robotik]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Asuro]]></category>
		<category><![CDATA[Google SketchUp]]></category>
		<category><![CDATA[Microsoft Robotics Studio]]></category>
		<category><![CDATA[Simulation]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[VSE]]></category>

		<guid isPermaLink="false">http://www.robotfreak.de/blog/?p=82</guid>
		<description><![CDATA[Die Erstellung von 3D Roboter Modellen  wurde bereits im Google SketchUp Tutorial beschrieben. Heute geht es nun darum, wie man diese Modelle von SketchUp aus exportiert und in das Microsoft Robotics Developer Studio (MRDS) importiert, damit sie korrekt im MRDS Simulator (VSE) dargestellt werden. Was wird ben&#246;tigt? Microsoft Visual C# 2008 Express Edition Microsoft Robotics [...]]]></description>
			<content:encoded><![CDATA[<p>Die Erstellung von 3D Roboter Modellen  wurde bereits im <a href="http://www.robotfreak.de/blog/robotik/google-sketchup-robotik-tutorial/52" class="liinternal">Google SketchUp Tutorial</a> beschrieben. Heute geht es nun darum, wie man diese Modelle von SketchUp aus exportiert und in das Microsoft Robotics Developer Studio (MRDS) importiert, damit sie korrekt im MRDS Simulator (VSE) dargestellt werden.</p>
<p><a href="http://www.flickr.com/photos/hmblgrmpf/3288812984/" class="flickr-image alignnone" title="RobotNo1 im VSE (visual mode)"><img src="http://farm4.static.flickr.com/3647/3288812984_08c8b322a6.jpg" alt="RobotNo1 im VSE (visual mode)" /></a></p>
<p><span id="more-82"></span></p>
<h2>Was wird ben&#246;tigt?</h2>
<ul>
<li><a href="http://www.microsoft.com/germany/express/product/visualcsharpexpress.aspx" class="liexternal">Microsoft Visual C# 2008 Express Edition</a></li>
<li><a href="http://go.microsoft.com/fwlink/?LinkID=134518" class="liexternal">Microsoft Robotics Developer Studio 2008 Express Edition</a></li>
<li><a href="http://sketchup.google.com/intl/de/" title="Google SketchUp" class="liexternal">Google SketchUp</a></li>
<li><a href="http://sketchuptips.blogspot.com/2009/01/wavefront-obj-exporter-with-materials.html" title="Wavefront obj Exporter script" class="liexternal">SketchUp Object Exporter Skript</a></li>
</ul>
<h2>Export aus Google SketchUp</h2>
<h3>Erste Fehlschl&#228;ge</h3>
<p>Es gabe einige Fehlschl&#228;ge bereits beim Export von Google SketchUp. Die kostenlose  Google SU Version bietet als Export Format nur das .kmz Format f&#252;r Google Earth Version 3 bzw. 4 an. F&#252;r die meisten Versuche wurde zudem noch <a href="http://www.blender.org" class="liexternal">Blender</a> ben&#246;tigt, da von SU aus &#252;ber ein drittes Format exportiert wurde, das dann zun&#228;chst in Blender importiert und anschlie&#223;end im .obj Format exportiert wurde.</p>
<p>1.Versuch mit dem <a href="http://sketchuptips.blogspot.com/2007/01/wavefront-obj-exporter.html" class="liexternal">obj_export SketchUp Plugin</a>. Das Modell ist viel zu gro&#223; und mu&#223; erst m&#252;hsam in Blender skaliert werden. Au&#223;erdem fehlen alle Farben und Texturen, da kein .mtl File erzeugt wird. <img src='http://www.robotfreak.de/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>2. Versuch mit dem <a href="http://www.katsbits.com/htm/tutorials/sketchup_converting_import_kmz_blender.htm" class="liexternal">Collada V1.4 Import von Blender</a>. Das Google Earth V4 Format ist nichts anderes als ein gezipptes Collada File. Also einfach .kmz File in .zip File umbenennen und das Archiv extrahieren. Dann von Blender aus Import (als Collada V1.4) das .dae File ausw&#228;hlen. Auch hier stimmen die Dimensionen nicht und das Modell mu&#223; etliche Male herunterskaliert werden.</p>
<p>3. Versuch. F&#252;r das Google Earth 3 Format gibt es das <a href="http://jmsoler.free.fr/didacticiel/blender/tutor/py_import_kml-kmz_en.htm" class="liexternal">kmz/kml Python Blender Plugin</a>. Der Import funktioniert zwar inklusive Texturen und korrekten Dimensionen des Modells. Aber beim Export von Blender, gehen dann bei komplexen Modellen viele Fl&#228;chen verloren.</p>
<h3>Der Durchbruch</h3>
<p>Der Durchbruch gelang erst mit dem <a href="http://sketchuptips.blogspot.com/2009/01/wavefront-obj-exporter-with-materials.html" class="liexternal">Object Export Skript</a> von Marten van der Honing . Damit klappt es endlich. Sowohl die Dimensionen des Modells und auch die Materialien werden korrekt exportiert. Vor allem aber wird kein Blender Programm mehr als Zwischenstufe ben&#246;tigt. Das spart Zeit und Nerven. Einzig die korrekte Ausrichtung der Modelle vor dem Export mu&#223; man beachten, dann klappt der Import ins MRDS ohne Probleme. <img src='http://www.robotfreak.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Chassis und R&#228;der getrennt exportieren</h3>
<p>Da sich in der Simulationsumgebung von MRDS die R&#228;der des Modells auch drehen sollen, m&#252;ssen die R&#228;der getrennt vom Chassis exportiert werden. Dabei gen&#252;gt es, ein einzelnes  Rad zu exportieren. Das MRDS f&#252;gt dann 2 R&#228;der bei einem 2-Rad Roboter ein. Das Chassis wird dann ohne R&#228;der exportiert. Vor dem Export m&#252;ssen die Modelle in SU korrekt  auf den 3 Achsen ausgerichtet werden. Das Chassis mu&#223; dazu folgenderma&#223;en ausgerichtet werden:</p>
<ul>
<li> durch den Mittelpunkt des Chassis geht die blaue Achse.</li>
<li>die  Front des Modells zeigt nach vorne</li>
<li>Das St&#252;tzrad ber&#252;hrt die gr&#252;ne Achse.</li>
</ul>
<p>So sollte das dann aussehen:</p>
<p><a href="http://www.flickr.com/photos/hmblgrmpf/3287996079/" class="flickr-image alignnone" title="RobotNo1 Chassis in Google SketchUp"><img src="http://farm4.static.flickr.com/3358/3287996079_b80aac2112.jpg" alt="RobotNo1 Chassis in Google SketchUp" /></a></p>
<p>F&#252;r die Antriebsr&#228;der gelten folgende Vorgaben:</p>
<ul>
<li>Der 0-Punkt liegt auf der Innenseite des Rades</li>
<li> Die rote Achse geht durch die Mitte des Rades</li>
<li>Die gr&#252;ne und blaue Achse ber&#252;hren die Innenseite des Rades.</li>
</ul>
<p>Ein Bild sagt mehr als 1000 Worte:</p>
<p><a href="http://www.flickr.com/photos/hmblgrmpf/3288812780/" class="flickr-image alignnone" title="RobotNo1 Rad in Google SketchUp"><img src="http://farm4.static.flickr.com/3516/3288812780_8b793bc6fa.jpg" alt="RobotNo1 Rad in Google SketchUp" /></a></p>
<p><strong>Hinweis:</strong> Es klappt nicht, wenn man die Achsen selbst an das Modell anpa&#223;t (mit dem <img class="alignnone size-full wp-image-102" title="achse1" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/02/achse1.jpg" alt="achse1" width="25" height="30" /> Symbol). Man mu&#223; schon das Modell selbst verschieben.</p>
<h3>Export Einstellungen</h3>
<p>Nachdem man das  <a href="http://sketchuptips.blogspot.com/2009/01/wavefront-obj-exporter-with-materials.html" class="liexternal">Object Export Skript</a>in das Google SU plugins Verzeichnis kopiert hat, findet man nach einem SU Neustart im Men&#252; unter Plugins den Eintrag Obj Exporter&#8230; Klickt man auf diesen Men&#252;punkt erscheint der folgende Dialog:</p>
<p><img class="alignnone size-medium wp-image-103" title="objexporterdialog" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/02/objexporterdialog-300x300.jpg" alt="objexporterdialog" width="300" height="300" /></p>
<p>Dort klickt man lediglich noch die beiden Optionen &#8216;Export front faces&#8217; und Export back faces&#8217; an und anschlie&#223;end den Export .obj File Button.  Bei komplexen Modellen dauert es schon ein Min&#252;tchen, bis das .obj File und .mtl File erzeugt werden.</p>
<h2>Import ins Microsoft Robotics Studio</h2>
<p>Der Import des 3D Modells geschieht &#252;ber das Kommandozeilen Tool obj2bos.exe. MRDS kann zwar auch das .obj Format direkt importieren, aus Performance Gr&#252;nden wird aber das hauseigene .bos Format empfohlen. Die zu importierenden Dateien, das .obj File und das .mtl File werden zun&#228;chst in den MRDS Unterordner store/media kopiert. Den obj2bos Konverter starte man vom DSS-Comand Prompt aus mit der folgenden Befehlszeile:</p>
<pre>obj2bos.exe /infile:.\store\media\RobotNo1Chassis.obj</pre>
<p>Das selbe wiederholt man f&#252;r das Rad:</p>
<pre>obj2bos.exe /infile:.\store\media\RobotNo1Wheel.obj</pre>
<h3>Anpassungen im Projekt</h3>
<p>Als Vorlage f&#252;r das Simulations Projekt wird das <a href="http://msdn.microsoft.com/de-de/magazine/cc546547.aspx" class="liexternal">MRDS Simulator Tutorial von Sara Morgan</a> aus dem MSDN Magazin verwendet. Urspr&#252;nglich wurde das Tutorial  f&#252;r den Boe-Bot von Parallax geschrieben. Ich habe es nur f&#252;r meinen RobotNo1 Roboter entsprechend dem Tutorial angepa&#223;t und neu aufgebaut. Auf das Tutorial werde ich hier nur kurz eingehen. 2 Dinge sind mir beim Nachbau aufgefallen:</p>
<p>1. Sobald man ein neues Projekt (Vorlage &#8216;DSS Service 2.0&#8242;) erstellt hat, sollte man als erstes unter Einstellungen den Referenz Pfad zum MRDS bin Ordner hinzuf&#252;gen und alle eigenen Projekte in einem neu erstellten Verzeichnis im MRDS Root Ordner ablegen. Bei Visual Studio Express kann man dan Pfad erst angeben, wenn man das Projekt speichert.</p>
<p><img class="alignnone size-full wp-image-105" title="projectpath" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/02/projectpath.jpg" alt="projectpath" width="563" height="386" /><span id="__caret">_</span></p>
<p>2. Man mu&#223; noch einige Referenzen (rechter Mausklick auf &#8216;References&#8217; im Solution Explorer) von Hand dem Projekt hinzuf&#252;gen, damit es sich korrekt &#252;bersetzen l&#228;&#223;t. Das folgende Bild zeigt dies:</p>
<p><img class="alignnone size-full wp-image-104" title="references" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/02/references.jpg" alt="references" width="371" height="407" /></p>
<p>Am Programmcode selbst wurden nur einige kleinere &#196;nderungen gemacht, damit das 3D-Modell des RobotNo1 den Boe-Bot ersetzt. Da der Simulator eine Physik Engine (Ageia PhysX) besitzt, m&#252;ssen im Programm zudem die physikalischen Gr&#246;&#223;en (Gewicht, Abmessungen, Postition der Antriebsr&#228;der und des St&#252;tzrades) an das eigene Modell angepasst werden.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">MASS <span style="color: #008000;">=</span> 0.454f<span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//in kilograms  (around 1 pound)</span>
<span style="color: #008080; font-style: italic;">// the default settings approximate the BoeBot chassis</span>
CHASSIS_DIMENSIONS <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Vector3<span style="color: #000000;">&#40;</span>0.10f, <span style="color: #008080; font-style: italic;">//meters wide</span>
0.05f,  <span style="color: #008080; font-style: italic;">//meters high</span>
0.16f<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//meters long</span>
FRONT_WHEEL_MASS <span style="color: #008000;">=</span> 0.01f<span style="color: #008000;">;</span>
CHASSIS_CLEARANCE <span style="color: #008000;">=</span> 0.020f<span style="color: #008000;">;</span>
FRONT_WHEEL_RADIUS <span style="color: #008000;">=</span> 0.034f<span style="color: #008000;">;</span>
CASTER_WHEEL_RADIUS <span style="color: #008000;">=</span> 0.010f<span style="color: #008000;">;</span>
FRONT_WHEEL_WIDTH <span style="color: #008000;">=</span> 0.007f<span style="color: #008000;">;</span>
CASTER_WHEEL_WIDTH <span style="color: #008000;">=</span> 0.008f<span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">//not currently used, but dim is accurate</span>
FRONT_AXLE_DEPTH_OFFSET <span style="color: #008000;">=</span> <span style="color: #008000;">-</span>0.02f<span style="color: #008000;">;</span> <span style="color: #008080; font-style: italic;">// distance of the axle from the center of robot</span>
&nbsp;
<span style="color: #0600FF;">base</span>.<span style="color: #0000FF;">State</span>.<span style="color: #0000FF;">Name</span> <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;RobotNo1&quot;</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">base</span>.<span style="color: #0000FF;">State</span>.<span style="color: #0000FF;">MassDensity</span>.<span style="color: #0000FF;">Mass</span> <span style="color: #008000;">=</span> MASS<span style="color: #008000;">;</span>
<span style="color: #0600FF;">base</span>.<span style="color: #0000FF;">State</span>.<span style="color: #0000FF;">Pose</span>.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">=</span> initialPos<span style="color: #008000;">;</span>
<span style="color: #0600FF;">base</span>.<span style="color: #0000FF;">State</span>.<span style="color: #0000FF;">Assets</span>.<span style="color: #0000FF;">Mesh</span> <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;RobotNo1Chassis.bos&quot;</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">base</span>.<span style="color: #0000FF;">WheelMesh</span> <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;RobotNo1Wheel.bos&quot;</span><span style="color: #008000;">;</span></pre></div></div>

<h3>Visual Studio und VSE</h3>
<p>Danach kann man das Programm im VisualStudio neu &#252;bersetzt und falls keine Fehler entdeckt wurden, gestartet werden. Nach einer kleinen Weile erscheinen dann zun&#228;chst die DSS Host Console, dann das Simple Dashboard und schlie&#223;lich die Simulation (VSE Visual Simulation Environment) selbst. Dort sollte dann unser Modell und ein W&#252;rfel erscheinen. Mit der Maus und den Cursor Tasten der Tastatur kann man die Position der Kamera ver&#228;ndern. Die Darstellung des Modells kann man im Men&#252;punkt &#8216;Render&#8217; umschalten zwischen:</p>
<ul>
<li>&#8216;Visual&#8217; di f&#252;r uns Menschen normale Sichtweise mit Textturen Licht und Schatten</li>
<li>&#8216;WireFrame&#8217;, die Darstellung der Modelle als Drahtgitter</li>
<li>&#8216;Physics&#8217;, so, wie es der Computer sieht. Simple K&#246;rper mit Masse und Schwerpunkt</li>
<li>&#8216;Combined. Die Kombination zwischen Visual und Physics. Damit kann man kontrollieren, wie genau das gezeichnete Modell mit den Einstellungen im Programm &#252;bereinstimmt.</li>
</ul>
<p><a href="http://www.flickr.com/photos/hmblgrmpf/3288812894/" class="flickr-image alignnone" title="RobotNo1 im VSE"><img src="http://farm4.static.flickr.com/3344/3288812894_661481a6ff.jpg" alt="RobotNo1 im VSE" /></a></p>
<h3>Dashboard</h3>
<p>Steuern l&#228;&#223;t sich unser Modell &#252;ber das Dashboard. Dazu mu&#223; man:</p>
<ul>
<li>Verbindung zum VSE aufnehmen durch Eingabe von &#8217;50001&#8242; im Port Editierfeld.</li>
<li>Doppelklick auf den Service &#8216;[SimulatedRobotNo1]&#8230;&#8217;</li>
<li>Klick auf &#8216;Drive&#8217;</li>
<li>jetzt sollte sich der Roboter durch klicken und Ziehen an der Kugel in alle Richtungen bewegen lassen</li>
</ul>
<p>Alle Dashboard Einstellungen nochmal im Bild:</p>
<p><a href="http://www.flickr.com/photos/hmblgrmpf/3287996883/" class="flickr-image alignnone" title="MRDS Dashboard"><img src="http://farm4.static.flickr.com/3383/3287996883_7a5b7cdd9a.jpg" alt="MRDS Dashboard" /></a></p>
<p>auch ein virtueller Asuro tummelt sich bereits im MRDS Simulator.</p>
<p><a href="http://www.flickr.com/photos/hmblgrmpf/3287995647/" class="flickr-image alignnone" title="Asuro im VSE"><img src="http://farm4.static.flickr.com/3265/3287995647_56bf3b7c1b.jpg" alt="Asuro im VSE" /></a></p>
<p>das vollst&#228;ndige Projekt gibt es <a href="http://robotfreak.googlecode.com/files/RobotFreak.zip" class="lizip">hier</a> zum download. Das .zip Archiv wird einfach in den MRDS Ordner entpackt. Im Unterordner RobotFreak gibt es die beiden Projekte SimulatedAsuro und SimulatedRobotNo1. Bevor man selbst versucht, die Projekte zu &#252;bersetzen, mu&#223; das &#8216;setup.cmd&#8217; Script vom DSS Command Prompt gestartet werden. Damit werden die absoluten Pfadangaben in den Projekten an die lokalen Einstellungen angepasst.</p>
<h2>Wie geht es weiter?</h2>
<p>Zun&#228;chst werde ich mich n&#228;her mit der visuellen Programmiersprache VPL befassen. Das verspricht doch schnellere Erfolge, anstelle den virtuellen Roboter in C# zu coden.  Mit VPL lassen sich recht einfach Roboter Verhaltensprogramme realisieren.</p>
<p>Derzeit sind die Modelle noch blind wie die Maulw&#252;rfe, d.h. sie verf&#252;gen noch nicht &#252;ber irgendwelche Sensoren. Die m&#252;ssen ebenso simuliert werden, damit der Roboter nicht st&#228;ndig gegen irgendwelche virtuellen Hindernisse st&#246;sst. <img src='http://www.robotfreak.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Das Endziel wird ein selbst gebauter Roboter sein, der sich &#252;ber MRDS steuern l&#228;&#223;t. Dazu mu&#223; auf dem Roboter selbst kein Windows laufen. Allerdings funktioniert so ein Roboter nur dann, wenn ein Windows PC mitl&#228;uft. Denn nur auf dem Windows PC l&#228;uft das eigentliche Steuerprogramm.</p>
<h2>Weblinks</h2>
<ul>
<li><a href="http://msdn.microsoft.com/de-de/magazine/cc546547.aspx" class="liexternal">MRDS Simulator Tutorial von Sara Morgan</a></li>
<li><a href="http://robotfreak.googlecode.com/files/RobotFreak.zip" class="lizip">C# Projekte und SketchUp Files f&#252;r dieses Tutorials</a></li>
<li><a href="http://www.promrds.com" class="liexternal">ProMRDS </a>- das Standard Buch zum MRDS. Viele Tutorials und Programmierbeispiele online verf&#252;gbar</li>
<li><a href="http://social.msdn.microsoft.com/Forums/en-US/category/robotics/" class="liexternal">Microsoft Robotik Forum</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.robotfreak.de/blog/robotik/3d-roboter-modelle-in-microsoft-rds-importieren/82/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google SketchUp Robotik Tutorial</title>
		<link>http://www.robotfreak.de/blog/robotik/google-sketchup-robotik-tutorial/52</link>
		<comments>http://www.robotfreak.de/blog/robotik/google-sketchup-robotik-tutorial/52#comments</comments>
		<pubDate>Tue, 27 Jan 2009 22:22:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Robotik]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Google SketchUp]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.robotfreak.de/blog/?p=52</guid>
		<description><![CDATA[Google SketchUp ist ein 3D Zeichenprogramm, das eigentlich f&#252;r Architektur Zwecke bestimmt ist  (z.B. f&#252;r die 3D-Geb&#228;ude von Google Earth). Man kann damit aber auch recht einfach Roboter Modelle zeichnen. Die Bedienung ist kinderleicht im Gegensatz zu manch  anderen Programmen wie. z.B. Blender. Die Standard Version von SketchUp kann kostenlos verwendet werden. Die Vorteile gegen&#252;ber [...]]]></description>
			<content:encoded><![CDATA[<p>Google SketchUp ist ein 3D Zeichenprogramm, das eigentlich f&#252;r Architektur Zwecke bestimmt ist  (z.B. f&#252;r die 3D-Geb&#228;ude von Google Earth). Man kann damit aber auch recht einfach Roboter Modelle zeichnen. Die Bedienung ist kinderleicht im Gegensatz zu manch  anderen Programmen wie. z.B. <a href="http://www.blender.org" class="liexternal">Blender</a>. Die Standard Version von SketchUp kann kostenlos verwendet werden. Die Vorteile gegen&#252;ber der kostenpflichtigen SketchUpPro Version k&#246;nnen dabei vernachl&#228;ssigt werden.</p>
<p><img class="alignnone size-full wp-image-69" title="differentialrobot2" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/01/differentialrobot2.jpg" alt="differentialrobot2" width="512" height="296" /></p>
<p><span id="more-52"></span></p>
<h2>Einf&#252;hrung</h2>
<p>Dieses Tutorial bezieht sich auf die deutsche Google SketchUp Version 6 f&#252;r Windows.  SketchUp oder auch kurz SU genannt gibt es zum Download unter <a href="http://sketchup.google.com/intl/de/" title="sketchup.google.com" class="liexternal">http://sketchup.google.com/intl/de/</a>. Neben der Windows Version gibt es auch eine Version f&#252;r Mac OS-X (10.4+). F&#252;r die ersten Schritte mit SU sind die <a href="http://sketchup.google.com/intl/de/training/videos.html" class="liexternal">Einf&#252;hrungs Videos</a> sehr zu empfehlen.  Dort sieht man, wie einfach es ist mit SU zu arbeiten und selbst kompliziert aussehende Formen im Handumdrehen zu erzeugen. Naja, ganz so einfach ist es zu Anfang sicher nicht aber &#220;bung macht den Meister. Als Grundeinstellung empfiehlt es sich, die Modelleinheiten gleich nach der Installation auf Dezimal in Millimeter umzustellen. Des weiteren ist zu empfehlen, unter dem Men&#252;punkt <code>Ansicht | Symbolleisten</code>, den gro&#223;en Funktionssatz einzuschalten.</p>
<h2>Komponenten</h2>
<p>Google SketchUp bietet die M&#246;glichkeit zum Erstellen von Komponenten. Komponenten sind Gruppierungen von Formen, die man als einzelne Datei speichern kann. Man kann sich so nach und nach eine Bibliothek von Bauteilen anlegen kann, die man dann in verschiedenen Projekten immer wieder verwenden kann. So f&#228;ngt man am besten auch beim Entwurf eines neuen Roboter Modells an, man beginnt Komponenten zu entwerfen. F&#252;r jedes Einzelteil eines Roboters eine Komponente, so z.B. f&#252;r die R&#228;der, Motoren, Chassis usw.</p>
<p><img class="alignnone size-thumbnail wp-image-70" title="motor-gm9" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/01/motor-gm9-150x150.jpg" alt="motor-gm9" width="150" height="150" /> <img class="alignnone size-thumbnail wp-image-71" title="encoderwheel" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/01/encoderwheel-150x150.jpg" alt="encoderwheel" width="150" height="150" /></p>
<h2>Ma&#223;stabstreu zeichnen</h2>
<p>Mit Google SketchUp kann man auch ma&#223;stabsgetreu zeichnen. Dazu sollte man am besten bereits w&#228;hrend der Installation von SketchUp den Default Ma&#223;stab von Architektur in Zoll auf Dezimal in Millimeter &#228;ndern. Ansonsten kann man dies auch jederzeit beim Entwurf im Hauptmen&#252; unter <code>Fenster | Modellinformationen | Einheiten</code> &#228;ndern. Beim Zeichnen einer Form (Rechtkreis, Kreis, Vieleck oder Linie) gibt man einfach den gew&#252;nschten  Wert und die Einheit mm an und dr&#252;ckt die Enter Taste. Schon springt die Form auf die gew&#252;nschte Gr&#246;&#223;e. Das Funktioniert auch bei vielen anderen Werkzeugen. Beim Zeichnen der ersten Form wird man sich vielleicht wundern, dass die Form so klein dargestellt wird. Aber das ist kein Problem. Einfach auf da Gesamtgr&#246;&#223;e aufzoomen <img class="alignnone size-full wp-image-67" title="zoom-gesamt1" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/01/zoom-gesamt1.jpg" alt="zoom-gesamt1" width="31" height="29" /> Icon geklickt, schon sieht man die Form in voller Gr&#246;&#223;e. Von Vorteil ist auch eine Maus mit Scrollrad, damit kann man jederzeit auf- bzw. abzoomen.</p>
<p>Zum ma&#223;genauen Zeichnen von Rechtecken klickt man auf das Rechteck Symbol <img class="alignnone size-full wp-image-59" title="rechteck" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/01/rechteck.jpg" alt="rechteck" width="28" height="31" /> gibt man die L&#228;nge und Breite des Rechtecks ein mit einem Semikolon ein. z.B. <code>50mm;80mm</code> gefolgt von der ENTER-Taste.<br />
F&#252;r Kreise klickt man auf das Kreis Symbol <img class="alignnone size-full wp-image-60" title="kreis" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/01/kreis.jpg" alt="kreis" width="27" height="30" /> gibt man den Radius ein. z.B. <code>1,5mm</code> gefolgt von der ENTER-Taste.<br />
F&#252;r Vielecke gibt man dem Klick auf das Vieleck Symbol <img class="alignnone size-full wp-image-58" title="vieleck" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/01/vieleck.jpg" alt="vieleck" width="27" height="29" /> die Anzahl der Ecken ein und dr&#252;ckt die ENTER Taste, danach positioniert man das Vieleck und kann dann den Radius eingeben.</p>
<p>Die Vorteile eines ma&#223;stabsgetreuen Modell liegen auf der Hand.</p>
<ul>
<li>Alle Komponenten passen ohne umst&#228;ndliche Skalierung sofort zusammen.</li>
<li>Man kann genaue Ausdrucke z.B. des Chassis machen und diese als Vorlage zum Bohren und Zus&#228;gen des Chassis verwenden.</li>
<li>Austausch von Komponenten mit anderen SketchUp Usern wird erleichtert</li>
<li>Die &#220;bernahme in andere 3D Programme funktioniert einfacher</li>
</ul>
<h2>Ma&#223;band</h2>
<p>Das Ma&#223;band  <img class="alignnone size-full wp-image-54" title="massband" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/01/massband.jpg" alt="massband" width="27" height="32" /> ist ein sehr hilfreiches Werkzeug. Zum einen kann man damit beliebige Abst&#228;nde innerhalb des Modells messen und bekommt den  genauen Wert in der Statusbar angezeigt. Zum anderen lassen sich damit auch Hilfslinien zeichnen, um z.B. die genaue Position einer Bohrung in einer Form festzulegen. Werden die Hilfslinien nicht mehr ben&#246;tigt, k&#246;nnen diese mit einem Klick auf <code>Bearbeiten | F&#252;hrungslinien l&#246;schen</code> gel&#246;scht werden.</p>
<h2>Drucken</h2>
<p>Was n&#252;tzt einem eine ma&#223;stabsgetreue Zeichnung, wenn man diese nicht auch ma&#223;stabsgetreu ausdrucken kann. Das klappt auch unter SU, allerdings muss man schon wissen wie. Zum Druck z.B. einer Bohrschablone f&#252;r das Chassis muss man dazu zun&#228;chst vor&#252;bergehend unter dem Men&#252;punkt Kamera  von Perspektive auf Parallele Projektion umschalten. Man will ja keine 3D Ansicht ausdrucken sondern eine 2D Draufsicht. Dann sollte man auf Gesamtgr&#246;&#223;e aufzoomen <img class="alignnone size-full wp-image-61" title="zoom-gesamt" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/01/zoom-gesamt.jpg" alt="zoom-gesamt" width="31" height="29" /> (der Ausdruck richtet sich n&#228;mlich nach der Ansicht). Dann &#246;ffnet man den Druck Dialog, entfernt den Haken vor <code>Druckformat | An Seite anpassen</code> und vor <code>Modell Erweiterungen verwenden</code> und stellt die Skalierung <code>in SketchUp</code> und <code>in der Ausgabe</code> jeweils auf 10 mm.<br />
<img class="alignnone size-full wp-image-55" title="druckeinstellungen1" src="http://www.robotfreak.de/blog/wp-content/uploads/2009/01/druckeinstellungen1.jpg" alt="druckeinstellungen1" width="458" height="266" /></p>
<h2>Exportieren</h2>
<p>Die kostenlose Version von Google SketchUp erlaubt nur das Speichern im SketchUp internen Format .skp . Als Export in andere 3D Formate wird das Google Earth Format  .kmz angeboten. Das .kmz ist im Prinzip nichts anderes als gezipptes File im Collada Format. Wenn man das .kmz File in ein .zip File umbenennt kann man das Archiv &#246;ffnen und sieht die Einzel Files, aus denen es besteht.</p>
<p>&#220;ber die Import Funktion von Blender kann man Collada Files lesen (Collada V1.4) und z.B. in das .obj Format von Wavefront exportieren. Damit lie&#223;en sich die Roboter Modelle auch mit dem Microsoft Robotics Developer Studio MRDS verwenden. MRDS kann das .obf Format in das eigene .bos Format konvertieren. Damit k&#246;nnte man dann seinen virtuellen Roboter im MRDS Simulator testen. Aber das ist ein Thema f&#252;r ein weiteres Tutorial.</p>
<h2>3D-Warehouse</h2>
<p>Mit dem <a href="http://sketchup.google.com/3dwarehouse/" class="liexternal">3D-Warehouse</a> f&#252;r Google SketchUp steht eine riesige Online Bibliothek zur Verf&#252;gung. Viele User benutzen das 3D-Warehouse, um dort ihre Modelle hochzuladen und sie damit anderen Usern zur Verf&#252;gung zu stellen. Mit der gewohnten Google Suche findet man schnell die ein oder andere Komponente, die man gerade braucht. Auch ich habe dort meine <a href="http://sketchup.google.com/3dwarehouse/cldetails?mid=ba4e42ef4db63088c048bd5374389c59" class="liexternal">Roboter Kollektion</a> abgelegt.</p>
<h2>Weblinks</h2>
<ul>
<li><a href="http://sketchup.google.com/intl/de/" title="sketchup.google.com" class="liexternal">http://sketchup.google.com/intl/de/</a></li>
<li><a href="http://sketchup.google.com/3dwarehouse" title="SketchUp 3D Warehaouse" class="liexternal">http://sketchup.google.com/3dwarehouse</a></li>
<li><a href="http://sketchup.google.com/3dwarehouse/cldetails?mid=ba4e42ef4db63088c048bd5374389c59" class="liexternal">Meine Robotik Modelle und Komponenten</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.robotfreak.de/blog/robotik/google-sketchup-robotik-tutorial/52/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
