<?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>Siggi&#039;s Projects</title>
	<atom:link href="http://siggiorn.com/?feed=rss2&#038;p=128" rel="self" type="application/rss+xml" />
	<link>http://siggiorn.com</link>
	<description>A collection of past and present projects - robots, electronics and software</description>
	<lastBuildDate>Tue, 27 Sep 2011 03:05:20 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4-beta3-20647</generator>
		<item>
		<title>Arduino &#8211; Buffered, Non-Blocking Serial Packet Manager</title>
		<link>http://siggiorn.com/?p=470</link>
		<comments>http://siggiorn.com/?p=470#comments</comments>
		<pubDate>Thu, 02 Sep 2010 18:21:35 +0000</pubDate>
		<dc:creator>Siggi</dc:creator>
				<category><![CDATA[Arduino Libraries]]></category>

		<guid isPermaLink="false">http://siggiorn.com/?p=470</guid>
		<description><![CDATA[As I have been playing with the Arduino hardware platform, I have become more and more convinced of its usefulness. I generally appreciate all efforts to standardize in hardware and am excited about the large community this platform has received. I quickly realized that were I to use this for my projects I would need [...]]]></description>
			<content:encoded><![CDATA[<p>As I have been playing with the Arduino hardware platform, I have  become more and more convinced of its usefulness. I generally appreciate  all efforts to standardize in hardware and am excited about the large  community this platform has received.</p>
<p>I quickly realized that were I to use this for my projects I would  need an efficient storage of bytes that I couldn&#8217;t find in the community  libraries as well as a buffered serial write which also hadn&#8217;t been  implemented to my knowledge. I created these libraries and decided to  share them here if anyone would be interested in using them.</p>
<p>These are the properties of the SerialManager library:</p>
<ul>
<li>Provides a buffered write method that I have not yet found in other libraries (processor can work on other things while serial port pushes out a packet of data)</li>
<li>Provides a built in checksum calculation which can reduce errors in transmission and can be tedious to manage</li>
<li>Provides built-in packet header search and hides it in the library code so the user code becomes more readable (can be disabled for sending raw packets)</li>
</ul>
<h2>Example usage</h2>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &amp;lt;SerialManager.h&amp;gt;</span>
<span style="color: #339933;">#include &amp;lt;ByteBuffer.h&amp;gt;</span>
&nbsp;
SerialManager serial <span style="color: #339933;">=</span> SerialManager<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">256</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">256</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
ByteBuffer send_buffer<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">int</span> SEND_MODE <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">// initialize the serial communication:</span>
  serial.<span style="color: #202020;">init</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">9600</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  serial.<span style="color: #202020;">setPacketHandler</span><span style="color: #009900;">&#40;</span>handlePacket<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Initialize the send buffer that we will use to send data</span>
  send_buffer.<span style="color: #202020;">init</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">30</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> loop<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  serial.<span style="color: #202020;">update</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// If we are not busy sending then lets send something</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span>serial.<span style="color: #202020;">isBusySending</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// Send some dummy data</span>
    send_buffer.<span style="color: #202020;">clear</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    send_buffer.<span style="color: #202020;">put</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">17</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    send_buffer.<span style="color: #202020;">putInt</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">300</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    send_buffer.<span style="color: #202020;">putLong</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">-</span><span style="color: #0000dd;">100000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    send_buffer.<span style="color: #202020;">putFloat</span><span style="color: #009900;">&#40;</span><span style="color:#800080;">3.14</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    
&nbsp;
    <span style="color: #666666; font-style: italic;">// We can either send a packet with a header and checksum (niiice)</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>SEND_MODE <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span>
      serial.<span style="color: #202020;">sendSerialPacket</span><span style="color: #009900;">&#40;</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>send_buffer <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// Or if we are sending to say a device that uses a custom protocol,</span>
    <span style="color: #666666; font-style: italic;">// we can send a raw byte buffer to it</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>SEND_MODE <span style="color: #339933;">==</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
      serial.<span style="color: #202020;">sendRawSerial</span><span style="color: #009900;">&#40;</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>send_buffer <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// Or if we just want to simply send one byte we can do that,</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>SEND_MODE <span style="color: #339933;">==</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span>
      serial.<span style="color: #202020;">sendSerialByte</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">16</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> handlePacket<span style="color: #009900;">&#40;</span>ByteBuffer<span style="color: #339933;">*</span> packet<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">// Here we could do anything we want to the data but for now we will just send it back</span>
  send_buffer.<span style="color: #202020;">clear</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span> packet<span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>getSize<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000dd;">0</span> <span style="color: #009900;">&#41;</span>
    send_buffer.<span style="color: #202020;">put</span><span style="color: #009900;">&#40;</span> packet<span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>get<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  serial.<span style="color: #202020;">sendSerialPacket</span><span style="color: #009900;">&#40;</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>send_buffer <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<h2>Download Library</h2>
<p><a href="http://siggiorn.com/wp-content/uploads/libraries/ArduinoSerialManager.zip">ArduinoSerialManager.zip</a></p>
<p>Depends also on this library:<br />
<a href="http://siggiorn.com/?p=460">ByteBuffer</a></p>
]]></content:encoded>
			<wfw:commentRss>http://siggiorn.com/?feed=rss2&#038;p=470</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Arduino &#8211; Circular Byte Buffer</title>
		<link>http://siggiorn.com/?p=460</link>
		<comments>http://siggiorn.com/?p=460#comments</comments>
		<pubDate>Thu, 02 Sep 2010 18:07:35 +0000</pubDate>
		<dc:creator>Siggi</dc:creator>
				<category><![CDATA[Arduino Libraries]]></category>

		<guid isPermaLink="false">http://siggiorn.com/?p=460</guid>
		<description><![CDATA[As I have been playing with the Arduino hardware platform, I have become more and more convinced of its usefulness. I generally appreciate all efforts to standardize in hardware and am excited about the large community this platform has received. I quickly realized that were I to use this for my projects I would need [...]]]></description>
			<content:encoded><![CDATA[<p>As I have been playing with the Arduino hardware platform, I have become more and more convinced of its usefulness. I generally appreciate all efforts to standardize in hardware and am excited about the large community this platform has received.</p>
<p>I quickly realized that were I to use this for my projects I would need an efficient storage of bytes that I couldn&#8217;t find in the community libraries as well as a buffered serial write which also hadn&#8217;t been implemented to my knowledge. I created these libraries and decided to share them here if anyone would be interested in using them.</p>
<p>These are the properties of the ByteBuffer library:</p>
<ul>
<li>Provides an efficient storage of bytes in a circular bytebuffer (stored as an array)</li>
<li>Provides access to data from the head and tail of the buffer (get() and getFromBack(), putInt() and putIntInFront() etc.)</li>
<li>Provides a nice way of converting bytes into larger datatypes, example: put(b1); put(b2); put(b3); put(b4); long data = getLong();</li>
<li>Convenient method to have a one process write values to the end of a buffer and have another process handle bytes from the beginning of the buffer whenever it gets around to it</li>
</ul>
<h2>Example usage</h2>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &amp;lt;ByteBuffer.h&amp;gt;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/*
  Silly program that emulates buffered processing
  using a circular bytebuffer
 */</span>
&nbsp;
ByteBuffer buffer<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">// Initialize the buffer with a capacity for 256 bytes</span>
  buffer.<span style="color: #202020;">init</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">256</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Init serial just to debug</span>
  Serial.<span style="color: #202020;">begin</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">9600</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> cnt <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #993333;">void</span> loop<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  cnt<span style="color: #339933;">++;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Every 100th update</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> cnt<span style="color: #339933;">%</span><span style="color:#800080;">100</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    buffer.<span style="color: #202020;">clear</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    buffer.<span style="color: #202020;">put</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">200</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>					<span style="color: #666666; font-style: italic;">// Put one byte at end</span>
    buffer.<span style="color: #202020;">putInt</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">2000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>				<span style="color: #666666; font-style: italic;">// Put one int at end</span>
    buffer.<span style="color: #202020;">putLong</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">20000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>				<span style="color: #666666; font-style: italic;">// Put one long at end</span>
    buffer.<span style="color: #202020;">putFloatInFront</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">200000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>	<span style="color: #666666; font-style: italic;">// Put one float at beginning</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// Every 100th update	(20 updates offset)</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#40;</span>cnt<span style="color: #339933;">+</span><span style="color: #0000dd;">20</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">%</span><span style="color:#800080;">100</span> <span style="color: #339933;">==</span> <span style="color: #0000dd;">0</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    Serial.<span style="color: #202020;">println</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Received following bytes&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span> buffer.<span style="color: #202020;">getSize</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000dd;">0</span> <span style="color: #009900;">&#41;</span>
        Serial.<span style="color: #202020;">println</span><span style="color: #009900;">&#40;</span>buffer.<span style="color: #202020;">get</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> DEC<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    Serial.<span style="color: #202020;">println</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<h2>Download Library</h2>
<p><a href="http://siggiorn.com/wp-content/uploads/libraries/ArduinoByteBuffer.zip">ArduinoByteBuffer.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://siggiorn.com/?feed=rss2&#038;p=460</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>WordPress &#8211; Arras Theme &#8211; Upgrade Arras to 1.4 bug in options.php</title>
		<link>http://siggiorn.com/?p=405</link>
		<comments>http://siggiorn.com/?p=405#comments</comments>
		<pubDate>Sun, 21 Mar 2010 14:23:26 +0000</pubDate>
		<dc:creator>Siggi</dc:creator>
				<category><![CDATA[WordPress blogs]]></category>

		<guid isPermaLink="false">http://siggiorn.com/?p=405</guid>
		<description><![CDATA[Hey everybody So I found the following bug in the Arras Theme while going through the progress of upgrading WordPress from whatever to 3.0 and the Arras Theme from 1.3.5 to 1.4.2. All pages started giving me this warning and unexpected behavior: Warning: unserialize() expects parameter 1 to be string, object given in /var/www/siggis_projects/wp-content/themes/arras-theme_1.4.2/library/admin/options.php on [...]]]></description>
			<content:encoded><![CDATA[<p>Hey everybody</p>
<p>So I found the following bug in the Arras Theme while going through the progress of upgrading WordPress from whatever to 3.0 and the Arras Theme from 1.3.5 to 1.4.2.</p>
<p>All pages started giving me this warning and unexpected behavior:</p>
<p style="padding-left: 30px;"><strong>Warning</strong>:  unserialize() expects parameter 1 to be string, object  given in <strong>/var/www/siggis_projects/wp-content/themes/arras-theme_1.4.2/library/admin/options.php</strong> on line <strong>86</strong></p>
<p>If I take a look at what is in line <strong>86</strong> of <strong>options.php</strong> I see this:</p>
<p style="padding-left: 30px;">$saved_options = unserialize(get_option(&#8216;arras_options&#8217;));</p>
<p>It seems that previously, <strong>get_option()</strong> was returning a serialized object but isn&#8217;t anymore (this is why I prefer strongly typed languages).</p>
<p>The fix is simply to remove the unserialize() function from that line, resulting in this:</p>
<p style="padding-left: 30px;">$saved_options = get_option(&#8216;arras_options&#8217;);</p>
<p>Hope this helps !</p>
]]></content:encoded>
			<wfw:commentRss>http://siggiorn.com/?feed=rss2&#038;p=405</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress – Arras Theme – Randomize order of posts in featured slideshow</title>
		<link>http://siggiorn.com/?p=398</link>
		<comments>http://siggiorn.com/?p=398#comments</comments>
		<pubDate>Sun, 21 Mar 2010 03:25:33 +0000</pubDate>
		<dc:creator>Siggi</dc:creator>
				<category><![CDATA[WordPress blogs]]></category>

		<guid isPermaLink="false">http://siggiorn.com/?p=398</guid>
		<description><![CDATA[Are you tired of seeing the same post always appear first in the &#8220;featured slideshow&#8221; of the Arras theme ? Has the sequence of images in the &#8220;featured slideshow&#8221; of the Arras theme become too familiar ? Then you might want to apply this tweak: find and open home.php under /wp-content/themes/arras-theme find line 30 or [...]]]></description>
			<content:encoded><![CDATA[<p>Are you tired of seeing the same post always appear first in the &#8220;featured slideshow&#8221; of the Arras theme ?</p>
<p>Has the sequence of images in the &#8220;featured slideshow&#8221; of the Arras theme become too familiar ?</p>
<p>Then you might want to apply this tweak:</p>
<ol>
<li>find and open <strong>home.php</strong> under <strong>/wp-content/themes/arras-theme</strong></li>
<li>find line <strong>30</strong> or whatever line contains this text: &#8220;<strong>$q = new WP_Query( apply_filters(&#8216;arras_slideshow_query&#8217;, $query) );</strong>&#8220;</li>
<li>add this statement in the next line: <strong>shuffle($q-&gt;posts);</strong></li>
<li>That&#8217;s it !</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://siggiorn.com/?feed=rss2&#038;p=398</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Flyfire &#8211; A Concept for a Reconfigurable 3D Display</title>
		<link>http://siggiorn.com/?p=370</link>
		<comments>http://siggiorn.com/?p=370#comments</comments>
		<pubDate>Sat, 20 Mar 2010 22:36:21 +0000</pubDate>
		<dc:creator>Siggi</dc:creator>
				<category><![CDATA[Favorite Projects]]></category>
		<category><![CDATA[Slideshow projects]]></category>
		<category><![CDATA[Visualization]]></category>

		<guid isPermaLink="false">http://siggiorn.com/?p=370</guid>
		<description><![CDATA[This project focused on visualizing a concept for a futuristic display technology, one where the display doesn&#8217;t have a constrained physical dimension or static configuration. If we had the technology to &#8220;liberate each pixel&#8221; both in time and space we could possibly revolutionize the entertainment industry with the added possibilities in rendering and manipulating the [...]]]></description>
			<content:encoded><![CDATA[<p>This project focused on visualizing a concept for a futuristic display technology, one where the display doesn&#8217;t have a constrained physical dimension or static configuration. If we had the technology to &#8220;liberate each pixel&#8221; both in time and space we could possibly revolutionize the entertainment industry with the added possibilities in rendering and manipulating the display. Imagine the actual display taking the form of the displayed scenery and animating in time, creating a truly three dimensional experience.</p>
<p>The idea is to make a display system composed of a cloud of small radiocontrolled helicopters, each carrying a small lightsource. The ensemble of all of the helicopters with delicate position control and lighting has the possibility to become a totally new and unconstrained display technology.</p>
<p>This is a project that I have been working on with my girlfriend Carnaven. She was the lead designer for the first stage of concept visualization for this project (resulting in the video shown below) for the Senseable City lab at MIT.</p>
<p>Please visit <a href="http://senseable.mit.edu/flyfire/">http://senseable.mit.edu/flyfire/</a> for more details.</p>
<p style="text-align: center;"></p>
<p>The project has currently finished the first design stage and has received some funding to begin physical implementation.</p>
<div id="attachment_376" class="wp-caption aligncenter" style="width: 560px"><a href="http://siggiorn.com/wp-content/uploads/2010/03/Flyfire-TakeOff-small.jpg"><img class="size-full wp-image-376" title="Flyfire-TakeOff-small" src="http://siggiorn.com/wp-content/uploads/2010/03/Flyfire-TakeOff-small.jpg" alt="" width="550" height="413" /></a><p class="wp-caption-text">A screenshot from the video showing the helicopters rising up from the ground and their light creating an illumination effect on the ground surface (image source: http://senseable.mit.edu/flyfire/)</p></div>
<div id="attachment_372" class="wp-caption aligncenter" style="width: 560px"><a href="http://siggiorn.com/wp-content/uploads/2010/03/Flyfire-3Dfaces-small.jpg"><img class="size-full wp-image-372" title="Flyfire-3Dfaces-small" src="http://siggiorn.com/wp-content/uploads/2010/03/Flyfire-3Dfaces-small.jpg" alt="" width="550" height="413" /></a><p class="wp-caption-text">A snapshot of different 3D formations of the pixel cloud (image source: http://senseable.mit.edu/flyfire/)</p></div>
<div id="attachment_373" class="wp-caption aligncenter" style="width: 560px"><a href="http://siggiorn.com/wp-content/uploads/2010/03/Flyfire-Flocking-small.jpg"><img class="size-full wp-image-373" title="Flyfire-Flocking-small" src="http://siggiorn.com/wp-content/uploads/2010/03/Flyfire-Flocking-small.jpg" alt="" width="550" height="413" /></a><p class="wp-caption-text">The pixel cloud can be programmed to exhibit interesting flocking behaviors, simulating animal group behavior (image source: http://senseable.mit.edu/flyfire/)</p></div>
<div id="attachment_374" class="wp-caption aligncenter" style="width: 560px"><a href="http://siggiorn.com/wp-content/uploads/2010/03/Flyfire-FreeForm-small.jpg"><img class="size-full wp-image-374" title="Flyfire-FreeForm-small" src="http://siggiorn.com/wp-content/uploads/2010/03/Flyfire-FreeForm-small.jpg" alt="" width="550" height="413" /></a><p class="wp-caption-text">The pixel cloud can simulate many different surfaces, this is how it is able to portrait a richer experience in for example displaying an outdoors scenery  (image source: http://senseable.mit.edu/flyfire/)</p></div>
<div id="attachment_375" class="wp-caption aligncenter" style="width: 560px"><a href="http://siggiorn.com/wp-content/uploads/2010/03/Flyfire-MonaLisa-small.jpg"><img class="size-full wp-image-375" title="Flyfire-MonaLisa-small" src="http://siggiorn.com/wp-content/uploads/2010/03/Flyfire-MonaLisa-small.jpg" alt="" width="550" height="413" /></a><p class="wp-caption-text">The cloud can be used to render classic 2D images, activating dormant helicopter pixels when it needs more screen real-estate (image source: http://senseable.mit.edu/flyfire/)</p></div>
]]></content:encoded>
			<wfw:commentRss>http://siggiorn.com/?feed=rss2&#038;p=370</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress &#8211; Arras Theme – Limited number of categories shown in header</title>
		<link>http://siggiorn.com/?p=149</link>
		<comments>http://siggiorn.com/?p=149#comments</comments>
		<pubDate>Thu, 06 Aug 2009 00:59:51 +0000</pubDate>
		<dc:creator>Siggi</dc:creator>
				<category><![CDATA[WordPress blogs]]></category>

		<guid isPermaLink="false">http://siggi.scripts.mit.edu/projects/?p=149</guid>
		<description><![CDATA[The nice looking header for the Arras theme provides a sleak dropdown list function for the hierarchy of your categories. When I started adding posts to my site the header list updated accordingly and everybody was happy, until at some point I noticed that the header menu was not updating according to new categories and [...]]]></description>
			<content:encoded><![CDATA[<p>The nice looking header for the Arras theme provides a sleak dropdown list function for the hierarchy of your categories.</p>
<p>When I started adding posts to my site the header list updated accordingly and everybody was happy, until at some point I noticed that the header menu was not updating according to new categories and sub categories that I was creating.</p>
<p>I tried all I could to fix this, thought that my categories had &#8220;bad&#8221; names and tried changing them back and forth.</p>
<p>It wasn&#8217;t until I started looking through the php code backing this theme up that I found the bug. Arras has a &#8220;hardcoded&#8221; maximum number of categories to show in the header menu (I have no idea why, nor why nobody has complained).</p>
<p><strong>Solution:</strong></p>
<ul>
<li>On your server, browse to the folder: <strong>/wp-content/themes/arras-theme</strong></li>
<li>Open the <strong>header.php</strong> file</li>
<li>Browse to line <strong>111 </strong>(that is the line number in my file, it might be different for whatever version you have). It is the line that contains <strong>wp_list_categories(&#8216;number=11&amp;hierarchical=1&amp;orderby=id&amp;hide_empty=1&amp;title_li=&#8217;);</strong></li>
<li>Change the property <strong>number=11 </strong>to anything you want, I chose 111</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://siggiorn.com/?feed=rss2&#038;p=149</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>MDS &#8211; Mobile, Dexterous, Social</title>
		<link>http://siggiorn.com/?p=130</link>
		<comments>http://siggiorn.com/?p=130#comments</comments>
		<pubDate>Wed, 05 Aug 2009 23:13:52 +0000</pubDate>
		<dc:creator>Siggi</dc:creator>
				<category><![CDATA[Favorite Projects]]></category>
		<category><![CDATA[MDS - Nexi]]></category>
		<category><![CDATA[Slideshow projects]]></category>

		<guid isPermaLink="false">http://siggi.scripts.mit.edu/projects/?p=130</guid>
		<description><![CDATA[More material coming soon, in the meantime checkout http://robotic.media.mit.edu/projects/robots/mds/overview/overview.html]]></description>
			<content:encoded><![CDATA[<p>More material coming soon, in the meantime checkout <a href="http://robotic.media.mit.edu/projects/robots/mds/overview/overview.html">http://robotic.media.mit.edu/projects/robots/mds/overview/overview.html</a></p>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://siggiorn.com/?feed=rss2&#038;p=130</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MeBot – A robotic platform for socially embodied telepresence</title>
		<link>http://siggiorn.com/?p=128</link>
		<comments>http://siggiorn.com/?p=128#comments</comments>
		<pubDate>Wed, 05 Aug 2009 23:12:53 +0000</pubDate>
		<dc:creator>Siggi</dc:creator>
				<category><![CDATA[Favorite Projects]]></category>
		<category><![CDATA[MeBot]]></category>
		<category><![CDATA[MS Thesis]]></category>
		<category><![CDATA[Slideshow projects]]></category>

		<guid isPermaLink="false">http://siggi.scripts.mit.edu/projects/?p=128</guid>
		<description><![CDATA[The MeBot is a semi-autonomous robotic avatar that gives a person a richer way to interact remotely with an audience than is allowed with phone and video conferencing. The robot was designed with an emphasis on being able to convey the non-verbal channels of social communication. That is, it is able to communicate some body [...]]]></description>
			<content:encoded><![CDATA[<p>The MeBot  is a semi-autonomous robotic avatar that gives a person a richer way to  interact remotely with an audience than is allowed with phone and video  conferencing. The robot was designed with an emphasis on being able to  convey the non-verbal channels of social communication. That is, it is  able to communicate some body posture, a wide range of head movement and  very expressive hand gestures. It takes advantage of the current  advanced technology in wireless communications and the ever-expanding  capabilities of mobile devices. MeBot is a push toward a future where  remote presence can be achieved easily in a way that saves traveling  time but still achieves the same experience as &#8220;being there&#8221;.</p>
<p></p>
<p>We  conducted an experiment that evaluated how people perceived a  robot-mediated operator differently when they used a static telerobot  versus a physically embodied and expressive telerobot. Results showed  that people felt more psychologically involved and more engaged in the  interaction with their remote partners when they were embodied in a  socially expressive way. People also reported much higher levels of  cooperation both on their own part and their partners as well as a  higher score for enjoyment in the interaction.</p>
<p></p>
<p>This work received a best paper nomination at HRI2010</p>
<p><strong>Related publications:</strong></p>
<ul>
<li>Sigurdur Orn Adalgeirsson. Mebot, a Robotic Platform for Socially  Embodied Telepresence. In Proceedings of the fifth ACM/IEEE  International Conference on Human-Robot Interaction (HRI-10). ACM/IEEE  International, 2010. <strong>[Best paper nomination]</strong><a href="http://robotic.media.mit.edu/pdfs/conferences/Adalgeirsson-HRI2010.pdf"><br />
Link</a></li>
</ul>
<p><strong>In printed media:</strong></p>
<ul>
<li>FrankfurterRundschau [March 30th, 2010]<strong><br />
</strong></li>
</ul>
<p><strong>In on-line media:</strong></p>
<ul>
<li>Engadget &#8211; <a href="http://www.engadget.com/2010/03/01/mits-mebot-makes-telerobotics-fun-again/">MIT&#8217;s MeBot makes telerobotics fun again</a></li>
<li>BotJunkie &#8211; <a href="http://www.botjunkie.com/2010/03/03/mebot-brings-intuitive-movement-to-telepresence/">MeBot Brings Intuitive Movement To Telepresence</a></li>
<li>CNET Crave &#8211; <a href="http://news.cnet.com/8301-17938_105-10464974-1.html">Robot avatar MeBot gives you wriggling bug body</a></li>
<li>Hizook &#8211; <a href="http://www.hizook.com/blog/2010/02/28/mebot-affective-teleconferencing-robot-mit-being-presented-hri-2010">MeBot: An Affective Teleconferencing Robot from MIT Being Presented at HRI 2010</a></li>
<li>Coolest Gadgets &#8211; <a href="http://www.coolest-gadgets.com/20100301/mebot-lets-talk-desk/">Mebot lets you talk to the little one on your desk</a></li>
<li>Golem.de &#8211; <a href="http://www.golem.de/showhigh2.php?file=/1003/73674.html&amp;wort[]=mebot">Mebot &#8211; der gestikulierende Telepräsenzroboter</a></li>
<li>DVice &#8211; <a href="http://dvice.com/archives/2010/03/mebot-mits-most.php">MeBot, MIT&#8217;s most expressive telepresence robot yet</a></li>
<li>RobotShop &#8211; <a href="http://www.robotshop.com/blog/mebot-a-telepresence-mini-robot-289">MeBot a telepresence mini robot</a></li>
<li>Hacking the Universe &#8211; <a href="http://www.hackingtheuniverse.com/singularity/robotics/mebot">MeBot</a></li>
<li>Singularity Hub &#8211; <a href="http://singularityhub.com/2010/03/05/mebot-the-telepresence-robot-with-body-language-video/">MeBot, the Telepresence Robot With Body Language</a></li>
<li>Ubergizmo &#8211; <a href="http://www.ubergizmo.com/15/archives/2010/03/mebot_telepresence_robot.html">MeBot telepresence robot</a></li>
<li>Technabob &#8211; <a href="http://technabob.com/2010/03/02/mits-mebot-telepresence-robot/">MIT’s mebot is telepresence at its best?</a></li>
<li>Technovelgy &#8211; <a href="http://www.technovelgy.com/ct/Science-Fiction-News.asp?NewsNum=2812">MeBot Robot Avatar Telepresence</a></li>
<li>Plastic Pals &#8211; <a href="http://www.plasticpals.com/?p=21417">MeBot</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://siggiorn.com/?feed=rss2&#038;p=128</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>MCB Mini – Motor control scheme</title>
		<link>http://siggiorn.com/?p=242</link>
		<comments>http://siggiorn.com/?p=242#comments</comments>
		<pubDate>Wed, 05 Aug 2009 16:59:15 +0000</pubDate>
		<dc:creator>Siggi</dc:creator>
				<category><![CDATA[Favorite Projects]]></category>
		<category><![CDATA[MCB Mini - Motorcontrollers]]></category>
		<category><![CDATA[MeBot]]></category>
		<category><![CDATA[MS Thesis]]></category>
		<category><![CDATA[Slideshow projects]]></category>

		<guid isPermaLink="false">http://siggi.scripts.mit.edu/projects/?p=242</guid>
		<description><![CDATA[A motor control scheme was developed to address the very specific needs and demands of the research robots that are developed and used by the Personal Robots group at the Media Lab. Update: MCBMini V4 is now finished (see header image) and is actively being used for multiple new and old robots within the Personal [...]]]></description>
			<content:encoded><![CDATA[<p>A motor control scheme was developed to address the very specific needs and demands of the research robots that are developed and used by the Personal Robots group at the Media Lab.</p>
<h4>Update:</h4>
<p>MCBMini V4 is now finished (see header image) and is actively being used for multiple new and old robots within the Personal Robots Group. See manual for more specs here: <a href="http://siggiorn.com/wp-content/uploads/mcbmini/MCBMiniV4Manual.pdf">MCBMiniV4Manual.pdf</a></p>
<p>The development of robots that should have the ability to display rich expressiveness as well dexterity and movement in human-like ways requires an advanced motor control scheme that fulfills a certain set of requirements.    A few of the important specifications for motor control of robots that are developed in the Personal Robots group at the Media Lab are listed as follows:</p>
<ul>
<li><strong>High update rate:</strong> For the robot to move in a compelling and human-like way, the behavior system needs to be able to stream updated target positions for the motors at a decent update rate. The motor boards need to be able to dynamically adapt to a rapid stream of changing target positions as well as possibly compensate by interpolation or filtering for slow update rates resulting from communication lag.</li>
<li><strong>High density</strong>: Robots that are intended to display social characteristics usually have rigid constraints on their structure imposed by aesthetics. These constraints usually don&#8217;t leave a lot of extra space for bulky motor controllers. Robots of this type therefore require high density controllers that can control multiple motors while taking up as little space as possible. A distributed architecture might be useful in this regard as it might be hard to fit all of the motor controllers in one big space but there might be smaller spaces available distributed around the robot.</li>
<li><strong>Scalability:</strong> Incremental design is a process of trying out a possible solution to a particular problem and individually evaluating the result through incremental prototyping. This process is particularly useful for designing robots and it requires a scalable motor control system as the number of motors is not a static quantity but can change through the design process. The motor control scheme needs to address this by offering an easy way to add or remove motors.</li>
<li><strong>Safe operation:</strong> Sociable robots are essentially designed to interact with people and therefore need to operate safely. Safety can be interpreted in several different ways, the normal operation of the robot needs to be safe for humans and that involves acceleration and velocity limits for joints as well as monitoring of motor currents and responding in a safe way to unexpected values. All failure modes of the robot need to be safe for humans so that if anything goes wrong, the robot will not cause harm. Lastly these robots are usually expensive machines and difficult to repair so the motor control needs to make sure that the robot doesn&#8217;t do harm to itself.</li>
<li><strong>Transparency:</strong> The design of complicated robotic systems usually involves a great deal of debugging. When implementing and testing out new systems, much of the development time goes into trying to understand the source of possibly erroneous behaviors of the system. It is very important that every stage of the robotic system be as transparent as possible, that is to say that communication of signals can be monitored by the designer at every stage so they can determine the origins of the error.</li>
<li><strong>Minimal wiring:</strong> Sociable robots usually have a very dense network of relatively low-powered motors. These motors are placed in various locations all over the robot and can be hard to access and especially tricky to trace wires to. The motor control scheme must be implemented so that it requires minimal wiring and an easy way to switch motors or boards out if they become unusable through wear-and-tear.</li>
</ul>
<div id="attachment_289" class="wp-caption aligncenter" style="width: 514px"><a href="http://siggiorn.com/wp-content/uploads/2009/08/slave_eagle.png"><img class=" wp-image-289 " title="slave_eagle" src="http://siggiorn.com/wp-content/uploads/2009/08/slave_eagle.png" alt="" width="504" height="200" /></a><p class="wp-caption-text">Composite image of the stack and the board design file (previous version)</p></div>
<p>For the specific needs of the MeBot project, I decided to build motor controllers that were very modular. The system operates in a <em>master/slave</em> mode where there is one central node that arbitrates all communication between the motorserver (a computer that controls the robot) and the actual motor control modules. The modules are all connected to a bus that provides motor power, logic power and data.</p>
<div id="attachment_293" class="wp-caption aligncenter" style="width: 510px"><a href="http://siggiorn.com/wp-content/uploads/2009/08/master_info2.png"><img class="size-full wp-image-293 " title="master_info2" src="/wp-content/uploads/2009/08/master_info2.png" alt="Master board: Arbitrates communication between host application and motor control boards" width="500" height="391" /></a><p class="wp-caption-text">Master board: Arbitrates communication between host application and motor control boards</p></div>
<div id="attachment_292" class="wp-caption aligncenter" style="width: 510px"><a href="http://siggiorn.com/wp-content/uploads/2009/08/slave_info.png"><img class="size-full wp-image-292 " title="slave_info" src="/wp-content/uploads/2009/08/slave_info.png" alt="Slave: Every motor board can control two motors" width="500" height="364" /></a><p class="wp-caption-text">Slave: Every motor board can control two motors</p></div>
<div id="attachment_246" class="wp-caption aligncenter" style="width: 510px"><a href="http://siggiorn.com/wp-content/uploads/2009/08/mcb_overview.jpg"><img class="size-full wp-image-246 " title="mcb_overview" src="/wp-content/uploads/2009/08/mcb_overview.jpg" alt="Shows the communication scheme of the system. On top resides whatever program that wishes to move motors, this program is networked (wired or wireless) with the motorserver which is the computer that is directly connected to the robot. The motorserver communicates with the master board which arbitrates low-level bus traffic and caches all data. On the lowest level are the motor control modules which can control two motors each." width="500" height="419" /></a><p class="wp-caption-text">Shows the communication scheme of the system. On top resides whatever program that wishes to move motors, this program is networked (wired or wireless) with the motorserver which is the computer that is directly connected to the robot. The motorserver communicates with the master board which arbitrates low-level bus traffic and caches all data. On the lowest level are the motor control modules which can control two motors each.</p></div>
<div id="attachment_294" class="wp-caption aligncenter" style="width: 510px"><a href="http://siggiorn.com/wp-content/uploads/2009/08/stack.JPG"><img class="size-full wp-image-294 " title="stack" src="/wp-content/uploads/2009/08/stack.JPG" alt="Multiple slave motorboards can be stacked on top of the master. This assembly has one USB master and two slaves. This stack is controlling two motors but can control four." width="500" height="423" /></a><p class="wp-caption-text">Multiple slave motorboards can be stacked on top of the master. This assembly has one USB master and two slaves. This stack is controlling two motors but can control four.</p></div>
<p><strong>Related publications:</strong></p>
<ul>
<li>Sigurdur Orn Adalgeirsson. Mebot, a Robotic Platform for Socially Embodied Telepresence. Master’s thesis, MIT, 2009.<a href="http://web.media.mit.edu/~siggi/papers/mebot_msthesis.pdf"><br />
Link</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://siggiorn.com/?feed=rss2&#038;p=242</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>LightBoxes – Harvard GSD Exhibition</title>
		<link>http://siggiorn.com/?p=300</link>
		<comments>http://siggiorn.com/?p=300#comments</comments>
		<pubDate>Thu, 15 Jan 2009 20:14:49 +0000</pubDate>
		<dc:creator>Siggi</dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Light Control]]></category>
		<category><![CDATA[Slideshow projects]]></category>

		<guid isPermaLink="false">http://siggi.scripts.mit.edu/projects/?p=300</guid>
		<description><![CDATA[This was a project that I did with friends of mine Simon Kim and Mariana Ibanez. Mariana was the curator for an architecture exhibition at the Harvard GSD and wanted to make the exhibition extra awesome. She went on to design and recruit others to design lightboxes as well as other objects to achieve the [...]]]></description>
			<content:encoded><![CDATA[<p>This was a project that I did with friends of mine Simon Kim and Mariana Ibanez. Mariana was the curator for an architecture exhibition at the Harvard GSD and wanted to make the exhibition extra awesome. She went on to design and recruit others to design lightboxes as well as other objects to achieve the awesomeness. My involvement was to design the circuitry and communications of the boxes as well as implement some intelligent behavior or interactivity for the boxes.</p>
<p style="text-align: center;">
<div id="attachment_306" class="wp-caption aligncenter" style="width: 560px"><a href="http://siggiorn.com/wp-content/uploads/2010/01/LB-06.png"><img class="size-full wp-image-306  " title="LB-06" src="/wp-content/uploads/2010/01/LB-06.png" alt="" width="550" height="413" /></a><p class="wp-caption-text"> </p></div>
<blockquote><p>&#8220;Located at the ground floor of the Graduate School of Design, the exhibition would have to be of sufficient size to transform the large lobby space. The projected opening of September would make this the opening exhibition of the new academic year of fall 2008. The exhibition would also last six weeks, and host a conference.</p>
<p>Working with the designers of the exhibition, the initial idea was to create a series of display cases within which LED arrays would not only provide illumination to its contents, but also demonstrate behaviours that suggest a curatorial path for the viewer. These resultant LightBoxes would be suspended in a larger environment &#8211; a taut, stretched fabric shell with text and images and also lit from behind. The design intent would be an otherwise dark gallery space encompassed by a softly lit shell. Within this wrapped environment would be a field of display cases interacting with the patrons.</p>
<p>For the single LightBox, proximity sensing with ultrasonic transducers was used so that the passing of a patron would activate the LED display, and become brighter as the viewer approached to view its contents. For the collection of LightBoxes, a higher-order intelligence was needed to<br />
suggest connections with other LightBoxes, and therefore generate interest in the viewer to a prescribed, but non-explicit, trajectory. The curator would have several displays share similar qualities but have them ina linear sequence, or have them in another configuration, like a spiral. The viewer may even enter a sequence mid-stream, or one that bifurcates. This requires the LightBoxes to demonstrate a group intelligence, where neighbours and their contents are known.&#8221;</p>
<p style="text-align: right;">Simon Kim</p>
<p style="text-align: center;">
<div id="attachment_307" class="wp-caption aligncenter" style="width: 560px"><a href="http://siggiorn.com/wp-content/uploads/2010/01/lb_double.png"><img class="size-full wp-image-307  " title="lb_double" src="/wp-content/uploads/2010/01/lb_double.png" alt="" width="550" height="221" /></a><p class="wp-caption-text">Shows the mechanical design of the actual lightboxes</p></div>
<div id="attachment_308" class="wp-caption aligncenter" style="width: 560px"><a href="http://siggiorn.com/wp-content/uploads/2010/01/LB-01.png"><img class="size-full wp-image-308  " title="LB-01" src="/wp-content/uploads/2010/01/LB-01.png" alt="" width="550" height="501" /></a><p class="wp-caption-text">The MIT beaver enjoying the spotlight</p></div>
<div id="attachment_309" class="wp-caption aligncenter" style="width: 560px"><a href="http://siggiorn.com/wp-content/uploads/2010/01/LB-04.png"><img class="size-full wp-image-309  " title="LB-04" src="/wp-content/uploads/2010/01/LB-04.png" alt="" width="550" height="459" /></a><p class="wp-caption-text">Each sensor/LED controller board was connected to a bus for power and communications to a central control PC</p></div>
<div id="attachment_310" class="wp-caption aligncenter" style="width: 560px"><a href="http://siggiorn.com/wp-content/uploads/2010/01/lb-system.png"><img class="size-full wp-image-310  " title="lb-system" src="/wp-content/uploads/2010/01/lb-system.png" alt="" width="550" height="222" /></a><p class="wp-caption-text">System diagram for the control scheme</p></div>
<div id="attachment_311" class="wp-caption aligncenter" style="width: 560px"><a href="http://siggiorn.com/wp-content/uploads/2010/01/LB-05.png"><img class="size-full wp-image-311  " title="LB-05" src="/wp-content/uploads/2010/01/LB-05.png" alt="" width="550" height="413" /></a><p class="wp-caption-text">The box in place while structure is being assembled</p></div></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://siggiorn.com/?feed=rss2&#038;p=300</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

