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

<channel>
	<title>KenMankoff</title>
	<atom:link href="http://kenmankoff.com/feed" rel="self" type="application/rss+xml" />
	<link>http://kenmankoff.com</link>
	<description>Antarctica, My PhD, Life, Stuff, etc.</description>
	<lastBuildDate>Tue, 01 May 2012 23:10:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Offline Registration for the Kinect</title>
		<link>http://kenmankoff.com/2012/05/01/offline-registration-for-the-kinect</link>
		<comments>http://kenmankoff.com/2012/05/01/offline-registration-for-the-kinect#comments</comments>
		<pubDate>Tue, 01 May 2012 06:03:25 +0000</pubDate>
		<dc:creator>Ken Mankoff</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Computers]]></category>
		<category><![CDATA[Kinect]]></category>
		<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://kenmankoff.com/?p=4307</guid>
		<description><![CDATA[I am releasing source code for a program that supports off-line calibration and registration of raw Kinect data collected by the libfreenect record program. The interesting parts of this code were all developed by the OpenKinect community, I simply patched parts of their code together in a way that was useful for my Kinect work. [...]]]></description>
			<content:encoded><![CDATA[<p>I am releasing source code for a program that supports off-line calibration and registration of raw Kinect data collected by the <a href="http://openkinect.org">libfreenect</a> <code>record</code> program. The interesting parts of this code were all developed by the <a href="http://openkinect.org">OpenKinect</a> community, I simply patched parts of their code together in a way that was useful for my Kinect work. I have argued in the past for collecting the raw data so that different (and better) calibrations can be applied in the future, and this code maintains this philosophy.</p>
<p>This code uses the internal calibration parameters that are shipped with each Kinect, as opposed to extrinsically determining the calibration (the method used by most checker-board image calibration methods). Offline means that the calibration parameters can be captured once when the Kinect is plugged in, and then used in the processing phase without the Kinect on data that has already been acquired. Calibration is defined as the act of mapping from the raw sensor digital numbers (DN) in (pixel, pixel, DN) coordinates to world (x,y,z) coordinates. Registration is defined as mapping the RGB pixels onto the depth data.</p>
<p>Importantly, this registration maps RGB to depth, whereas all other registration algorithms I know of map depth to RGB. Since the data of interest with the Kinect is the depth data, it does not make sense to perform any unnecessary error-increasing mathematical operations on the depth data.</p>
<p>The code can be downloaded from <a title="mankoff fork of libfreenect on github" href="https://github.com/mankoff/libfreenect">https://github.com/mankoff/libfreenect/tree/offline_register</a> and built with the following commands, assuming all dependencies are already installed. The easiest way to verify your are able to build this code is to install libfreenect through an existing package manager system, then over-write that with this custom build.</p>
<p><code>git clone https://github.com/mankoff/libfreenect/<br />
cd libfreenect<br />
git checkout offline_register<br />
mkdir build<br />
cd build<br />
cmake ..<br />
make<br />
make install<br />
</code><br />
Optionally, skip the <code>make install</code> line and access the new program in <code>build/bin/</code>. The new program is called &#8220;<code>kinect_register</code>&#8221; and when run without any arguments it prints usage instructions:</p>
<p><code>$ kinect_register</p>
<p>Kinect Offline Registration</p>
<p>Usage:<br />
kinect_register [-h] -s &lt;regfile&gt;  | -a &lt;regfile&gt; &lt;PGM&gt; [&lt;PPM&gt;]<br />
-h: Display this help message<br />
-s: Save the registration parameters from a connected Kinect to &lt;regfile&gt;<br />
-a: Apply the registration from &lt;regfile&gt; to &lt;PGM&gt; (from 'record')<br />
&nbsp;&nbsp;&nbsp;&nbsp;Optionally align a PPM file with the PGM file</p>
<p>Data Formats (units: mm):<br />
file.x: 640x480 double of x values<br />
file.y: 640x480 double of y values<br />
file.z: 640x480 integer of z values<br />
file.xyz: ASCII file of x y z r g b. RGB only if PPM argument provided<br />
file.reg.ppm: PPM shifted so pixels align with file.{x,y,z} data<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://kenmankoff.com/2012/05/01/offline-registration-for-the-kinect/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reading Data From Kinect libfreenect &#8220;record&#8221;</title>
		<link>http://kenmankoff.com/2012/05/01/reading-data-from-kinect-libfreenect-record</link>
		<comments>http://kenmankoff.com/2012/05/01/reading-data-from-kinect-libfreenect-record#comments</comments>
		<pubDate>Tue, 01 May 2012 06:02:19 +0000</pubDate>
		<dc:creator>Ken Mankoff</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Computers]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Kinect]]></category>

		<guid isPermaLink="false">http://kenmankoff.com/?p=4328</guid>
		<description><![CDATA[The file format produced by the Kinect libfreenect record program is not well documented and suffers from endian complication issues on most computers. Below are four snippets of code that can be used to read the big-endian PGM (depth data) files produced by record. The PPM (RGB data) are a more popular image format and [...]]]></description>
			<content:encoded><![CDATA[<p>The file format produced by the Kinect <a href="http://openkinect.org">libfreenect</a> <code>record</code> program is not well documented and suffers from endian complication issues on most computers. Below are four snippets of code that can be used to read the big-endian PGM (depth data) files produced by <code>record</code>. The PPM (RGB data) are a more popular image format and should be easier to work with.<br />
<code><br />
// C<br />
fp = fopen("file.pgm", "r");<br />
while (getc(fp) != '\n');                   // skip header line<br />
uint16_t data[640*480];<br />
fread(data, sizeof(uint16_t), 640*480, fp); // read the data<br />
fclose(fp);</p>
<p># Python<br />
import numpy as np<br />
infile = open('file.pgm','r')<br />
header = next(infile)<br />
infile.seek(len(header))<br />
data = np.fromfile(infile, dtype=np.uint16).reshape((480, 640))</p>
<p>;; IDL<br />
openr, lun, "file.pgm", /get_lun<br />
header = {P5:BYTARR(2),width:BYTARR(4),height:BYTARR(4),maxV:BYTARR(7)}<br />
readu, lun, header<br />
data = intarr( string(header.width), string(header.height) )<br />
readu, lun, data<br />
free_lun, lun</p>
<p>% MATLAB<br />
data = imread('file.pgm');<br />
data = swapbytes(data);<br />
</code></p>
<p>If using my <code><a href="http://kenmankoff.com/2012/05/01/offline-registration-for-the-kinect" title="kinect_register">kinect_register</a></code> program then reading a PGM is not absolutely necessary, as that program converts a single frame of depth data to an ASCII x,y,z file format. However, a single frame is noisy, and I suggest using the above PGM reader snippets to load several (or several hundred) PGMs and average all the good values of each pixel. Then, write out a new (averaged) PGM to be used as input to <code><a href="http://kenmankoff.com/2012/05/01/offline-registration-for-the-kinect" title="kinect_register">kinect_register</a></code>. The snippets above can be used as templates for the writer function. The averaging will produce fractional numbers, but they will need to be rounded to whole numbers before writing the PGM.</p>
<p>If you have code to load 16-bit big-endian PGM files in another language, or a PGM writer function, feel free to share.</p>
]]></content:encoded>
			<wfw:commentRss>http://kenmankoff.com/2012/05/01/reading-data-from-kinect-libfreenect-record/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The role of Pine Island Glacier ice shelf basal channels in deep-water upwelling, polynyas and ocean circulation in Pine Island Bay, Antarctica</title>
		<link>http://kenmankoff.com/2012/04/25/the-role-of-pine-island-glacier-ice-shelf-basal-channels-in-deep-water-upwelling-polynyas-and-ocean-circulation-in-pine-island-bay-antarctica</link>
		<comments>http://kenmankoff.com/2012/04/25/the-role-of-pine-island-glacier-ice-shelf-basal-channels-in-deep-water-upwelling-polynyas-and-ocean-circulation-in-pine-island-bay-antarctica#comments</comments>
		<pubDate>Wed, 25 Apr 2012 21:12:28 +0000</pubDate>
		<dc:creator>Ken Mankoff</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Antarctica]]></category>
		<category><![CDATA[map]]></category>
		<category><![CDATA[NASA]]></category>
		<category><![CDATA[NBP09-01]]></category>
		<category><![CDATA[PhD]]></category>
		<category><![CDATA[Pine Island Glacier]]></category>
		<category><![CDATA[publication]]></category>
		<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://kenmankoff.com/?p=4292</guid>
		<description><![CDATA[@article{Mankoff:2012The-role, Title = {{The role of Pine Island Glacier ice shelf basal channels in deep water upwelling, polynyas, and ocean circulation in Pine Island Bay, Antarctica}}, Author = {Kenneth D. Mankoff and Stanley S. Jacobs and Slawek M. Tulaczyk and Sharon E. Stammerjohn}, Journal = {Annals of Glaciology}, Number = {60}, Volume = {53}, Year [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_4301" class="wp-caption aligncenter" style="width: 510px"><a href="http://kenmankoff.com/data/mankoff2012.pdf"><img src="http://kenmankoff.com/wordpress/wp-content/uploads/2012/04/PIG1-500x470.png" alt="The role of Pine Island Glacier ice shelf basal channels in deep-water upwelling, polynyas and ocean circulation in Pine Island Bay, Antarctica" title="The role of Pine Island Glacier ice shelf basal channels in deep-water upwelling, polynyas and ocean circulation in Pine Island Bay, Antarctica" width="500" height="470" class="size-medium wp-image-4301" /></a><p class="wp-caption-text">The role of Pine Island Glacier ice shelf basal channels in deep-water upwelling, polynyas and ocean circulation in Pine Island Bay, Antarctica</p></div>
<pre>@article{Mankoff:2012The-role,
	Title = {{The role of Pine Island Glacier ice shelf basal
                  channels in deep water upwelling, polynyas, and
                  ocean circulation in Pine Island Bay, Antarctica}},
	Author = {Kenneth D. Mankoff and Stanley S. Jacobs and
                  Slawek M. Tulaczyk and Sharon E. Stammerjohn},
	Journal = {Annals of Glaciology},
	Number = {60},
	Volume = {53},
	Year = {2012},
        DOI = {10.3189/2012AoG60A062}}</pre>
]]></content:encoded>
			<wfw:commentRss>http://kenmankoff.com/2012/04/25/the-role-of-pine-island-glacier-ice-shelf-basal-channels-in-deep-water-upwelling-polynyas-and-ocean-circulation-in-pine-island-bay-antarctica/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pine Island Glacier and Pine Island Bay</title>
		<link>http://kenmankoff.com/2012/01/31/pine-island-glacier-and-pine-island-bay</link>
		<comments>http://kenmankoff.com/2012/01/31/pine-island-glacier-and-pine-island-bay#comments</comments>
		<pubDate>Tue, 31 Jan 2012 19:52:05 +0000</pubDate>
		<dc:creator>Ken Mankoff</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Antarctica]]></category>
		<category><![CDATA[ice]]></category>
		<category><![CDATA[map]]></category>
		<category><![CDATA[PhD]]></category>
		<category><![CDATA[Pine Island Glacier]]></category>
		<category><![CDATA[Places]]></category>
		<category><![CDATA[publication]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[Visualization]]></category>

		<guid isPermaLink="false">http://kenmankoff.com/?p=4281</guid>
		<description><![CDATA[Pine Island Bay in the southeast Amundsen Sea, Antarctica, on 16 Nov 2008. Upwelling, melt-laden outflow plumes emerge from beneath the adjacent Pine Island Glacier ice shelf (top center) and mix in the bay waters. Warm red colors show sea surface temperatures more than a degree warmer than the near-freezing dark blue color. Cyclonic circulation [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_4282" class="wp-caption aligncenter" style="width: 510px"><a href="http://kenmankoff.com/wordpress/wp-content/uploads/2012/01/landsat.png"><img class="size-medium wp-image-4282" title="Pine Island Glacier and Pine Island Bay" src="http://www.igsoc.org/images/annals/A60.gif" alt="Pine Island Glacier and Pine Island Bay" width="500" height="673" /></a><p class="wp-caption-text">Pine Island Glacier and Pine Island Bay</p></div>
<p>Pine Island Bay in the southeast Amundsen Sea, Antarctica, on 16 Nov 2008. Upwelling, melt-laden outflow plumes emerge from beneath the adjacent Pine Island Glacier ice shelf (top center) and mix in the bay waters. Warm red colors show sea surface temperatures more than a degree warmer than the near-freezing dark blue color. Cyclonic circulation in the bay is framed by the ice shelf, land ice and sea ice, in gray-scale with the darker shades colder. Landsat Enhanced Thematic Mapper Plus image, thermal infrared (channel 6H), subset of scene #LE72331132008321EDC00.</p>
<pre>@article{Mankoff:2012The-role,
	Title = {{The role of Pine Island Glacier ice shelf basal
                  channels in deep water upwelling, polynyas, and
                  ocean circulation in Pine Island Bay, Antarctica}},
	Author = {Kenneth D. Mankoff and Stanley S. Jacobs and
                  Slawek M. Tulaczyk and Sharon E. Stammerjohn},
	Journal = {Annals of Glaciology},
	Number = {60},
	Volume = {53},
	Year = {2012},
        DOI = {10.3189/2012AoG60A062}}</pre>
]]></content:encoded>
			<wfw:commentRss>http://kenmankoff.com/2012/01/31/pine-island-glacier-and-pine-island-bay/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kinects as sensors in earth science: glaciological, geomorphological, and hydrological applications</title>
		<link>http://kenmankoff.com/2011/12/16/kinects-as-sensors-in-earth-science-glaciological-geomorphological-and-hydrological-applications</link>
		<comments>http://kenmankoff.com/2011/12/16/kinects-as-sensors-in-earth-science-glaciological-geomorphological-and-hydrological-applications#comments</comments>
		<pubDate>Fri, 16 Dec 2011 15:22:24 +0000</pubDate>
		<dc:creator>Ken Mankoff</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Kinect]]></category>
		<category><![CDATA[Media]]></category>
		<category><![CDATA[PhD]]></category>
		<category><![CDATA[publication]]></category>
		<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://kenmankoff.com/?p=4267</guid>
		<description><![CDATA[Last week I presented a poster at the 2011 AGU Fall Meeting. It has generated some press thanks to an article in Wired. If you are interested in the poster it is available by clicking on the image below. @conference{Mankoff:2011Kinects, Author = {Kenneth D. Mankoff and Tess Alethea Russo and Benjamin Kenneth Norris and Saffia [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I presented a poster at the <a href="http://sites.agu.org/fallmeeting/index.php">2011 AGU Fall Meeting</a>. It has generated some press thanks to <a title="Kinect in Wired" href="http://www.wired.com/wiredscience/2011/12/hacked-kinect-science/">an article in Wired</a>. If you are interested in the poster it is available by clicking on the image below.<br />
<center><br />
<div id="attachment_4269" class="wp-caption alignnone" style="width: 460px"><a href="http://kenmankoff.com/wordpress/wp-content/uploads/2011/12/kinect.pdf"><img class=" wp-image-4269  " title="AGU Poster: `Kinects as sensors in earth science: glaciological, geomorphological, and hydrological applications`" src="http://kenmankoff.com/wordpress/wp-content/uploads/2011/12/thumbnail.png" alt="AGU Poster: `Kinects as sensors in earth science: glaciological, geomorphological, and hydrological applications`" width="450" height="250" /></a><p class="wp-caption-text">AGU Poster: `Kinects as sensors in earth science: glaciological, geomorphological, and hydrological applications`</p></div><br />
</center></p>
<pre>
@conference{Mankoff:2011Kinects,
  Author = {Kenneth D. Mankoff and Tess Alethea Russo and
            Benjamin Kenneth Norris and Saffia Hossainzadeh and
            Lucas H. Beem and Jacob I. Walter and
            Slawek M. Tulaczyk},
  Title = {{Kinects as sensors in earth science: glaciological,
            geomorphological, and hydrological applications}},
  Address = {San Francisco, CA},
  Booktitle = {American Geophysical Union, Fall Meeting},
  Month = {December 5 - 9,},
  Note = {Abstract \#C41D-0442.},
  Year = {2011}}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://kenmankoff.com/2011/12/16/kinects-as-sensors-in-earth-science-glaciological-geomorphological-and-hydrological-applications/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Kinect Go Kit for fieldwork</title>
		<link>http://kenmankoff.com/2011/11/11/kinect-go-kit-for-fieldwork</link>
		<comments>http://kenmankoff.com/2011/11/11/kinect-go-kit-for-fieldwork#comments</comments>
		<pubDate>Fri, 11 Nov 2011 23:27:59 +0000</pubDate>
		<dc:creator>Ken Mankoff</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Computers]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Kinect]]></category>
		<category><![CDATA[PhD]]></category>
		<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://kenmankoff.com/?p=4243</guid>
		<description><![CDATA[Following up on my previous post about using the Kinect for earth science applications, I&#8217;m documenting the Kinect Go Kit I built for fieldwork. I travel with two Kinects, two power supplies, and two computers in case one gets damaged or destroyed in the field, although only one computer is in the kit. The Netbook [...]]]></description>
			<content:encoded><![CDATA[<p>Following up on my previous post about using the <a href="http://kenmankoff.com/2011/11/05/kinect-for-earth-scientists">Kinect for earth science applications</a>, I&#8217;m documenting the Kinect Go Kit I built for fieldwork.</p>
<div id="attachment_4245" class="wp-caption aligncenter" style="width: 510px"><a href="http://kenmankoff.com/wordpress/wp-content/uploads/2011/11/top.png"><img class="size-medium wp-image-4245" title="Kinect Go Kit: Top Level" src="http://kenmankoff.com/wordpress/wp-content/uploads/2011/11/top-500x375.png" alt="Kinect Go Kit: Top Level" width="500" height="375" /></a><p class="wp-caption-text">Kinect Go Kit: Top level</p></div>
<div id="attachment_4244" class="wp-caption aligncenter" style="width: 510px"><img class="size-medium wp-image-4244" title="Kinect Pelican Go Kit Case" src="http://kenmankoff.com/wordpress/wp-content/uploads/2011/11/pelican-500x375.jpg" alt="Kinect Pelican Go Kit Case" width="500" height="375" /><p class="wp-caption-text">Kinect Go Kit Pelican Case</p></div>
<p style="text-align: left;">I travel with two Kinects, two power supplies, and two computers in case one gets damaged or destroyed in the field, although only one computer is in the kit.</p>
<p>The Netbook is a cheap $240 computer running <a title="Ubuntu" href="http://www.ubuntu.com/">Ubuntu</a> and the <a title="OpenKinect" href="http://openkinect.org/wiki/Main_Page">libfreenect software stack</a> at a minimum. I have also found it useful to have more advanced data collection software (<a title="ROS" href="http://www.ros.org/wiki/">ROS</a>, <a title="RGBDemo" href="http://nicolas.burrus.name/index.php/Research/KinectRgbDemoV6">RGBDemo</a>, <a title="RGBDSLAM" href="http://www.ros.org/wiki/rgbdslam">RGBDSLAM</a>), and some analysis software (<a title="CloudCompare" href="http://www.danielgm.net/cc/">CloudCompare</a>, <a title="points2grid" href="https://github.com/CRREL/points2grid">points2grid</a>, <a title="Viewpoints" href="http://astrophysics.arc.nasa.gov/%7Epgazis/viewpoints.htm">Viewpoints</a>, etc.). This netbook works fine for raw data dumps from the libfreenect &#8216;record&#8217; program. It can run the more computationally expensive scene stitching algorithms such as RGBDSLAM, but it takes about 10 seconds per stitch, while a more powerful laptop (but still a few years old) can do it at 0.5 to 1 Hz. Since &#8216;record&#8217; collects about 1.5 GB of data per minute, it is good to have a lot of free space on the hard drive.</p>
<p>The plugs and cables are shown laid out below, and in addition, some velcro straps are stored in that compartment, used to attach the Kinect to the tripod arm.</p>
<p>The Pelican 1510 case supports two levels, and the lower level looks like this:</p>
<div id="attachment_4249" class="wp-caption aligncenter" style="width: 510px"><img class="size-medium wp-image-4249" title="Kinect Go Kit: Bottom Layer" src="http://kenmankoff.com/wordpress/wp-content/uploads/2011/11/bottom-500x375.png" alt="Kinect Go Kit: Bottom Layer" width="500" height="375" /><p class="wp-caption-text">Kinect Go Kit: Bottom level</p></div>
<p>Battery #1 is a 12 V 5 Ah sealed led acid battery. It provides &gt;5 hours of Kinect runtime, about equal to the runtime of the netbook.</p>
<p>Battery #2 is 8 AA batteries (12 V), and underneath is an 8 AA battery holder and a battery charger. If I need to turn the Kinect on for a short amount of time and want to travel lightly, these will do.</p>
<div id="attachment_4250" class="wp-caption aligncenter" style="width: 510px"><img class="size-medium wp-image-4250" title="Kinect cable layouts" src="http://kenmankoff.com/wordpress/wp-content/uploads/2011/11/kinect-500x375.jpg" alt="Kinect cable layouts" width="500" height="375" /><p class="wp-caption-text">Kinect cable layouts</p></div>
<p>As shown above the cord to the Kinect can be cut and alligator clips or some other electrical termination can be attached. I often have wall power and have attached clips to the detached plug so I can use it as originally intended. However, when in the field, the clips can connect directly to the 12 V battery or the AA battery pack.</p>
<div id="attachment_4251" class="wp-caption alignright" style="width: 160px"><a href="http://kenmankoff.com/wordpress/wp-content/uploads/2011/11/tripod.jpg"><img class="size-thumbnail wp-image-4251" title="Kinect mounted on tripod" src="http://kenmankoff.com/wordpress/wp-content/uploads/2011/11/tripod-150x150.jpg" alt="Kinect mounted on tripod" width="150" height="150" /></a><p class="wp-caption-text">Kinect mounted on tripod</p></div>
<p>The Kinect Go Kit above is close to the minimum necessary for fieldwork. Things that I would like in it, but are not yet, include:</p>
<ul>
<li>Tape measure</li>
<li>Liquid container (tupperwear) and opaque liquid (or additive) so that any scene can have a defined flat surface</li>
<li>Sling for under tripod to hold battery, netbook, protecting equipment and keeping it off the ground</li>
<li>Counter weight for tripod arm</li>
</ul>
<p>Additional tools I have found handy to have with me in the field include, but are not limited to, the following:</p>
<ul>
<li>External hard disk for backups</li>
<li>Zip-ties to complement the Velcro straps</li>
<li>Multimeter</li>
<li>Spare notebook, perhaps with a more powerful CPU, for scene stitching</li>
<li>Rope or other &#8216;image noise&#8217; for scene stitching with RGBSLAM when working in environments that have &#8216;self similar&#8217; scenes (no good tie points)</li>
<li>Mounting systems for long term deployment</li>
<li>Trashbags for environmental protection</li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://kenmankoff.com/2011/11/11/kinect-go-kit-for-fieldwork/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kinect for Earth Scientists</title>
		<link>http://kenmankoff.com/2011/11/05/kinect-for-earth-scientists</link>
		<comments>http://kenmankoff.com/2011/11/05/kinect-for-earth-scientists#comments</comments>
		<pubDate>Sun, 06 Nov 2011 02:35:56 +0000</pubDate>
		<dc:creator>Ken Mankoff</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Computers]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Kinect]]></category>
		<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://kenmankoff.com/?p=4162</guid>
		<description><![CDATA[We have successfully used a Kinect outdoors to study ablation on a glacier, map a subglacial cave in 3D, and tested it in a variety of hydrological situations (imaging roughness on the base of a stream, calibrating the Kinect data through water, and imaging surface waves). Results will be presented at the 2011 AGU conference. [...]]]></description>
			<content:encoded><![CDATA[<p>We have successfully used a Kinect outdoors to study ablation on a glacier, map a subglacial cave in 3D, and tested it in a variety of hydrological situations (imaging roughness on the base of a stream, calibrating the Kinect data through water, and imaging surface waves). Results will be presented at the <a href="http://sites.agu.org/fallmeeting/">2011 AGU conference</a>.</p>
<p>There are a variety software interfaces to the Kinect. One high-level tool that is easy to use (binaries provided, no need to compile source, supports &#8216;scene painting&#8217;) is <a title="RGB-Demo" href="http://nicolas.burrus.name/index.php/Research/KinectRgbDemoV6">RGB-Demo</a>. It is a good tool to start with if you want to work with the Kinect.</p>
<p>However, most Kinect software and calibrations so far have been developed by the robotics and computer vision communities. I am grateful for the work they have done, but those communities have different data needs than earth scientists. For example, quadrotor obstacle avoidance (<a title="quadrotor paper" href="http://www.mva-org.jp/Proceedings/2011CD/papers/09-31.pdf">link (PDF)</a>, <a title="quadrotor" href="http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?reload=true&amp;arnumber=5971311">link</a>) has distance measurement errors that appear to be on order cm, but it still works fine as the helicopter avoids obstacles by an amount larger than the error.</p>
<p>Earth scientists should aim for a better model of the world than the one currently provided by the Kinect and its primary users. I suggest recording and storing the raw digital numbers (DN) from the Kinect rather than higher-level auto-calibrated real-world coordinates. It will require more post-processing, but storing the DNs will allow the data to be re-processed as better calibrations are developed. In addition, the low level recorder operates at 30 Hz and the higher level point-cloud products currently do not record data at that rate.</p>
<p>The best supported low-level interface is the LibFreenect Fakenect <a title="Fakenect Record" href="http://openkinect.org/wiki/Fakenect#Record">record</a> program. It dumps the uncalibrated RGB and depth images to a folder at 30 Hz until you kill the process. Uncalibrated means both that the depth data is in sensor units, and that the depth and RGB images are not aligned. You can easily convert the depth data to real world x,y,z coordinates using existing published algorithms (<a href="http://nicolas.burrus.name/index.php/Research/KinectCalibration">link</a>, <a href="http://www.vision.caltech.edu/bouguetj/calib_doc/">link</a>, <a href="http://www.ros.org/wiki/kinect_calibration/technical">link</a>, and many others exist on the web), but importantly the raw data is stored and can be used with better calibrations in the future.</p>
<p>After processing the raw &#8216;record&#8217; data, you can work with the point cloud data or DEMs using a variety of standard software for pointclouds, LiDAR, etc. I have had great success with <a title="CloudCompare" href="http://www.danielgm.net/cc/">CloudCompare</a> and <a href="http://www.opentopography.org/index.php/resources/otforge/points2grid">Poinst2Grid</a>, in addition to custom code in MATLAB, IDL, and Python. A good list of software is available at the NSF <a title="OpenTopography.org" href="http://www.opentopography.org/">OpenTopography</a> site.</p>
<p>To work with the depth data to we initially use the following algorithms found on the various sites dedicated to Kinect hacking. The data provided by these algorithms is sufficient for certain uses, and for testing algorithms and visualizations, while better calibrations are performed.</p>
<p>DN to distance (<a href="https://groups.google.com/group/openkinect/msg/e98a94ac605b9f21">source</a>):</p>
<blockquote><p>k1 = 1.1863d<br />
k2 = 2842.5d<br />
k3 = 0.1236d<br />
Z = k3 * tan( double( DN ) / k2 + k1 )</p></blockquote>
<p>XYZ to world (<a href="https://groups.google.com/group/openni-dev/browse_thread/thread/c2b37ca04ff55257?fwc=1 ">source</a>):</p>
<blockquote><p>Xres = 640<br />
Yres = 480<br />
FovH = 1.0144686707507438 (rad)<br />
FovV = 0.78980943449644714 (rad)<br />
XtoZ = tan( FovH / 2 ) * 2<br />
YtoZ = tan( FovV / 2 ) * 2<br />
X = ( X_pixel / Xres &#8211; 0.5 ) * Z * XtoZ<br />
Y = ( 0.5 &#8211; Y_pixel / Yres ) * Z * YtoZ</p></blockquote>
<p>Question or comments? Post below&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://kenmankoff.com/2011/11/05/kinect-for-earth-scientists/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Astronaut Postcard</title>
		<link>http://kenmankoff.com/2011/11/03/astronaut-postcard</link>
		<comments>http://kenmankoff.com/2011/11/03/astronaut-postcard#comments</comments>
		<pubDate>Thu, 03 Nov 2011 14:50:44 +0000</pubDate>
		<dc:creator>Ken Mankoff</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[NASA]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Space]]></category>

		<guid isPermaLink="false">http://kenmankoff.com/?p=4150</guid>
		<description><![CDATA[I got a postcard from NASA. Presumably so did everyone who applied last time. I&#8217;ll apply again. Third times a charm? Statistically unlikely as the global governments (NASA, ESA, JAXA, Roscosmos, CSA) hire about 30 per decade. Not including the CNSA, I have no idea how many they hire. But, it is always fun to [...]]]></description>
			<content:encoded><![CDATA[<p>I got a postcard from NASA. Presumably so did everyone who applied last time. I&#8217;ll apply again. Third times a charm? Statistically unlikely as the global governments (<a href="http://astronauts.nasa.gov/">NASA</a>, <a href="http://www.esa.int/esaHS/" title="European Space Agency Human Space Flight">ESA</a>, <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Jaxa" title="Japan Aerospace Exploration Agency">JAXA</a>, <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Russian_Federal_Space_Agency" title="Russian Space Agency">Roscosmos</a>, <a href="http://www.asc-csa.gc.ca/eng/astronauts/" title="Canadian Space Agency">CSA</a>) hire about 30 per decade. Not including the <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Chinese_space_program" title="Chinese Space Agency">CNSA</a>, I have no idea how many they hire. But, it is always fun to try, and I doubt they hire anyone who doesn&#8217;t apply&#8230;</p>
<div id="attachment_4151" class="wp-caption aligncenter" style="width: 510px"><a href="http://kenmankoff.com/wordpress/wp-content/uploads/2011/11/front.png"><img src="http://kenmankoff.com/wordpress/wp-content/uploads/2011/11/front-500x375.png" alt="Astronaut Postcard (1/2)" title="Astronaut Postcard (1/2)" width="500" height="375" class="size-medium wp-image-4151" /></a><p class="wp-caption-text">Astronaut Postcard (1/2)</p></div>
<div id="attachment_4152" class="wp-caption aligncenter" style="width: 510px"><a href="http://kenmankoff.com/wordpress/wp-content/uploads/2011/11/back.png"><img src="http://kenmankoff.com/wordpress/wp-content/uploads/2011/11/back-500x375.png" alt="Astronaut Postcard (2/2)" title="Astronaut Postcard (2/2)" width="500" height="375" class="size-medium wp-image-4152" /></a><p class="wp-caption-text">Astronaut Postcard (2/2)</p></div>
]]></content:encoded>
			<wfw:commentRss>http://kenmankoff.com/2011/11/03/astronaut-postcard/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kinect Video from Microsoft</title>
		<link>http://kenmankoff.com/2011/10/31/kinect-video-from-microsoft</link>
		<comments>http://kenmankoff.com/2011/10/31/kinect-video-from-microsoft#comments</comments>
		<pubDate>Mon, 31 Oct 2011 17:53:56 +0000</pubDate>
		<dc:creator>Ken Mankoff</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Computers]]></category>
		<category><![CDATA[Kinect]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://kenmankoff.com/?p=4146</guid>
		<description><![CDATA[It has been almost one year since the Kinect was released, and there have been some amazing projects that use it. Microsoft appears to be embracing the hackers and highlights some of the non-video-game related uses in a new video:]]></description>
			<content:encoded><![CDATA[<p>It has been almost one year since the Kinect was released, and there have been some amazing projects that use it. Microsoft appears to be embracing the hackers and highlights some of the non-video-game related uses in a new video:</p>
<p><iframe src="http://www.youtube.com/embed/T_QLguHvACs" frameborder="0" width="560" height="315"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://kenmankoff.com/2011/10/31/kinect-video-from-microsoft/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fridge</title>
		<link>http://kenmankoff.com/2011/04/23/fridge</link>
		<comments>http://kenmankoff.com/2011/04/23/fridge#comments</comments>
		<pubDate>Sun, 24 Apr 2011 00:08:55 +0000</pubDate>
		<dc:creator>Ken Mankoff</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Visualization]]></category>
		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://kenmankoff.com/?p=4139</guid>
		<description><![CDATA[In which I record the temperature of my fridge and surrounding environment, and track events that take place involving the fridge, in order to answer the question, Can I unplug my fridge at night without ruining my food?]]></description>
			<content:encoded><![CDATA[<p>In which <a title="fridge temperature" href="http://kenmankoff.com/data/fridge/">I record the temperature of my fridge</a> and surrounding 	environment, and track events that take place involving the fridge, 	in order to answer the question,</p>
<blockquote><p>Can I unplug my fridge at night 	without ruining my food?</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://kenmankoff.com/2011/04/23/fridge/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

