<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>rod gutierrez&apos;s blog</title>
    <link rel="alternate" type="text/html" href="http://www.rodgutierrez.com/blog/" />
    <link rel="self" type="application/atom+xml" href="http://www.rodgutierrez.com/blog/atom.xml" />
    <id>tag:www.rodgutierrez.com,2008-07-03:/blog//2</id>
    <updated>2009-03-02T08:11:55Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.23-en</generator>

<entry>
    <title>Five years of work documented through demo videos</title>
    <link rel="alternate" type="text/html" href="http://www.rodgutierrez.com/blog/2009/02/five-years-of-work-documented.html" />
    <id>tag:www.rodgutierrez.com,2009:/blog//2.7</id>

    <published>2009-02-25T04:21:58Z</published>
    <updated>2009-03-02T08:11:55Z</updated>

    <summary> While waiting to hear back from the IEEE Transaction on Robotics reviewers regarding the status of my submitted journal article on the Service Based Architecture for Cartography (SBAC) I started to think about all the demonstration videos that I...</summary>
    <author>
        <name>Rod Gutierrez</name>
        <uri>http://www.rodgutierrez.com</uri>
    </author>
    
    <category term="cartographerresearchprojectvideo" label="cartographer research project video" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.rodgutierrez.com/blog/">
        <![CDATA[ <div>
While waiting to hear back from the <a href="http://www.ieee-ras.org/tro">IEEE Transaction on Robotics</a> reviewers regarding the status of my submitted journal article on the Service Based Architecture for Cartography (SBAC) I started to think about all the demonstration videos that I had made over the years to document the various phases of the project. I decided to dig them all up and post them on YouTube. Surprisingly,&nbsp;until now, these videos were not in a single easy to find place.</div><div><br /></div><div>For those of you that don't know, a&nbsp;cartographer,&nbsp;in short, is a software component used to manage map information. In my case it also had the ability to use the map information to plan safe routes for the robots to traverse.&nbsp;This was the work that ultimately drew me into the robotics field.</div><div><br /></div><div>Continue reading to see five years of my life's work documented in about 15 minutes worth of low quality video...</div>]]>
        <![CDATA[<div>
This first video documents my first hands on experience with a robot. It was made for the final project in my undergraduate AI Robotics course. My group was given the task of taking broken code for the Trulla path planning algorithm and getting it to work on a Nomadic Nomad 200 robot. A path planner does pretty much what it sounds like it would do, it plans paths based on map information provided.</div><div><br /></div><div>The demonstration was simple. The robot was given a goal location, and map that indicated certain cells in the room contained obstacles (orange cones), and this map was used by the Trulla algorithm to plan a route free of obstacles for the robot. At certain points in the video the robot stops for a while, this is because the base of the robot is actually turning so that it can change its direction of travel.</div><div><br /></div><div><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/xNiRSuDK_WU&amp;hl=en&amp;fs=1" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed src="http://www.youtube.com/v/xNiRSuDK_WU&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></object>
<p>
</p></div><div><br /></div><div>This next video was my first exposure to programming outdoor robots. At this stage my software was in its awkward teenage phase. It was quickly hacked to play well with DFRA, a robot architecture that my lab mate Matthew Long had designed for his masters thesis, which ran on all of our outdoor robots. In this video the robot is doing something very similar to what was shown in the video above. It's traversing from a start location to a goal location, and avoiding "stuff" along the way. You'll also see some uncropped screenshots of the&nbsp;cartographer graphical interface that I created for&nbsp;setting goal locations,&nbsp;viewing aerial maps, and viewing planned paths. The GUI was my major contribution for this phase in the project.</div><div><br /></div><div>I should note, I did not compile this video. At the time we had a person in the lab dedicated to doing the multimedia stuff.&nbsp;</div><div>&nbsp;</div><div><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/nCmiu7F_no8&amp;hl=en&amp;fs=1" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed src="http://www.youtube.com/v/nCmiu7F_no8&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></object>
</div><div><br /></div><div>So this next video doesn't show anything new that will be apparent to the viewer, but the shortcomings present in the last video were corrected for this demo. This is because in the previous videos the robots only had a path planner, this is the first documented use of the robots using a "non-hacked together", full fledged cartographer component.</div><div><br /></div><div>This video was fun to make. I learned Flash for doing the animations, and I borrowed some music from The Life Aquatic soundtrack. As with most things that I do, there was an intended level of cheesyness involved.</div><div><br /><p>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/d0BoGxymAz4&amp;hl=en&amp;fs=1" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed src="http://www.youtube.com/v/d0BoGxymAz4&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></object>
</p><p><br /></p><p>This video documents the first demonstration to incorporate multiple ground robots working together. To accomplish this I had to improve upon the existing cartographer functionality, allowing each robot to share map updates made locally with other robot teammates. This project also included components from other people in the lab: the graphical user interface, and the obstacle detection software.&nbsp;</p><p>This portion of the project was funded by the military, and the sponsors like their videos to have voice&nbsp;narration,&nbsp;so in this one you get to hear me doing my best impression of the micro machines spokesman.&nbsp;</p><p><br /></p><p>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/7k2kyBhf49c&amp;hl=en&amp;fs=1" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed src="http://www.youtube.com/v/7k2kyBhf49c&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></object>
</p><p><br /></p><p>This last video wraps up my work on the cartographer for the time being. It's similar to the work in the video above, but I rewrote and&nbsp;simplified&nbsp;the navigation code to make it more reliable. I also introduced the concept of the Monitor Manger to the cartographer, which is basically used for collecting information from various physical and virtual sensors and reasoning over that information to update map information. This&nbsp;demonstration&nbsp;was supposed to include a custom built 3D laser for classifying terrain, but things didn't exactly work out. The 3D laser would have produced output that resembled the visual effects shown in&nbsp;<a href="http://www.youtube.com/watch?v=8nTFjVm9sTQ">Radiohead's "House of Cards" video</a>.</p><p><br /></p><p>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/1ouh6FMPvLM&amp;hl=en&amp;fs=1" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed src="http://www.youtube.com/v/1ouh6FMPvLM&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></object>
</p><p><br /></p><p>Well, this concludes our little journey down cartographer lane. I hope you enjoyed watching these videos of robots doing what probably appears to be the exact same thing year after year in different locations and with different music.&nbsp;</p></div>]]>
    </content>
