<?xml version="1.0" encoding="utf-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
<title>Blimpbots</title>
<link rel="alternate" type="text/html" href="http://mblog.lib.umich.edu/blimpbots/" />
<modified>2008-04-02T22:37:13Z</modified>
<tagline>Blimpbots development blog</tagline>
<id>tag:mblog.lib.umich.edu,2008:/blimpbots/4052</id>
<generator url="http://www.movabletype.org/" version="3.17">Movable Type</generator>
<copyright>Copyright (c) 2008, jrpowers</copyright>
<entry>
<title>Blimpbots Featured</title>
<link rel="alternate" type="text/html" href="http://mblog.lib.umich.edu/blimpbots/archives/2008/04/blimpbots_featu.html" />
<modified>2008-04-02T22:37:13Z</modified>
<issued>2008-04-02T22:34:28Z</issued>
<id>tag:mblog.lib.umich.edu,2008:/blimpbots/4052.40707</id>
<created>2008-04-02T22:34:28Z</created>
<summary type="text/plain">Sam noticed that Dr. Duderstadt recently included a photo from the Blimpbots demonstration in his new report, &quot;Engineering for a Changing World.&quot; Check it out on page 61 of the PDF (the page numbered &quot;50&quot;)....</summary>
<author>
<name>jrpowers</name>
<url>web page</url>
<email>jrpowers@umich.edu</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mblog.lib.umich.edu/blimpbots/">
<![CDATA[<p>Sam noticed that Dr. Duderstadt recently included a photo from the Blimpbots demonstration in his new report, "Engineering for a Changing World."</p>

<p>Check it out on page 61 of <a href="http://milproj.ummu.umich.edu/publications/EngFlex_report/download/EngFlex%20Report.pdf">the PDF</a> (the page numbered "50").</p>]]>

</content>
</entry>
<entry>
<title>As seen by our computers</title>
<link rel="alternate" type="text/html" href="http://mblog.lib.umich.edu/blimpbots/archives/2007/06/as_seen_by_our.html" />
<modified>2007-09-15T20:46:02Z</modified>
<issued>2007-06-23T00:55:39Z</issued>
<id>tag:mblog.lib.umich.edu,2007:/blimpbots/4052.30767</id>
<created>2007-06-23T00:55:39Z</created>
<summary type="text/plain"> function CreateSilverlight(){ Silverlight.createHostedObjectEx({source: &quot;streaming:/16761/VisionDemo&quot;,parentElement:VisionDemoWrapper});} var VisionDemoWrapper = document.getElementById(&quot;VisionDemoWrapper&quot;);CreateSilverlight(); In this brief video, Patrick and I lead two unpowered blimps around the CSE atrium by means of fishing line. This is one of the test sequences used to test our...</summary>
<author>
<name>jrpowers</name>
<url>web page</url>
<email>jrpowers@umich.edu</email>
</author>
<dc:subject>Announcements</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mblog.lib.umich.edu/blimpbots/">
<![CDATA[<script type="text/javascript" src="http://agappdom.net/h/silverlight.js"></script>
<script type="text/javascript"> function CreateSilverlight(){ Silverlight.createHostedObjectEx({source: "streaming:/16761/VisionDemo",parentElement:VisionDemoWrapper});}</script><div id="VisionDemoWrapper" style="width:99%; height:520px; overflow:hidden;"></div> <script type="text/javascript">var VisionDemoWrapper = document.getElementById("VisionDemoWrapper");CreateSilverlight();</script>

In this brief video, Patrick and I lead two unpowered blimps around the CSE atrium by means of fishing line.  This is one of the test sequences used to test our from-scratch object tracking system.  The markings that you can see on each blimp are placed completely automatically in realtime.  The computers also know how large the object appears relative to several trained examples, and use this to formulate a 3D estimate for each blimp's position.<br/>
<br/>
Use the full-screen button to see a bit more detail.<br/>
<br/>
Alternate video formats: <a href="http://grocs.dmc.dc.umich.edu/~blimpbots/videos/vision_demo.wmv">wmv</a>, <a href="http://grocs.dmc.dc.umich.edu/~blimpbots/videos/vision_demo.mpg">mpg</a>.]]>

