<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>rod gutierrez&apos;s blog</title>
        <link>http://www.rodgutierrez.com/blog/</link>
        <description></description>
        <language>en</language>
        <copyright>Copyright 2009</copyright>
        <lastBuildDate>Tue, 24 Feb 2009 23:21:58 -0500</lastBuildDate>
        <generator>http://www.sixapart.com/movabletype/</generator>
        <docs>http://www.rssboard.org/rss-specification</docs>
        
        <item>
            <title>Five years of work documented through demo videos</title>
            <description><![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>]]></description>
            <link>http://www.rodgutierrez.com/blog/2009/02/five-years-of-work-documented.html</link>
            <guid>http://www.rodgutierrez.com/blog/2009/02/five-years-of-work-documented.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">cartographer research project video</category>
            
            <pubDate>Tue, 24 Feb 2009 23:21:58 -0500</pubDate>
        </item>
        
        <item>
            <title>A big ass new years inspired update</title>
            <description><![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>]]></description>
            <link>http://www.rodgutierrez.com/blog/2009/01/new-years-inspired-update.html</link>
            <guid>http://www.rodgutierrez.com/blog/2009/01/new-years-inspired-update.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">general</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">life</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">research</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">school</category>
            
            <pubDate>Sat, 03 Jan 2009 13:19:16 -0500</pubDate>
        </item>
        
        <item>
            <title>How to create a ARGB CGImageRef from a ABGR CGImageRef in Cocoa</title>
            <description><![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>]]></description>
            <link>http://www.rodgutierrez.com/blog/2008/07/how-to-create-a-rgba-cgimagere.html</link>
            <guid>http://www.rodgutierrez.com/blog/2008/07/how-to-create-a-rgba-cgimagere.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">apple</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">cocoa</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">howto</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">packbot</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">programming</category>
            
            <pubDate>Tue, 15 Jul 2008 02:00:16 -0500</pubDate>
        </item>
        
        <item>
            <title>Native iPhone App + iRobot Packbot = Awesome</title>
            <description><![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>]]></description>
            <link>http://www.rodgutierrez.com/blog/2008/07/iphone-packbot-awesome.html</link>
            <guid>http://www.rodgutierrez.com/blog/2008/07/iphone-packbot-awesome.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">cocoa</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">iphone</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">irobot</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">packbot</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">project</category>
            
            <pubDate>Thu, 03 Jul 2008 01:56:25 -0500</pubDate>
        </item>
        
        <item>
            <title>I finally set up a real blog</title>
            <description><![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>]]></description>
            <link>http://www.rodgutierrez.com/blog/2008/07/i-finally-set-up-a-real-blog.html</link>
            <guid>http://www.rodgutierrez.com/blog/2008/07/i-finally-set-up-a-real-blog.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">general</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">html</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">website</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">wysiwyg</category>
            
            <pubDate>Thu, 03 Jul 2008 00:21:55 -0500</pubDate>
        </item>
        
    </channel>
</rss>