</entry>

<entry>
    <title>A big ass new years inspired update</title>
    <link rel="alternate" type="text/html" href="http://www.rodgutierrez.com/blog/2009/01/new-years-inspired-update.html" />
    <id>tag:www.rodgutierrez.com,2009:/blog//2.6</id>

    <published>2009-01-03T18:19:16Z</published>
    <updated>2009-01-10T20:34:41Z</updated>

    <summary>Since my last update I have been somewhat productive. In September I traveled to Nice, France to attend the Teaching HRI to Humans workshop hosted at IROS 2008. I was bumped by my friend and colleague Dr. Jenny Burke to present a...</summary>
    <author>
        <name>Rod Gutierrez</name>
        <uri>http://www.rodgutierrez.com</uri>
    </author>
    
    <category term="general" label="general" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="life" label="life" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="research" label="research" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="school" label="school" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.rodgutierrez.com/blog/">
        <![CDATA[Since my last update I have been <span class="Apple-style-span" style="font-style: italic;">somewhat</span> productive. In September I traveled to Nice, France to attend the Teaching HRI to Humans workshop hosted at IROS 2008. I was bumped by my friend and colleague Dr. Jenny Burke to present a talk regarding my experiences at the 2008 HRI Young Pioneers workshop, and discuss what students expect from an HRI curriculum. I think it went rather well, due largely to the fact that, even though I had already created a presentation, I spent the entire flight to Europe contemplating what I was going to say. My presentation was the first day of the conference which allowed me to explore Nice and sit in on other talks the remainder of the week. After writing this I just remembered that I owe Jenny a paper.<div><br /></div><div>Then in November I traveled to College Station, TX to assist Dr. Jenny Burke in data collection for a NIST exercise that was taking place at Disaster City. We were testing a paperless workload measure tool (Work-IT) that Jenny has been working on for a year or so. On this trip I was essentially a support ninja... I helped with data collection, used my script-fu to get us out of some binds, assisted with setting up and tearing down the maze, and got a little bit of a tan in the process.</div><div><br /></div><div><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://www.rodgutierrez.com/blog/MultipleRobotScenario.html" onclick="window.open('http://www.rodgutierrez.com/blog/MultipleRobotScenario.html','popup','width=1200,height=1600,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false"><img src="http://www.rodgutierrez.com/blog/MultipleRobotScenario-thumb-300x400.jpg" width="300" height="400" alt="nist112008.jpg" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></span></div><div><div>Now the new year is upon us, and it looks like a large portion of it is already accounted for. I have three journal length drafts that I need to put back on the top of the stack and get them submitted. I also would like to do some sort of write up for the i<a href="http://www.rodgutierrez.com/blog/2008/07/iphone-packbot-awesome.html">Phone/Packbot interface</a> that I developed over the summer of last year, and I need to work on that HRI paper that I just remembered that I owe Jenny.</div><div><br /></div><div>Since I am down a major professor this semester I had to search beyond my typical research assistant funding, and was fortunate enough to secure a position as a TA. I've never been a TA before even though it's my third year as a graduate student... I have Dr. Murphy to thank for helping me pull that off. I've been assigned to the C for Engineers course with Dr. Turner, and this past Thursday was my first class. I was nervous at first, there are about 30 students in my lab, which is quite a bit larger than the audiences I've had to speak in front of in the past (if you don't count the time that I ran for class president in elementary school). Once I got past the initial awkwardness of being up there, and adjusted my voice so that people all the way in the back could hear me, things were fine. I think it's going to be a fun learning experience.</div><div><br /></div><div>As far as classes go, I'm taking as few as possible. There just aren't that many graduate courses that keep my interest, they generally turn out to be a chore instead of a pleasure. I did find one class over in the Psychology department that I've registered for, and I think it's going to be a good one: Art, Design, and the Brain. It's taught by Dr. Sanocki, and he's teaching the course because the topic is a personal interest of his, that fact alone makes it worth taking to me. Part of our assigned reading comes from the book Emotional Design by Donald A. Norman. What really surprised me was that the last couple chapters in the book are actually dedicated to my thesis topic, not my specific work obviously (i have yet to publish) but similar. I've already done the assigned reading for next week and want to keep going.</div><div><br /></div><div>I think this post covers most of what I've been meaning to blog about, but kept putting off. If it does take me until the end of this semester to update again, I hope that I can at least say it was because I was finishing up some of the publications that I've had collecting digital dust.</div></div>]]>
        
    </content>
</entry>

<entry>
    <title>How to create a ARGB CGImageRef from a ABGR CGImageRef in Cocoa</title>
    <link rel="alternate" type="text/html" href="http://www.rodgutierrez.com/blog/2008/07/how-to-create-a-rgba-cgimagere.html" />
    <id>tag:www.rodgutierrez.com,2008:/blog//2.5</id>

    <published>2008-07-15T07:00:16Z</published>
    <updated>2008-07-15T20:59:25Z</updated>

    <summary> Ever since I got the video feed working on my Packbot OCU application the reds and the blues have been swapped, giving the video feed a weird spacey look and totally cramping my style. Apparently the data is sent...</summary>
    <author>
        <name>Rod Gutierrez</name>
        <uri>http://www.rodgutierrez.com</uri>
    </author>
    
    <category term="apple" label="apple" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="cocoa" label="cocoa" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="howto" label="howto" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="packbot" label="packbot" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="programming" label="programming" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.rodgutierrez.com/blog/">
        <![CDATA[ <div>Ever since I got the video feed working on my Packbot OCU application the reds and the blues have been swapped, giving the video feed a weird spacey look and totally cramping my style. Apparently the data is sent this way because leaving it in BGR format reduces the load for the Packbot's onboard computer. In other languages correcting this problem is a simple task, all you have to do is get the raw data and swap the red and blue components for each pixel. However I wasn't exactly clear how to retrieve the raw image data from a CGImageRef based on the Apple documentation. Using some creative search terms in Google this weekend I was able to piece together what I needed to get a proper ARGB image. The following code may not be the best way to do this, but it definitely works.</div><div><br /></div><div><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco">- (<span style="color: #5c2699">CGImageRef</span>) CreateARGBImageWithABGRImage: (<span style="color: #5c2699">CGImageRef</span>) abgrImageRef {</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">	</span></span>// the data retrieved from the image ref has 4 bytes per pixel (ABGR).</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #2e0d6e"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">	</span></span><span style="color: #5c2699">CFDataRef</span><span style="color: #000000"> abgrData = </span>CGDataProviderCopyData<span style="color: #000000">(</span>CGImageGetDataProvider<span style="color: #000000">(abgrImageRef));</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">	</span><span style="color: #5c2699">UInt8</span> *pixelData = (<span style="color: #5c2699">UInt8</span> *) <span style="color: #2e0d6e">CFDataGetBytePtr</span>(abgrData);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">	</span><span style="color: #aa0d91">int</span> length = <span style="color: #2e0d6e">CFDataGetLength</span>(abgrData);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><br /></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">	</span></span>// abgr to rgba</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">	</span></span>// swap the blue and red components for each pixel...</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">	</span><span style="color: #5c2699">UInt8</span> tmpByte = <span style="color: #1c00cf">0</span>;</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">	</span><span style="color: #aa0d91">for</span> (<span style="color: #aa0d91">int</span> index = <span style="color: #1c00cf">0</span>; index &lt; length; index+= <span style="color: #1c00cf">4</span>) {</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">		</span>tmpByte = pixelData[index + <span style="color: #1c00cf">1</span>];</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">		</span>pixelData[index + <span style="color: #1c00cf">1</span>] = pixelData[index + <span style="color: #1c00cf">3</span>];</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">		</span>pixelData[index + <span style="color: #1c00cf">3</span>] = tmpByte;</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">	</span>}</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><span class="Apple-tab-span" style="white-space:pre">	</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">	</span></span>// grab the bgra image info</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">	</span><span style="color: #5c2699">size_t</span> width = <span style="color: #2e0d6e">CGImageGetWidth</span>(abgrImageRef);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">	</span><span style="color: #5c2699">size_t</span> height = <span style="color: #2e0d6e">CGImageGetHeight</span>(abgrImageRef);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">	</span><span style="color: #5c2699">size_t</span> bitsPerComponent = <span style="color: #2e0d6e">CGImageGetBitsPerComponent</span>(abgrImageRef);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">	</span><span style="color: #5c2699">size_t</span> bitsPerPixel = <span style="color: #2e0d6e">CGImageGetBitsPerPixel</span>(abgrImageRef);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">	</span><span style="color: #5c2699">size_t</span> bytesPerRow = <span style="color: #2e0d6e">CGImageGetBytesPerRow</span>(abgrImageRef);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">	</span><span style="color: #5c2699">CGColorSpaceRef</span> colorspace = <span style="color: #2e0d6e">CGImageGetColorSpace</span>(abgrImageRef);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">	</span><span style="color: #5c2699">CGBitmapInfo</span> bitmapInfo = <span style="color: #2e0d6e">CGImageGetBitmapInfo</span>(abgrImageRef);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><span class="Apple-tab-span" style="white-space:pre">	</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">	</span></span>// create the argb image</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">	</span><span style="color: #5c2699">CFDataRef</span> argbData = <span style="color: #2e0d6e">CFDataCreate</span>(<span style="color: #aa0d91">NULL</span>, pixelData, length);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #2e0d6e"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">	</span></span><span style="color: #5c2699">CGDataProviderRef</span><span style="color: #000000"> provider = </span>CGDataProviderCreateWithCFData<span style="color: #000000">(argbData);</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">	</span><span style="color: #5c2699">CGImageRef</span> argbImageRef = <span style="color: #2e0d6e">CGImageCreate</span>(width, height, bitsPerComponent, bitsPerPixel, bytesPerRow, </p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-style-span" style="white-space: pre; ">		<span class="Apple-style-span" style="white-space: normal; ">colorspace, bitmapInfo, provider, <span style="color: #aa0d91">NULL</span>, <span style="color: #643820">true</span>, <span style="color: #2e0d6e">kCGRenderingIntentDefault</span>);</span></span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><span class="Apple-tab-span" style="white-space:pre">	</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">	</span></span>// release what we can</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">	</span><span style="color: #2e0d6e">CFRelease</span>(abgrData);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">	</span><span style="color: #2e0d6e">CFRelease</span>(argbData);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #2e0d6e"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">	</span></span>CGDataProviderRelease<span style="color: #000000">(provider);</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px"><span class="Apple-tab-span" style="white-space:pre">	</span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007400"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre">	</span></span>// return the pretty new image</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><span class="Apple-tab-span" style="white-space:pre">	</span><span style="color: #aa0d91">return</span> argbImageRef;</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco">}</p><p></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco"><br /></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco">So there you have it. I hope this helps someone else. Suggestions for improvements on this are certainly welcome.</p><p></p></div>]]>
        
    </content>
</entry>

<entry>
    <title>Native iPhone App + iRobot Packbot = Awesome</title>
    <link rel="alternate" type="text/html" href="http://www.rodgutierrez.com/blog/2008/07/iphone-packbot-awesome.html" />
    <id>tag:www.rodgutierrez.com,2008:/blog//2.4</id>

    <published>2008-07-03T06:56:25Z</published>
    <updated>2008-07-03T19:00:57Z</updated>

    <summary>I had wanted to do something like this since I got the iPhone last summer. At the moment it&apos;s a rough draft of sorts. The current interface shows the video feed from the Packbot, and provides a directional pad for...</summary>
    <author>
        <name>Rod Gutierrez</name>
        <uri>http://www.rodgutierrez.com</uri>
    </author>
    
    <category term="cocoa" label="cocoa" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="iphone" label="iphone" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="irobot" label="irobot" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="packbot" label="packbot" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="project" label="project" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.rodgutierrez.com/blog/">
        <![CDATA[<div>I had wanted to do something like this since I got the iPhone last summer. At the moment it's a rough draft of sorts. The current interface shows the video feed from the Packbot, and provides a directional pad for driving the robot and adjusting the flippers. I feel like I have the basic code needed to communicate with the Packbot, but what's really interesting are the possibilities introduced by the iPhone's unique interface, so that's the next step. I plan to experiment with the iPhone's accelerometers, and with the multi-touch interface for interacting with the robot. In the YouTube video below you can see some promising initial results of the work:</div><div><br /></div><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/mkM92ateTwo&amp;hl=en&amp;fs=1" /><param name="allowFullScreen" value="true" /><embed src="http://www.youtube.com/v/mkM92ateTwo&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></object><div><br /></div><div>Here's some of the press that this got on the bigger blogs around the net:</div><div><br /></div><div><a href="http://9to5mac.com/iphone_irobot">iPhone Native Packbot OCU</a></div><div><a href="http://gizmodo.com/5018350/iphone-app-runs-irobots-military-packbot">iPhone App Runs iRobot's Military Packbot</a></div><div><a href="http://www.engadget.com/2008/06/20/native-iphone-app-controls-packbot-via-wifi-delivers-streaming/">Native iPhone app controls Packbot via WiFi, delivers streaming POV video</a></div><div><a href="http://blog.wired.com/defense/2008/06/video-iphone-se.html">Video: iPhone Sends Packbot Spinning</a></div><div><a href="http://www.tuaw.com/2008/06/23/iphone-irobot-control/">iPhone iRobot control</a></div><div><br /></div><div>I'd like to thank <a href="http://www.jeffcraighead.com">Jeff Craighead</a>, <a href="http://www.kpratt.net/">Kevin Pratt</a>, and <a href="http://www.revolucent.net/">Greg Higley</a> for helping me out in various ways while working on this project.</div>]]>
        
    </content>
</entry>

<entry>
    <title>I finally set up a real blog</title>
    <link rel="alternate" type="text/html" href="http://www.rodgutierrez.com/blog/2008/07/i-finally-set-up-a-real-blog.html" />
    <id>tag:www.rodgutierrez.com,2008:/blog//2.3</id>

    <published>2008-07-03T05:21:55Z</published>
    <updated>2008-07-03T06:52:33Z</updated>

    <summary>At last I have a super fancy blogging getup! I&apos;ve been meaning to do this for a while, but kept putting it off. I&apos;m hoping to use this space as a means to solidify my thoughts, perhaps get input on them,...</summary>
    <author>
        <name>Rod Gutierrez</name>
        <uri>http://www.rodgutierrez.com</uri>
    </author>
    
    <category term="general" label="general" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="html" label="html" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="website" label="website" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="wysiwyg" label="wysiwyg" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.rodgutierrez.com/blog/">
        <![CDATA[At last I have a super fancy blogging getup! I've been meaning to do this for a while, but kept putting it off. I'm hoping to use this space as a means to solidify my thoughts, perhaps get input on them, and by putting my thoughts out in the open I think it will encourage me to follow through slightly more than I have in the past.<div><br /></div><div>As I set this blog up the first thing I notice is how much iWeb does not like to play with anything that wasn't created in iWeb. All I want to do is have an external link pointing to this blog in the navigation menu, and it can't be done without editing the HTML after i publish the site. It's easy enough to do, but the whole reason I went with iWeb was so I wouldn't have to worry about touching HTML. I think in time I will have to transition over to a site creation app that is a little less picky.</div><div><br /></div><div>So here's to keeping this thing up to date, and getting a reasonably usable and informative site.</div>]]>
        
    </content>
</entry>

</feed>