</content>
</entry>
<entry>
<title>Up Up and Away!</title>
<link rel="alternate" type="text/html" href="http://mblog.lib.umich.edu/blimpbots/archives/2007/05/up_up_and_away.html" />
<modified>2007-06-23T02:40:54Z</modified>
<issued>2007-06-01T02:44:31Z</issued>
<id>tag:mblog.lib.umich.edu,2007:/blimpbots/4052.30232</id>
<created>2007-06-01T02:44:31Z</created>
<summary type="text/plain">So you want to make yourself a blimp. You&apos;ve got a bunch of fancy electonical gizmos, some motors and propellers and a balloon full of helium. You&apos;re ready to go, right? Not so fast, hotshot. You&apos;re going to need something...</summary>
<author>
<name>rasputin</name>
<url>web page</url>
<email>rasputin@umich.edu</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mblog.lib.umich.edu/blimpbots/">
<![CDATA[<p>So you want to make yourself a blimp.  You've got a bunch of fancy electonical gizmos, some motors and propellers and a balloon full of helium.  You're ready to go, right?  Not so fast, hotshot.  You're going to need something to tie all that stuff together.  That's where the BlimpBot chassis comes in.  Our blimp chassis had to be lightweight, stable, relatively aerodynamic, as well as accomodate batteries, motors, circuit boards and take a bump or two.  Having access to the A&D school's laser cutter, we were able to work through a number of chassis designs in wood and acrylic.  The acrylic designs ended up being heavier than the 1/8" model aircraft plywood we went with.  We finally settled on a design that snapped together like a model airplane and was held together with wood glue.  Mini zip ties held the battery and pcb board on.  A dab of glue and some electrical tape wound around the motor housing secured the motors.  The bumpers were made from carbon fiber strips from the hobby shop, bound with fishing line.  The chassis was taped to the polyurethane blimp bags.  </p>

<p>Below are the graphic files of the layout we used for the laser cutter. The idea was to get as much mileage as possible out of each 12" by 24" piece of plywood!</p>

<p><a href="http://grocs.dmc.dc.umich.edu/~blimpbots/photos/finblimp.jpg"><img src="http://grocs.dmc.dc.umich.edu/~blimpbots/photos/finblimp_sm.jpg"></img></a><br />
<a href="http://grocs.dmc.dc.umich.edu/~blimpbots/photos/finblimp2.jpg"><img src="http://grocs.dmc.dc.umich.edu/~blimpbots/photos/finblimp2_sm.jpg"></img></a></p>]]>

</content>
</entry>
<entry>
<title>Demonstration snapshots</title>
<link rel="alternate" type="text/html" href="http://mblog.lib.umich.edu/blimpbots/archives/2007/05/demonstration_s.html" />
<modified>2007-05-11T22:50:11Z</modified>
<issued>2007-05-11T22:34:13Z</issued>
<id>tag:mblog.lib.umich.edu,2007:/blimpbots/4052.29860</id>
<created>2007-05-11T22:34:13Z</created>
<summary type="text/plain"></summary>
<author>
<name>jrpowers</name>
<url>web page</url>
<email>jrpowers@umich.edu</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mblog.lib.umich.edu/blimpbots/">
<![CDATA[<p><a href="http://grocs.dmc.dc.umich.edu/~blimpbots/photos/demo/"><br />
<img style="float:left; margin-top: 19px;" alt="Demonstration photo" src="http://grocs.dmc.dc.umich.edu/~blimpbots/photos/demo1.jpg"></img><br />
<img style="float:left;" alt="Demonstration photo" src="http://grocs.dmc.dc.umich.edu/~blimpbots/photos/demo3.jpg"></img><br />
<img style="float:left; margin-top: 5px;" alt="Demonstration photo" src="http://grocs.dmc.dc.umich.edu/~blimpbots/photos/demo2.jpg"></img><br />
</a><br />
</p>]]>

</content>
</entry>
<entry>
<title>Give me the code!</title>
<link rel="alternate" type="text/html" href="http://mblog.lib.umich.edu/blimpbots/archives/2007/04/give_me_the_cod.html" />
<modified>2007-04-24T21:45:52Z</modified>
<issued>2007-04-24T21:42:00Z</issued>
<id>tag:mblog.lib.umich.edu,2007:/blimpbots/4052.29531</id>
<created>2007-04-24T21:42:00Z</created>
<summary type="text/plain">We will be making much of our code available at the below URL. General project discussion will still take place on this blog. http://code.google.com/p/blimpbots/...</summary>
<author>
<name>jrpowers</name>
<url>web page</url>
<email>jrpowers@umich.edu</email>
</author>
<dc:subject>Announcements</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mblog.lib.umich.edu/blimpbots/">
<![CDATA[<p>We will be making much of our code available at the below URL.  General project discussion will still take place on this blog.</p>

<p><a href="http://code.google.com/p/blimpbots/">http://code.google.com/p/blimpbots/</a></p>]]>

</content>
</entry>
<entry>
<title>Our finalized circuit board</title>
<link rel="alternate" type="text/html" href="http://mblog.lib.umich.edu/blimpbots/archives/2007/04/our_finalized_c.html" />
<modified>2007-04-24T05:19:31Z</modified>
<issued>2007-04-24T04:34:36Z</issued>
<id>tag:mblog.lib.umich.edu,2007:/blimpbots/4052.29520</id>
<created>2007-04-24T04:34:36Z</created>
<summary type="text/plain"> Early in the project, I decided it would be a good idea to design an entirely new blimp control board, so that we would have a lot more control over what happens onboard each blimp. For projects like this,...</summary>
<author>
<name>jrpowers</name>
<url>web page</url>
<email>jrpowers@umich.edu</email>
</author>
<dc:subject>Development</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mblog.lib.umich.edu/blimpbots/">
<![CDATA[<p><img style="float: left; margin-right: 5px;" src="http://grocs.dmc.dc.umich.edu/~blimpbots/docs/pcb_sm.png" alt="PCB layout"/> Early in the project, I decided it would be a good idea to design an entirely new blimp control board, so that we would have a lot more control over what happens onboard each blimp.  For projects like this, it is definitely good to see whether you can just purchase a canned solution, or if you will have to build it completley from scratch.  Choosing either extreme is probably a bad choice.</p>

<p>With this PCB design and the accompanying firmware that runs on it, we ended up a little more on the "from scratch" end, but now hopefully others can leverage our work.  We used <a href="http://www.expresspcb.com">expressPCB</a> to produce our boards for a very reasonable charge, accompanied with fast delivery.  Our final design is available for <a href="http://grocs.dmc.dc.umich.edu/~blimpbots/docs/blimpbot_v2_final.pcb">download</a>.  You'll need the (free) design software from expressPCB to open and manipulate the designs.  An accompanying <a href="http://grocs.dmc.dc.umich.edu/~blimpbots/docs/blimpbot_v2_final.sch">schematic</a> is also available.</p>

<p>Now, in terms of features, this PCB has a quite a lot packed into a relatively small package:</p>

<ul>
<li>Onboard Microchip PIC18F1330 microcontroller, able to run at 32MHz with its internal oscillator.  Beware of <a href="http://forum.microchip.com/tm.aspx?m=223732">this inaccuracy</a> in the currently-posted PDF manual!</li>
<li>Serial communications with pins designed to mate with the <a href="http://www.sparkfun.com/commerce/product_info.php?products_id=582">Sparkfun BlueSMiRF</a>.  This allows the unit to operate remotely with very low power at a distance of 100 meters!</li>
<li>Speed and direction control for 3 DC motors (400mA).</li>
<li>Motor source voltage is separable from the main battery voltage -- so you can use different batteries to match your motors.  If you don't need this, you just jump the main battery over.</li>
<li>Two mutually-exclusive high-power outputs (400mA).  We use these for two high-intensity LEDs.</li>
<li>0.01V-precise battery voltage sensing down to 3.0V.</li>
<li>Pins designed to mate with an <a href="http://www.sparkfun.com/commerce/product_info.php?products_id=7915">HMC6352 compass.</a></li>
<li>Another pin set alternately compatible with <a href="http://www.sparkfun.com/commerce/product_info.php?products_id=252">this 3-axis accelerometer</a>.</li>
<li>Pin header for In-Circuit-Serial Programming with the <a href="http://www.olimex.com/dev/pic-mcp-usb.html">Olimex PIC-MCP-USB</a> programmer, which is compatible with the Microchip MPLAB.</li>
<li>The whole thing weighs less that 15 grams populated, and measures just under 2.5" x 1.9".</li>
</ul>

<p>Not bad for a first hack at a PCB, right?</p>]]>

</content>
</entry>
<entry>
<title>All good things</title>
<link rel="alternate" type="text/html" href="http://mblog.lib.umich.edu/blimpbots/archives/2007/04/all_good_things.html" />
<modified>2007-04-22T05:03:19Z</modified>
<issued>2007-04-22T04:52:13Z</issued>
<id>tag:mblog.lib.umich.edu,2007:/blimpbots/4052.29482</id>
<created>2007-04-22T04:52:13Z</created>
<summary type="text/plain">On Friday night, before the demonstration, the blimpbots were dancing with new superbright red and blue LEDs.... The demonstration has concluded, and not without a bit of unintended excitement. (More on that soon, with photos and eventually video.) The project...</summary>
<author>
<name>jrpowers</name>
<url>web page</url>
<email>jrpowers@umich.edu</email>
</author>
<dc:subject>Development</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mblog.lib.umich.edu/blimpbots/">
<![CDATA[<p>On Friday night, before the demonstration, the blimpbots were dancing with new superbright red and blue LEDs....<br />
<a href="http://grocs.dmc.dc.umich.edu/~blimpbots/photos/night-before/Blimpbots%20030.jpg"><img src="http://grocs.dmc.dc.umich.edu/~blimpbots/photos/alive_sm.jpg" alt="What the blimps do at night"/></a></p>

<p>The demonstration has concluded, and not without a bit of unintended excitement.  (More on that soon, with photos and eventually video.)  The project has concluded, but the conclusion is a soft one, and we will continue to broadcast blimpbot details here.  Perhaps a flurry of such details as we wrap things up.  All of our designs and much of our software will be available soon.</p>]]>

</content>
</entry>
<entry>
<title>Come see Blimpbots</title>
<link rel="alternate" type="text/html" href="http://mblog.lib.umich.edu/blimpbots/archives/2007/04/come_see_blimpb.html" />
<modified>2007-04-19T15:10:51Z</modified>
<issued>2007-04-19T14:18:58Z</issued>
<id>tag:mblog.lib.umich.edu,2007:/blimpbots/4052.29402</id>
<created>2007-04-19T14:18:58Z</created>
<summary type="text/plain">We are busy preparing for our public demonstration, which will be held this Saturday, April 21, starting between 4:00 and 5:00pm. Our demonstration will be held in the Computer Science &amp; Engineering Building&apos;s central atrium on North Campus. Just walk...</summary>
<author>
<name>jrpowers</name>
<url>web page</url>
<email>jrpowers@umich.edu</email>
</author>
<dc:subject>Announcements</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mblog.lib.umich.edu/blimpbots/">
<![CDATA[<p>We are busy preparing for our public demonstration, which will be held <strong>this Saturday</strong>, April 21, starting between 4:00 and 5:00pm.</p>

<p><img src="http://grocs.dmc.dc.umich.edu/~blimpbots/photos/atrium.jpg" alt="A test flight"/></p>

<p>Our demonstration will be held in the Computer Science & Engineering Building's central atrium on North Campus.  Just walk in and look up!  Prior to our demonstration, the other GROCS projects will be presented in Design Lab 1 in the Duderstadt Center. </p>

<p>More info on that <a href="http://mblog.lib.umich.edu/GROCS/">here</a>.</p>]]>

</content>
</entry>
<entry>
<title>Painting on plastic</title>
<link rel="alternate" type="text/html" href="http://mblog.lib.umich.edu/blimpbots/archives/2007/04/painting_on_pla.html" />
<modified>2007-04-05T05:46:36Z</modified>
<issued>2007-04-05T04:46:41Z</issued>
<id>tag:mblog.lib.umich.edu,2007:/blimpbots/4052.26806</id>
<created>2007-04-05T04:46:41Z</created>
<summary type="text/plain">Painting our new clear polyurethane blimp has been among the many things we&apos;ve been working on in the past few weeks. We tested Krylon engine enamel and Krylon fusion spraypaint on plastic, and neither seemed to work particularly well. We...</summary>
<author>
<name>jrpowers</name>
<url>web page</url>
<email>jrpowers@umich.edu</email>
</author>
<dc:subject>Development</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mblog.lib.umich.edu/blimpbots/">
<![CDATA[<p>Painting our new clear polyurethane blimp has been among the many things we've been working on in the past few weeks.  We tested Krylon engine enamel and Krylon fusion spraypaint on plastic, and neither seemed to work particularly well.  We ended up using fabric paint for the first blimp -- and you can see us applying it in the video below.  Beyond this, there has been much progress on all other aspects, but we will save those details for forthcoming entries.</p>

<p><a href="http://grocs.dmc.dc.umich.edu/~blimpbots/videos/painting.mpg"><img src="http://grocs.dmc.dc.umich.edu/~blimpbots/videos/painting_fr.jpg"/></a></p>]]>

</content>
</entry>
<entry>
<title>Octopart, and &quot;It Just Works&quot;</title>
<link rel="alternate" type="text/html" href="http://mblog.lib.umich.edu/blimpbots/archives/2007/03/octopart_and_it.html" />
<modified>2007-03-06T00:57:05Z</modified>
<issued>2007-03-06T00:29:35Z</issued>
<id>tag:mblog.lib.umich.edu,2007:/blimpbots/4052.23333</id>
<created>2007-03-06T00:29:35Z</created>
<summary type="text/plain">Today I learned of a website called &quot;Octopart,&quot; which is a search engine designed around locating electrical and mechanical parts. This probably would have saved me hours during the Blimpbot component search. For instance, I previously spent at least 30...</summary>
<author>
<name>jrpowers</name>
<url>web page</url>
<email>jrpowers@umich.edu</email>
</author>
<dc:subject>Development</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mblog.lib.umich.edu/blimpbots/">
<![CDATA[<p>Today I learned of a website called "Octopart," which is a search engine designed around locating electrical and mechanical parts.  This probably would have saved me hours during the Blimpbot component search.  For instance, I previously spent at least 30 minutes finding somewhere to buy our main microcontroller, because it was relatively new and not available at all the sellers.  Instead, you can <a href="http://octopart.com/search?q=PIC18F1330">find the product and its availability</a> across all of the major sites in, say, 0.005 seconds, according to the Octopart server.  Pretty cool.</p>

<p>On another note, for software developers in particular, I have been impressed by the "It Just Works" (IJW) C++ unmanaged / C++ managed interoperability in Visual Studio 2005.  Read on if interested.  IJW is the name given to the ability to let unmanaged code access managed objects, and to let managed code seamlessly instantiate and call unmanaged objects.  The upshot of this is that you can avoid expensive copy operations when passing data between the two realms.  This is special to Visual C++, you can't do it with Visual C# or any of the other managed languages.</p>

<p>For the Blimpbots project, we're using a little bit of this to call several unmanaged libraries, including <a href="http://www.intel.com/technology/computing/opencv/">Intel OpenCV</a>, and the <a href="http://www.vision.ee.ethz.ch/~surf/">SURF keypoint detector</a>.  For starters, you can mark any unmanaged code blocks with a <strong>#pragma unmanaged</strong> directive.  Then, within managed C++, you just call the unmanaged libraries as you normally would, as long as you're passing value types.  If you want to pass arrays or reference types, you first use a special <strong>pin_ptr</strong> syntax to tell the garbage collector not to mess with some block of memory temporarily, and then you just call the unmanaged code and pass the pointer.  I'm actually not quite sure how this is accomplished behind the scenes, but, it just works, and has been quite helpful!</p>]]>

</content>
</entry>
<entry>
<title>Design Review</title>
<link rel="alternate" type="text/html" href="http://mblog.lib.umich.edu/blimpbots/archives/2007/03/design_review.html" />
<modified>2007-03-05T18:40:50Z</modified>
<issued>2007-03-05T15:31:30Z</issued>
<id>tag:mblog.lib.umich.edu,2007:/blimpbots/4052.23253</id>
<created>2007-03-05T15:31:30Z</created>
<summary type="text/plain"> Hey Blimpbot fans- I don’t know if you all could tell, but during the past week, we’ve been on spring break. Before we left though, we had a design review with all the other GROCS groups and a few...</summary>
<author>
<name>rasputin</name>
<url>web page</url>
<email>rasputin@umich.edu</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mblog.lib.umich.edu/blimpbots/">
<![CDATA[<p><img src="http://grocs.dmc.dc.umich.edu/~blimpbots/photos/blimp1.JPG"/><br />
Hey Blimpbot fans-</p>

<p>I don’t know if you all could tell, but during the past week, we’ve been on spring break.  Before we left though, we had a design review with all the other GROCS groups and a few interested members of the public.  We gave a simple presentation outlining our project.  Then we ran a relatively successful hover test, where we used a single camera and a computer running SURF to keep the blimp more or less in one spot vertically (We kept it off the ground and the ceiling anyway).  Then we passed out a questionnaire to spur some discussion on the project. Here are some of the suggestions we received from the questions we asked:<br />
</p>]]>
<![CDATA[<p><strong>What behaviors would you like to see in the blimps:</strong></p>

<p>-Predator/Prey- one blimp is chasing the others.   Possibly if the “Predator” blimp “gets” another blimp by getting too close to it, that blimp has to descend to a certain altitude. </p>

<p>-Tag- a variation on Predator/Prey might be “tag,” where the “predator” switches when it gets close enough to another blimp, “tagging” it.  Possibly the blimp’s LED comes on or changes color. </p>

<p>-Herding -another version might be “herding” where one blimp tries to “round up” other blimps that are trying to avoid it.    </p>

<p>-Pack pursuit-  The opposite of herding, multiple blimps pursue one blimp.  An example that kept coming up was of a girl at a club being pursued by a bunch of guys.   (Obviously, some people were already thinking about spring break ;-)  )</p>

<p>-Patrolling behavior- The blimps run a set course, which has the possibility of evolving into Shriner-car-style coordinated movements (figure 8s, clover leafs, etc.)</p>

<p>-Swarm/flock- The blimps obey simple rules for their motion creating a complex and ever-changing pattern of movement  </p>

<p>-Target chasing-  The blimps pursue aerial targets or the blimps react to a target on the floor, be it a specific object, a hat, the beam of a laser pointer or groups of people.   Blimps might cluster around the object or just change their patterns of movement according to the position of the object.   </p>

<p>-Noise chasing- The blimps move to the loudest or quietest point in the room</p>

<p>-Stochastic self assembly- The blimps have to follow 5-10 simple rules</p>

<p>-Voice commands- The blimps react to voice commands</p>

<p>-Scrabble-  The blimps attempt to spell a word or words (using letters painted on the blimp’s side or an LCD/LED display), possibly controlled by some sort of user interface</p>

<p>-Dance-  The blimps create aesthetically pleasing patterns.  This may only be realized in time-lapse video, or it could may be seen by creating an image of the paths of the blimps using the trail of LEDs attached to the blimps might make over the period of say, 40 minutes.</p>

<p>-Follow the leader- The blimps follow a “Lead Blimp”</p>

<p>-Mirror movement- Two sets of blimps mirror each other’s movements.</p>

<p>-Buddy system-  The blimps move in pairs or families.  Or even in trains. </p>

<p>-Collector- A version of Predator/Prey where the “Tagged” blimps have to follow the “Predator”</p>

<p>-Relax mode-  Blimps fly slowly</p>

<p>-Pouty mode- Blimps sulk in corners</p>

<p>-Spin mode- Blimps rotate 360 while maintaining their position</p>

<p>-Zone defense- Blimps defend their “territory” while trying to muscle other blimps around</p>

<p>-Dive bomb-  Blimps climb as high as possible, then descend as quickly as possible (Probably not all that exciting with LTA craft…)</p>

<p>-Docking- Blimps navigate to a pre-determined point</p>

<p>-Disease- Blimps have one color LED displayed.  A “diseased” blimp is introduced displaying a different color LED.  When it gets close enough to a “well” blimp (without actively pursuing it) that blimp’s LED changes color as it gets “diseased”, and is also able to pass on the “infection.” </p>

<p><br />
<strong>Should we focus on allowing users to define behaviors (which may or may not be interesting), or on having more pre-programmed, interesting behaviors.</strong></p>

<p>-There was generous support for interesting pre-programmed behaviors over heavy user interaction, especially if user error could lead to technical problems and the system crashing.   Literally. </p>

<p>-Perhaps you could just control the lead blimp, and the others could follow it using swarming rules</p>

<p>-Perhaps the user could just control which blimp was the “lead” blimp</p>

<p>-Perhaps the user could simply switch the blimps from patrol to swarming behavior, either by flashing a light or making a sound?</p>

<p>-Simple user controls will probably be the most engaging</p>

<p>-It might not matter what the behaviors are as long as they aren’t predictable</p>

<p>-User defined behaviors should have an immediate response, so this likely restricts those behaviors to trivial changes, like the colors of LEDs</p>

<p>-Wagering on the “performance” of individual blimps (I think this might require a Vegas simulcast…)</p>

<p>-A combination of some kind of low-level user control that modifies a pre-programmed behavior.<br />
<strong><br />
What kinds of things could we add to the blimps to make them appear more “lifelike”.</strong><br />
-Why not use them for guerrilla marketing?</p>

<p>-Could the blimps somehow be used to make paintings?  Could they drop paint?</p>

<p>-If they flew very low, it would be easier for people to interact with them.</p>

<p>-Each blimp should have it’s own color</p>

<p>-Each blimp could behave differently, fast/slow, like to fly high, like to fly low</p>

<p>-Making each blimp look different might give them their own identity</p>

<p>-Breaking up the outline of the blimp shape might make them look more interesting</p>

<p>-Use the blimp’s LED to reflect it’s personality and/or emotional state </p>

<p>-Use the blimps to convey a bigger message.</p>

<p>-Use natural materials if possible, and consider things resembling scales, fur, etc</p>

<p>-Aesthetically, the blimp prototype is already very cool.  </p>

<p>-Sorry, I don’t know enough about how “live” blimps behave to comment.</p>

<p>-Names and personas, for each blimp, perhaps displayed on the NET or on posters?  It would be nice to be able to say, “Oh my goodness!  Hank is chasing Bertha!  That rascal.”</p>

<p>-Eyes could reflect different personalities (LEDS?)</p>

<p>-Could they make different sounds?</p>

<p>-Their shape evokes fish…</p>

<p>-Reaction to the environment, being aware of people/noise in the room</p>

<p>-Additional balloons resembling appendages or eyes might give added <br />
buoyancy and suggest other forms.</p>

<p><br />
<img src="http://grocs.dmc.dc.umich.edu/~blimpbots/photos/blimp2.JPG"/></p>

<p><img src="http://grocs.dmc.dc.umich.edu/~blimpbots/photos/blimp3.JPG"/></p>

<p><img src="http://grocs.dmc.dc.umich.edu/~blimpbots/photos/blimp4.JPG"/></p>

<p><img src="http://grocs.dmc.dc.umich.edu/~blimpbots/photos/blimp5.JPG"/></p>

<p><img src="http://grocs.dmc.dc.umich.edu/~blimpbots/photos/blimp6.JPG"/><br />
</p>]]>
</content>
</entry>
<entry>
<title>Tracking update</title>
<link rel="alternate" type="text/html" href="http://mblog.lib.umich.edu/blimpbots/archives/2007/03/tracking_update.html" />
<modified>2007-03-01T18:54:02Z</modified>
<issued>2007-03-01T18:24:06Z</issued>
<id>tag:mblog.lib.umich.edu,2007:/blimpbots/4052.22919</id>
<created>2007-03-01T18:24:06Z</created>
<summary type="text/plain">We&apos;ve mentioned cameras and infrared LEDs, but how does all of that turn into a tracking system that monitors blimps flying around in a 3D environment? To be honest, we&apos;re not even totally sure yet, but we can at least...</summary>
<author>
<name>jrpowers</name>
<url>web page</url>
<email>jrpowers@umich.edu</email>
</author>
<dc:subject>Development</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mblog.lib.umich.edu/blimpbots/">
<![CDATA[<p>We've mentioned cameras and infrared LEDs, but how does all of that turn into a tracking system that monitors blimps flying around in a 3D environment?  To be honest, we're not even totally sure yet, but we can at least describe the basic plans.</p>

<ol>
<li>Experiment with our cameras and figure out how much they distort images.  The fanciest cameras out there still turn straight lines into curves, particularly near the outer edges of an image.  We can summarize this distortion in the K matrix from the last post.</li>
<li>Once we've placed the cameras in a room, figure out exactly where they are positioned and what direction they face.  We will do this by positioning one or more objects at known locations, and use matrix operations to solve for the camera details.</li>
<li>Now we need to look at the camera video and see whether we can find any blimps.  First we perform a feature detection pass on the whole image using an algorithm called SIFT or SURF, which finds distinct points of interest in the image.  We may also use specialized convolutions to look for bright spots if we employ IR LEDs. We then try to match features in the image to those found in pre-processed images of our blimps.  Each match constitutes a "vote" for a particular location of a blimp.  We tally up the votes, and cluster them, to see whether a large number of votes pool up one or more areas.  We store these groups for the next step.  We'll perform the clustering with either the K-means algorithm or a heavily discretized Hough transform.</li>
<li>We take our possible matches, and verify that they actually appear to be a blimp by trying to find an affine transform or a homography that maps the known blimp points to the measured ones.  This can account for rotations and stretching/skewing, since the blimp will be viewed from a variety of angles.<img src="http://grocs.dmc.dc.umich.edu/~blimpbots/photos/homography.png" alt="A homography giving the ability to find the location of hidden features (like the ones hidden below the paper)"></img></li>

<p><li>If this succeeds, we store our best guess for the front and the back of the blimps that are detected and send them over the network to a central computer.</li><br />
<li>The central computer waits for data from all of our cameras, and uses the information we extracted in (1) and (2) to estimate the position and orientation or each blimp.  The central computer will use the technique of Kalman filtering to smooth out irregularities and develop an estimate for the velocity of the blimps as well.</li><br />
<li>Finally, we can send this information into a controller, which transforms the blimp locations into the terms it needs to control the blimp.</li></p>]]>

</content>
</entry>
<entry>
<title>Cameras</title>
<link rel="alternate" type="text/html" href="http://mblog.lib.umich.edu/blimpbots/archives/2007/02/cameras.html" />
<modified>2007-02-23T17:22:28Z</modified>
<issued>2007-02-23T15:06:48Z</issued>
<id>tag:mblog.lib.umich.edu,2007:/blimpbots/4052.22570</id>
<created>2007-02-23T15:06:48Z</created>
<summary type="text/plain">As we&apos;ve mentioned, cameras will be used to determine the position of our blimps. But to do this, we have to understand a few things about the cameras. Quite obviously, we have to know where the camera is located, and...</summary>
<author>
<name>jrpowers</name>
<url>web page</url>
<email>jrpowers@umich.edu</email>
</author>
<dc:subject>Development</dc:subject>
<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mblog.lib.umich.edu/blimpbots/">
<![CDATA[<p>As we've mentioned, cameras will be used to determine the position of our blimps.  But to do this, we have to understand a few things about the cameras.  Quite obviously, we have to know where the camera is located, and where it's facing.  But cameras also have certain intrinsic properties which cause straight lines to appear as curves, particularly near the outer edges of an image.  The intrinsic properties also include the camera's resolution.</p>

<p>It turns out that we can capture all of these properties in a 3x4 matrix, <strong>P</strong>.  The matrix is set up such that, when postmultiplied by a 3D coordinate, the product is a 2D coordinate.  That is, where <strong>x</strong> and <strong>X</strong> are 2D and 3D homogeneous coordinates respectively,<br />
<blockquote><strong>x = PX</strong></blockquote></p>

<p>Algorithms exist to automatically compute <strong>P</strong>, but let's start with a manual example.  Let's think about a single 3D point <strong>X</strong> at coordinates [x,y,z]=[1,1,1].  If the camera was sitting at coordinate [1,1,0], and facing along the z-axis, this point it should be right in the center of view.  If the camera had a resolution of 640x480, this means the point X should show up on the image at 320x240.</p>

<p><img style="float:right;" src="http://www-personal.umich.edu/~jrpowers/photos/camera_geom.png"></img></p>

<p>For a moment, let's ignore the camera's intrinsic properties and just figure out how to account for the camera's position C=(1,1,0) and orientation (facing straight along the z-axis).  We can do this in two steps -- shifting the camera -- and then rotating it.  We can achieve this by using a homogeneous translation followed by a rotation.  So we translate by <strong>C</strong>.  Actually, we translate by <strong>-C</strong> because we're moving the point <strong>X</strong> rather than the camera.  What about the rotation?  Well, we have already implied that the Z-direction is "straight ahead" for the camera. So it turns out the camera is already facing the right direction, and we can use the identity matrix for the rotation,<strong> R=<em>I</em></strong>.  These two operations produce a matrix operation X' = RTX, where x' is the position of the fixed-frame point X in the camera's reference frame.  R and T are the aformementioned rotation and translation.</p>

<p>In MATLAB, noting that X has an extra "1" scale factor tacked on, we get the result we expect, X' = (0 0 1), that is, just one unit in the Z-direction in front of the camera!</p>

<blockquote>
<pre>R=eye(3);
T=[eye(3) [-1 -1 0]'];
X=[1 1 1 1];
X_prime = T*X
        = [0 0 1]
</pre></blockquote>

<p>In the above calculations, we have still ignored the fact that the camera is actually projecting 3D coordinates onto a 2D plane, and that the camera has other intrinsic properties (like focal length).  It turns out that these can all be represented by one more matrix K multiplied by the other two we have already seen, yielding the full camera matrix P = K*R*T.  The definition of K is shown below.  The camera has a focal length, which we'll just arbitrarily specify as 35.0, and two other intrinsic parameters <em>k_x</em> and <em>k_y</em>, which we also arbitrarily specify as 1.0 for now.</p>

<p><img style="float:left;" src="http://www-personal.umich.edu/~jrpowers/photos/camera_eqns.png"></img></p>

<p>Now we have everything to fully-specify our camera, so we compute the result of the multiplication, in MATLAB,<br />
<strong><pre> P =<br />
  35     1   320   -36<br />
   0   -35   240    35<br />
   0     0     1     0<br />
</pre></strong></p>

<p><br/><br/></p>

<p>Now let's see what this camera can do.  Remember all along we've been trying to take our coordinate X=(1,1,1) and turn it into camera coordinates, which we know from experience to be (320,240).  So we will "take a picture" by premultiplying X by P, and we get precisely that: </p>

<blockquote><pre>>> P*[1 1 1 1]'
ans =
   320
   240
     1
</pre></blockquote>

<p>Actually it may be confusing that we have that extra "1".  Again, this is a scale factor, and as long as it is "1," the coordinate is what we would expect.  The K matrix is responsible for the camera's projection into 2D, which requires a division that will in general yield non-unit scale factor.  In this case, we simply normalize the coordinate by dividing by the scale factor, e.g., <pre>>> ans/ans(3)</pre></p>

<p>Next, I'll apply the camera matrix to visualize something other than a single point, and then we'll show how the camera matrix is crucial in using multiple 2D images to reconstruct 3D scenes.<br />
</p>]]>

</content>
</entry>
<entry>
<title>an infrared camera from stuff you already have</title>
<link rel="alternate" type="text/html" href="http://mblog.lib.umich.edu/blimpbots/archives/2007/02/an_infrared_cam.html" />
<modified>2007-02-23T02:15:17Z</modified>
<issued>2007-02-23T01:54:58Z</issued>
<id>tag:mblog.lib.umich.edu,2007:/blimpbots/4052.22534</id>
<created>2007-02-23T01:54:58Z</created>
<summary type="text/plain"> We have been discussing the possibility of using infrared LEDs to help out the tracking a bit. After hearing that most digital cameras actually pick up IR, I did some really simple tests to see what is possible. The...</summary>
<author>
<name>swinterm</name>
<url>web page</url>
<email>swinterm@umich.edu</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mblog.lib.umich.edu/blimpbots/">
<![CDATA[<p><img src="http://grocs.dmc.dc.umich.edu/~blimpbots/photos/no-filter.jpg" alt="ir reception without filter"/><p><br />
<img src="http://grocs.dmc.dc.umich.edu/~blimpbots/photos/filter.jpg" alt="ir reception with filter"/></p>

<p>We have been discussing the possibility of using infrared LEDs to help out the tracking a bit. After hearing that most digital cameras actually pick up IR, I did some really simple tests to see what is possible.</p>

<p>The simplest way to see if a camera picks up IR is to point a remote control at it, and see if it lights up in your image. As you can see in the left image, it does that in our camera-- that light is not visible to the naked eye. For tracking, though, we need to filter out everything <i>except</i> IR-- that way, the image is much simpler, and any IR LEDs on our hardware will pop out. IR filters may sound exotic, but that's what those dark panels in front of the sensors on remote-controlled electronics are.</p>

<p>I happened to have one of those panels around, and tested the remote again, from behind the filter (on the right). Now, the IR coming from the remote in much more obvious.</p>

<p>The image is not as good as a "real" infrared camera setup, but might work well for tracking. It's not certain we'll use infrared in the final system, but some IR LEDs are on their way so we can test this more.</p>]]>

</content>
</entry>
<entry>
<title>Into the lair of the ALAVs....</title>
<link rel="alternate" type="text/html" href="http://mblog.lib.umich.edu/blimpbots/archives/2007/02/into_the_lair_o.html" />
<modified>2007-02-09T17:27:56Z</modified>
<issued>2007-02-09T16:37:34Z</issued>
<id>tag:mblog.lib.umich.edu,2007:/blimpbots/4052.20851</id>
<created>2007-02-09T16:37:34Z</created>
<summary type="text/plain">Hi this is Jason Dietrich again. Last week I was in Sunny-Southern-California on a work-related trip and had a chance to talk to Jed Berk of Art Center Pasedena. For the past year and a half or so, Jed has...</summary>
<author>
<name>rasputin</name>
<url>web page</url>
<email>rasputin@umich.edu</email>
</author>

<content type="text/html" mode="escaped" xml:lang="en" xml:base="http://mblog.lib.umich.edu/blimpbots/">
<![CDATA[<p>Hi this is Jason Dietrich again.  Last week I was in Sunny-Southern-California on a work-related trip and had a chance to talk to Jed Berk of Art Center Pasedena.  For the past year and a half or so, Jed has been building a flock of<A HREF="http://www.alavs.com/">"Autonomous Lighter than Air Vessels"</A>.  These "creatures" exhibit a range of interactive behaviors both with each other and with individuals in the room with them.  You can even call an ALAV on your cell phone!  How cool is that? <br />
Jed was able to give me some valuable pointers on blimp design, from easy ways to ballast blimps, to parts suppliers, and so on.  I have to say I'm a little jealous of his custom-made poly-propelyne blimp envelopes.  His chassis designs, based on two pieces of laser-cut plastic sheeting folded in on themselves, was really trick.  His website explains it better than I can here!  Check it out -  www.alavs.com!<br />
 </p>]]>

</content>
</entry>

</feed>