<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4556324987649637814</id><updated>2012-01-28T20:58:52.290-08:00</updated><category term='thesis automatic projector calibration augmented reality'/><title type='text'>Procrastineering - Project blog for Johnny Chung Lee</title><subtitle type='html'>Project blog for Johnny Chung Lee</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>63</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-3566293128013373112</id><published>2011-11-30T02:57:00.000-08:00</published><updated>2011-11-30T22:37:56.426-08:00</updated><title type='text'>Computer Controlling a Syma Helicopter</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-X7mWdG5DJI8/TtX_eeZ6fGI/AAAAAAAACVU/OoYu3hWe9eI/s1600/IMG_9965.JPG" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="266" width="400" src="http://3.bp.blogspot.com/-X7mWdG5DJI8/TtX_eeZ6fGI/AAAAAAAACVU/OoYu3hWe9eI/s400/IMG_9965.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Recently, I've been playing with these inexpensive &lt;a href="http://www.amazon.com/Syma-S107-S107G-Helicopter-Colors/dp/8499000606"&gt;Syma Remote Control Helicopters&lt;/a&gt;.  At the time they were only $20 (but seemed have been price adjusted for the holidays).  They're quite robust to crashes and pretty easy to fly.  For $20, they're a blast. The other interesting thing about these copters is that the controller transmits commands using simple infrared LEDs rather than a proper radio. This simplicity makes it tauntingly appealing to try reverse engineering.  So tonight, I decided to do a little procrastineering and see if I could get my helicopter to become computer controlled. &lt;br /&gt;&lt;br /&gt;For hardware, I've been liking these &lt;a href="http://www.pjrc.com/teensy/"&gt;Teensy USB&lt;/a&gt; boards because they are cheap, small, versatile, and have a push-button boot loader that makes iteration very quick.  They can be easily configured to appear as a USB serial port and respond to commands. For the IR protocol, I started with &lt;a href="http://www.avergottini.com/2011/05/arduino-helicopter-infrared-controller.html"&gt;this web page&lt;/a&gt; which got the helicopter responding.  But, the behavior I was getting was very stuttery and would not be sufficient for reliable autonomous control. So, I decided to take a closer look with an oscilloscope to get accurate timing from the stock remote control. Some of my measured numbers were fairly different for the web tutorial I found. But, now the control is fairly solid.  So, here is the nitty gritty:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;IR Protocol:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;- IR signal is modulated at 38KHz.&lt;br /&gt;- Packet header is 2ms on then 2ms off&lt;br /&gt;- Packet payload is 4 bytes in big-endian order:&lt;br /&gt;1. yaw (0-127) default 63&lt;br /&gt;2. pitch (0-127) default 63&lt;br /&gt;3. throttle (0-127 for channel A, 128-255 for channel B) default 0 &lt;br /&gt;4. yaw correction (0-127) default 63&lt;br /&gt;- Packet ends with a stop '1' bit&lt;br /&gt;&lt;br /&gt;Format of a '1' is 320us on then 680us off (1000us total)&lt;br /&gt;Format of a '0' is 320us on then 280us off (600us total)&lt;br /&gt;&lt;br /&gt;Packets are sent from the stock controller every 120ms.  You  can try to send commands faster, but the helicopter may start to stutter as it misses messages.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://littlegreatideas.com/procrastineering/files/helicopter_control.zip"&gt;Download Teensy AVR Code&lt;/a&gt;&lt;/b&gt; (updated 11/30/2011)&lt;br /&gt;&lt;br /&gt;The code is available at the above link.  It's expecting 5 byte packets over the serial port at 9600 baud.  The first byte of each packet must be 255, followed by yaw, pitch, throttle, and yaw correction (each ranging from 0-127).  It will return a 'k' if 5 bytes are properly read.  If it doesn't receive any serial data for 300ms, it will stop transmitting the IR signal. &lt;br /&gt;&lt;br /&gt;Unfortunately, I can't help you write a program to communicate over serial since that will depend on your OS (Windows, Mac, Linux) and varies by language as well.  But, it is fairly easy with lots of web tutorials.  The harder challenge will be figuring out how to update the 3 analog values to keep it from crashing. =o) The most likely candidate is to use a camera (probably with IR markers) to monitor the position of the helicopter. But, getting that to work well is definitely a project unto itself.&lt;br /&gt;&lt;br /&gt;Good Luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-3566293128013373112?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/3566293128013373112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=3566293128013373112' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/3566293128013373112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/3566293128013373112'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2011/11/computer-controlling-syma-helicopter.html' title='Computer Controlling a Syma Helicopter'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-X7mWdG5DJI8/TtX_eeZ6fGI/AAAAAAAACVU/OoYu3hWe9eI/s72-c/IMG_9965.JPG' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-2036566596339037109</id><published>2011-11-22T15:45:00.000-08:00</published><updated>2011-11-22T15:45:21.653-08:00</updated><title type='text'>Shredder Challenge - Puzzle 2 done! Onto Puzzle 3</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-WKlw4cuqD-k/Tsww9gokPCI/AAAAAAAACUk/Nr72ArVfaZU/s1600/Screenshot.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="400" width="355" src="http://1.bp.blogspot.com/-WKlw4cuqD-k/Tsww9gokPCI/AAAAAAAACUk/Nr72ArVfaZU/s400/Screenshot.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Puzzle 2 is now done!  &lt;a href="http://unshred.me/3"&gt;Puzzle 3 is a drawing&lt;/a&gt; (not text).  &lt;br /&gt;&lt;br /&gt;As we get to more complicated puzzles, it's clear that loading, rendering, and UI limitations will become a bigger and bigger issue. My colleague, Dan Maynes-Aminzade ("monzy" for short) is doing his best to figure out ways to handle that.  There are a lot of not-ideal solutions.&lt;br /&gt;&lt;br /&gt;It's also clear that more computer aided matching will be necessary to maintain progress.  Here are zip files for the pieces of problem 4 and problem 5, if you want to try your hand at analyzing them directly.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://littlegreatideas.com/johnnylee/shredder/pieces_puzzle4.zip"&gt;Puzzle 4 pieces&lt;/a&gt;&lt;br /&gt;&lt;a href="http://littlegreatideas.com/johnnylee/shredder/pieces_puzzle5.zip"&gt;Puzzle 5 pieces&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you come up with good ideas that work, post them in the comments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-2036566596339037109?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/2036566596339037109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=2036566596339037109' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/2036566596339037109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/2036566596339037109'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2011/11/shredder-challenge-puzzle-2-done-onto.html' title='Shredder Challenge - Puzzle 2 done! Onto Puzzle 3'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-WKlw4cuqD-k/Tsww9gokPCI/AAAAAAAACUk/Nr72ArVfaZU/s72-c/Screenshot.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-6244297387632235828</id><published>2011-11-22T07:48:00.000-08:00</published><updated>2011-11-22T08:16:31.744-08:00</updated><title type='text'>Puzzle 1 done overnight!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-3vsOk7PnKlU/TsvDsPs-uOI/AAAAAAAACUM/xPcjqVLBjz8/s1600/Screenshot-1.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="400" width="263" src="http://4.bp.blogspot.com/-3vsOk7PnKlU/TsvDsPs-uOI/AAAAAAAACUM/xPcjqVLBjz8/s400/Screenshot-1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Puzzle 1 was completed overnight! Very cool. They definitely get harder.  But, the crowd helped UCSD complete puzzles 2 and 3 within a couple of days.  So, we could easily catch up.&lt;br /&gt;&lt;br /&gt;On to &lt;a href="http://unshred.me/2"&gt;puzzle 2&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-6244297387632235828?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/6244297387632235828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=6244297387632235828' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/6244297387632235828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/6244297387632235828'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2011/11/puzzle-1-done.html' title='Puzzle 1 done overnight!'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-3vsOk7PnKlU/TsvDsPs-uOI/AAAAAAAACUM/xPcjqVLBjz8/s72-c/Screenshot-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-7276898434872414598</id><published>2011-11-21T17:23:00.000-08:00</published><updated>2011-11-21T17:31:56.086-08:00</updated><title type='text'>DARPA Shredder Challenge - you could win $50,000</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://unshred.me/1" target=new imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="247" width="400" src="http://3.bp.blogspot.com/-wxykcyBt1SE/Tsr5bLOmOWI/AAAAAAAACUA/Ytf0HCM7jOI/s400/Screenshot.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;On October 27th, DARPA announced their &lt;a href="http://www.shredderchallenge.com/"&gt;Shredder Challenge&lt;/a&gt;.  Try to unshred 5 documents for $50,000.  There has been a few notable efforts such as UCSD's &lt;a href="http://shredder-challenge.ucsd.edu/login.php"&gt;web based approach&lt;/a&gt;. But, that page has recently been compromised due to malicious users. &lt;br /&gt;&lt;br /&gt;With the help of a few colleagues, we had also created a web-based version very early on. But, it was missing some of the login engineering and UI of the UCSD effort.  So, we never made it public.  But rather than attempt to build a full on competitor, we've decided to open up the tool we built for anyone to try to win the contest themselves!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.unshred.me/1"&gt;http://www.unshred.me/1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can create a private branch of each puzzle if you want to try to give it a go alone, or you can contribute to the main public copy of the puzzle.  If our image analysis tinkering goes well, we may add some tools to help make finding matches easier.&lt;br /&gt;&lt;br /&gt;NOTE: The deadline for submitting answers to DARPA is December 4, 2011 (11:59PM EST)!  &lt;b&gt;Only 13 days left&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;GO!&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-7276898434872414598?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/7276898434872414598/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=7276898434872414598' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/7276898434872414598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/7276898434872414598'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2011/11/darpa-shredder-challenge-you-could-win.html' title='DARPA Shredder Challenge - you could win $50,000'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-wxykcyBt1SE/Tsr5bLOmOWI/AAAAAAAACUA/Ytf0HCM7jOI/s72-c/Screenshot.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-8830106951201672603</id><published>2011-11-15T08:36:00.000-08:00</published><updated>2011-11-15T08:45:02.483-08:00</updated><title type='text'>Technology as a story</title><content type='html'>Generally, I consider myself a technologist.  I work in technology, I choose environments that have people who are excellent at it.  New technologies make the world move forward.  If it is shared broadly enough, it is impossible to "un-invent" a technology and thus the world has been irrevocably changed, even if just by a little bit.&lt;br /&gt;&lt;br /&gt;However, what saddens me is when I encounter technologists with the brilliance to create new and wonderful things, but lack a sense of what is beautiful to people. Technology is most often known for being ugly and unpleasant to use, because technologists most often build technology for other technologists.&lt;br /&gt;&lt;br /&gt;But to touch millions of people, you have to tell a story - a story that they can believe in, a story that can inspire them. Technology is a tool by which new stories can be crafted. They are not the end product unto themselves.  All too often, I find engineers and researchers who are eager to build the technology without understanding the story that goes around about why people should care, why what they built can be inspiring rather than just enabling.  &lt;br /&gt;&lt;br /&gt;It is not a skill you learn at school.  I have encountered people who understand this, and others who don't.  I can't say that I have mastered this ability.  However, I can at least respect how powerful it can be and strive to be better at it.&lt;br /&gt;&lt;br /&gt;As an engineer, as a technologist, as a researcher, or inventor... I encourage you understand the power of stories.  A story isn't merely the sequence of events in a book or film.  It can be a story about you, and how your life or the lives of the people around you could be a bit different... or how the world could be different than it is today.&lt;br /&gt;&lt;br /&gt;It is inspiring to see what a talented artist can do with the very simplest of tools.  I recently came across the following video which I feel exemplifies this idea. &lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;iframe width="420" height="315" src="http://www.youtube.com/embed/i1iiiEgqgT4" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;When you build something or design something, take a moment to imagine the stories than can be told around what you create and to share that story with others.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-8830106951201672603?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/8830106951201672603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=8830106951201672603' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/8830106951201672603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/8830106951201672603'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2011/11/technology-as-story.html' title='Technology as a story'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/i1iiiEgqgT4/default.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-7230325894376369847</id><published>2011-11-01T02:14:00.000-07:00</published><updated>2011-11-10T17:21:44.501-08:00</updated><title type='text'>The Kinect Effect</title><content type='html'>&lt;iframe width="450" height="315" src="http://www.youtube.com/embed/T_QLguHvACs" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;This is hands down, the best Microsoft commercial I have ever seen.  It has soul. It has spirit. It has open optimism about what a company and creative enthusiasts can do together. They are even showcasing kinect projects on the official website &lt;a href="http://kinect.com"&gt;Kinect.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Bravo. &lt;br /&gt;&lt;br /&gt;My hats off the the tens of thousands of creative developers who have explored the wide ranging uses of Kinect and, of course, to Microsoft &amp; Xbox for seeing that it is a very positive thing to embrace.  Yes, Kinect is a product that ultimately must make money through games and applications.  But, it can also have a remarkably positive impact on our culture.&lt;br /&gt;&lt;br /&gt;Best &lt;a href="http://www.adafruit.com/blog/2011/02/21/johhny-lee-was-behind-the-kinect-bounty-contest-with-a-little-help-from-us/"&gt;$3000&lt;/a&gt; I ever spent.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-7230325894376369847?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/7230325894376369847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=7230325894376369847' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/7230325894376369847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/7230325894376369847'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2011/11/kinect-effect.html' title='The Kinect Effect'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/T_QLguHvACs/default.jpg' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-729679712981200098</id><published>2011-08-12T12:06:00.000-07:00</published><updated>2011-10-25T18:17:15.424-07:00</updated><title type='text'>Giving Computers a Human-Scale Understanding of Space</title><content type='html'>Computer vision and Human-Computer Interaction are just about to hit their stride.  Within the past 4 years, the real-time/robotics computer vision research community has made leaps and bounds - much of it out of the &lt;a href="http://www.robots.ox.ac.uk/~lav/"&gt;Active Vision Group at Oxford&lt;/a&gt; and the &lt;a href="http://www2.imperial.ac.uk/robotvision/index.php"&gt;Robot Vision Group at the Imperial College of London&lt;/a&gt;. One of the first pieces of work that really started to impress was PTAM (Parallel Tracking and Mapping) by Georg Klein:&lt;br /&gt;&lt;br /&gt;&lt;iframe width="425" height="349" src="http://www.youtube.com/embed/Y9HMn6bd-v8" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Full up markerless augmented reality had been a long time dream of many.  But, few people knew actually how to do it.  PTAM was the first system that showed promise that it could handle the rough conditions of real-time motion of a handheld camera.&lt;br /&gt;&lt;br /&gt;Also from Oxford, Gabe Sibley and Christopher Mei started demonstrating RSLAM (relative simultaneous localization and mapping) which provides fairly robust real-time tracking over large spaces.  The following video uses a head-mounted stereo camera rig:&lt;br /&gt;&lt;br /&gt;&lt;iframe width="425" height="349" src="http://www.youtube.com/embed/M-WYOMqzicw" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Just in the past couple weeks, some new projects done with the help of Richard Newcomb show what happens when you combine this tracking ability with either a depth camera like Kinect, or try to do traditional reconstruction from the RGB.  These projects are called KinectFusion (a Microsoft Research Cambridge project) and DTAM (Dense tracking and mapping) respectively.&lt;br /&gt;&lt;br /&gt;&lt;iframe width="425" height="300" src="http://www.youtube.com/embed/RSh8Voanp3c" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;The following video uses a normal RGB camera (not a Kinect camera):&lt;br /&gt;&lt;iframe width="425" height="300" src="http://www.youtube.com/embed/Df9WhgibCQA" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;It's important to remember that no additional external tracking system is used, only the information coming from the camera.  Also, it's worth pointing out that the 6DOF position of the camera is recovered precisely.  So, what you can do with this data reaches well beyond AR games. It gives computers a human-scale understanding of space.  &lt;br /&gt;&lt;br /&gt;This is pretty exciting stuff. It'll take a little while before these algorithms become robust enough to graduate from a lab demo to a major commercial product.  I usually like to say that "people will beat the crap out of whatever you make, and quickly gravitate to the failure cases". But as this work evolves and people begin build useful applications/software on top, it'll be an exciting next few years.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-729679712981200098?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/729679712981200098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=729679712981200098' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/729679712981200098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/729679712981200098'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2011/08/handheld-computer-vision-hci.html' title='Giving Computers a Human-Scale Understanding of Space'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/Y9HMn6bd-v8/default.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-8856784043640259841</id><published>2011-08-09T14:03:00.000-07:00</published><updated>2011-08-09T14:04:44.829-07:00</updated><title type='text'>UIST 2011 Student Innovation Contest</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.acm.org/uist/uist2011/call/mouse-wide.jpeg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" width="480" src="http://www.acm.org/uist/uist2011/call/mouse-wide.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;UIST 2011 is just a couple months away, and Microsoft Hardware is generously providing the toys again this year.  This time it's a touch mouse that provides a full capacitive touch image (which is fairly unique). If you are a student, try to enter, win some prizes and get to meet a bunch of other people interested in interface technology.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.acm.org/uist/uist2011/call/contest.html"&gt;Official Contest Page&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe width="480" height="349" src="http://www.youtube.com/embed/r8BiPnOnHpU" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-8856784043640259841?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/8856784043640259841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=8856784043640259841' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/8856784043640259841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/8856784043640259841'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2011/08/uist-2011-student-innovation-contest.html' title='UIST 2011 Student Innovation Contest'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/r8BiPnOnHpU/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-3062977340716753932</id><published>2011-07-28T03:06:00.000-07:00</published><updated>2011-07-28T03:06:58.505-07:00</updated><title type='text'>Myth of the Dying Mouse</title><content type='html'>It's definitely not the most polished delivery I've made (ignite talks don't let you control your slides, which is very unsettling for me).  But, here's a 5 minute ignite talk I recently gave entitled "The mouse and keyboard are NOT going away, and there's NO SUCH THING as convergence".&lt;br /&gt;&lt;br /&gt;&lt;iframe width="480" height="349" src="http://www.youtube.com/embed/kuhVfuhCcG4" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-3062977340716753932?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/3062977340716753932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=3062977340716753932' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/3062977340716753932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/3062977340716753932'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2011/07/myth-of-dying-mouse.html' title='Myth of the Dying Mouse'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/kuhVfuhCcG4/default.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-3569913992786122966</id><published>2011-05-06T13:17:00.000-07:00</published><updated>2011-05-17T16:49:29.815-07:00</updated><title type='text'>Kinect Projects - The First 5 Months</title><content type='html'>&lt;center&gt;&lt;iframe width="480" height="349" src="http://www.youtube.com/embed/8nlk6HhDpDw" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/center&gt;&lt;br /&gt;Since it's release in November of 2010, there have been thousands of projects use the Kinect camera from independent developers, artists, and researchers.  This is just a short montage of a few that I have enjoyed seeing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-3569913992786122966?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/3569913992786122966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=3569913992786122966' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/3569913992786122966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/3569913992786122966'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2011/05/kinect-projects-first-5-months.html' title='Kinect Projects - The First 5 Months'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/8nlk6HhDpDw/default.jpg' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-2520437486396666558</id><published>2011-05-03T22:42:00.000-07:00</published><updated>2011-05-03T22:42:14.638-07:00</updated><title type='text'>It Gets Better</title><content type='html'>&lt;iframe width="480" height="300" src="http://www.youtube.com/embed/7skPnJOZYdA" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-2520437486396666558?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/2520437486396666558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=2520437486396666558' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/2520437486396666558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/2520437486396666558'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2011/05/it-gets-better.html' title='It Gets Better'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/7skPnJOZYdA/default.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-2145114306363653995</id><published>2011-04-14T22:40:00.000-07:00</published><updated>2011-04-14T22:49:20.056-07:00</updated><title type='text'>Why your arms don't suck.</title><content type='html'>Oooooooo..... me likey:&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" width="480" height="320" src="http://www.youtube.com/embed/Cjo4AsTVh0s" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;It's rare I see a product demo video and say, "Man, I wish my life would be longer so I can see the amazing future we will have."  While I am fairly certain the yet un-purchasable robot above will be the cost of a small house, it is hard to contain my techno-lust. Having worked with a 6DOF robot before, they can be deceptively hard to program and without running a manufacturing line - the immediate utility of owning such a device is debatable.  However, if these do end up being adopted by some manufactures, it does potentially reduce both the time to design/produce and the cost to manufacture consumer products.  While this means the already blinding rate which new products are released will continue to accelerate, it also means that the bar for producing mass manufactured devices will also come down.  As companies adopt re-programmable manufacturing/assembly tools, creating a new product may eventually be a matter of loading new files into all the machines on the floor.  I think that's an exciting future and perhaps one day the "Print" button on your computer may take on a much more powerful meaning.&lt;br /&gt;&lt;br /&gt;A small educational comment about the arms of this robot. They appear to be 7 degree-of-freedom arms... which is actually the same number of degrees of freedom that your arms have.  If you grab a pole, or place your hand on the wall... without moving your shoulder (or your hand), you still have some freedom over the position of your elbow.  But why do we need 7 when objects in the world only have 6 degrees of freedom (x,y,z, yaw, pitch, and roll)?  The 1 extra degree of freedom is what allows us to reach around obstacles.  If we only had 6 degrees of freedom, there would be only 1 way to reach out to pick up an object. So any obstruction along that path would prevent us from getting our food or some tool we needed to survive.  Arms that contain 7 degrees-of-freedom have a dramatically larger operating range increasing their utility in uncooperative environments like the real world. For some reason, I find it quite satisfying that there is a mathematical basis for the evolution of our arms.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-2145114306363653995?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/2145114306363653995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=2145114306363653995' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/2145114306363653995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/2145114306363653995'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2011/04/why-your-arms-dont-suck.html' title='Why your arms don&apos;t suck.'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/Cjo4AsTVh0s/default.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-9062508283011996333</id><published>2011-03-17T04:56:00.000-07:00</published><updated>2011-03-17T05:23:08.202-07:00</updated><title type='text'>The re-emergence of DIY vs Big Organizations</title><content type='html'>Wow! Limor (of &lt;a href="http://adafruit.com/"&gt;Adafruit Industries&lt;/a&gt;) is on the cover of Wired.  Wicked.  Congrats, I am filled with envy. =o)  Even if she does look a little bit Photoshop'd. =o/  But, nice homage!&lt;br /&gt;&lt;table&gt;&lt;td&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.adafruit.com/blog/2011/03/16/thank-you-makers/" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="233" src="http://4.bp.blogspot.com/-WTdeYzsx3fc/TYHUVu4uKKI/AAAAAAAAAa4/CuzsXEOKqpI/s320/wired-20110316-074410.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-44hJnXcRUXc/TYH2bRZQ1YI/AAAAAAAAAbA/J24JR3JBrWc/s1600/1099871.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="320" width="228" src="http://1.bp.blogspot.com/-44hJnXcRUXc/TYH2bRZQ1YI/AAAAAAAAAbA/J24JR3JBrWc/s320/1099871.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;&lt;/table&gt;It's great to see someone from the DIY community get such recognition. I haven't read the issue yet, but extrapolating from some of the phrases on the cover, I imagine it is a celebration of the re-emergence of independent tinkering.&lt;br /&gt;&lt;br /&gt;I have actually put quite a bit of thought toward this topic having recently jumped back and forth between the &lt;a href="http://johnnylee.net/projects/wii/"&gt;DIY hobby culture&lt;/a&gt;, &lt;a href="http://johnnylee.net/academic/"&gt;serious academic research&lt;/a&gt;, and &lt;a href="http://www.xbox.com/en-US/kinect"&gt;massively funded commercial product development&lt;/a&gt;.  I've had the fortune to observe people trying to make new and interesting things at extremely different scales...from $100 budgets to $100,000,000 budgets. &lt;br /&gt;&lt;br /&gt;One thing that I find very consistent: good ideas come from anywhere.  The biggest factor in predicting where good work will come from is "how much does this person actually care about what they are working on?"  In fact, big budgets and a sense of entitlement can actually hinder the emergence of interesting ideas.  Having the *expectation* to do really great work can lead people or organizations to develop tunnel vision on "big" ideas, and miss out on smaller ideas that end up having a lot of impact or dismiss seemingly silly approaches that actually end up working.&lt;br /&gt;&lt;br /&gt;There's a really great &lt;a href="http://www.youtube.com/watch?v=qp0HIF3SfI4"&gt;TEDx talk by Simon Sinek&lt;/a&gt; that touches on this. He actually brings up a number of great points in his talk, but the one I want to highlight here is his anecdote about Samuel Pierpont Langley vs. the Wright Brothers in pursuit of powered flight. Langley represented the exceptionally well funded professional research organization, and the Wright Brothers were the scrappy passionate pair of DIY'ers. Today, we now know the Wright brothers as the ones who created the first airplane and most have never heard of Langley. Big investment is not a very strong predictor of valuable output. But, an individual's willingness to continue working on the same problem with very little to no pay... is a good predictor.&lt;br /&gt;&lt;br /&gt;The great thing about the hacker community is that, generally, most of them fall into the later category.  Independent developers and hobbists care enough to spend their own money to work on the projects they believe in.  As a result, I'm finding that the delta in the quality of ideas from a well funded research group, and the independent community (in aggregate) is getting smaller and smaller by the month.  Increasingly, the best "hobby projects" surpass the quality level of "true research" work in the same area. This startling lack of contrast (or sometimes inversion) becomes laughably evident when I am reviewing academic/scientific work submitted for publication on a project that uses Kinect, and then the newest Kinect hack pops up on Engadget that simply beats it hands down.&lt;br /&gt;&lt;br /&gt;Now, I could simply make a kurmudgenly claim that the quality of professional/research/academic work has gone down.  But, I actually don't think that's true.  In my opinion, what is happening is that the quality of independent projects are getting better.... fast.  Which, I think resonates with this observation of a "DIY Revolution".&lt;br /&gt;&lt;br /&gt;But, why is this re-emergence happening now?  Wasn't is just a few years ago people were lamenting about how "black boxed" consumer products had gotten, and that the good old days where you could open up a product and futz with the innards in a meaningful way were gone?  What's changed to cause this apparent re-birth?&lt;br /&gt;&lt;br /&gt;I have a theory.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;My Theory about the Re-Emergence of the DIY community:&lt;/b&gt;&lt;br /&gt;In the 90's and early 2000's, Moore's law was absolute king. The primary deciding factor in purchasing an electronic product was simply how fast it was. This meant an intense focus on tighter and tighter integration of components and all the functionality was disappearing into tiny little black chips that could not be accessed nor modified by mere mortals.  But now, people barely talk about raw "megahertz" or "megabytes" anymore.  General purpose computers have gotten "fast enough".  We now want specialized kinds of computers: one that fits in our pocket, plays games in 3D, one shaped like a tablet, one that goes in our car, one that can go under water, or get strapped your snowboard and not break.  We have reached a &lt;b&gt;surplus in computing power&lt;/b&gt; that makes it affordable to build (and buy) devices for smaller and smaller needs.  Our imagination for what to do with computing has simply not kept up with Moore's Law. So, we find more uses for more modest amounts of computing power. But, what does this have to do with the DIY community?&lt;br /&gt;&lt;br /&gt;A byproduct of having such an immense surplus in computing, is that the tools you can buy within a hobbist budget have also gotten exponentially better in just the past 3-4 years, while the improvement in professional tools have been more modest.  The difference in capability between the electronics workbench of a professional engineer and a hobby engineer is getting really really small. Kinect is an overwhelming example of this.  The cost of a high quality depth camera dropped nearly 2 orders of magnitude overnight.  As a result, hobbists are out pacing many professionals in the same domain simply due to sheer parallelism.  Perhaps not as dramatically, but this is happening with nearly all genres of electronic and scientific equipment.  One day, maybe we'll see backyard DIY electron beam drilling for nano-machining.&lt;br /&gt;&lt;br /&gt;When it is no longer about who has the most resources, it's about who has the best ideas.  Then, it becomes a pure numbers game: &lt;br /&gt;&lt;br /&gt;Take 10,000 professional engineers vs. 1 million hobbists with roughly equivalent tools. Which group will make progress faster?  Now, consider that you have to pay the 10,000 engineers $100K/year to motivate them work, and the 1 million hobbists are working for the love of it. Does that change your answer? Even if it doesn't, you have to concede that there does exist a ratio which will make the output of these two groups equal.  It's merely a matter of time.&lt;br /&gt;&lt;br /&gt;If you follow me through this argument, which I won't claim to be bullet proof but it explains the trends we are observing quite nicely, then this has an interesting implication on organizations that are currently funding big research groups.  When it's simply a matter of who has the best ideas, it's tough to try to employ enough people to get good coverage.  You could try to spend a lot of energy on trying to find the "best" people, but that's about as challenging as predicting the stock market.  Some inventors simply go "dry" of good ideas and end up not providing a good lifetime return on investment (I fully expect this to happen to me someday.  I just hope it happens later rather than sooner.) &lt;br /&gt;&lt;br /&gt;So to me, this suggest 3 options for big exploratory organizations:&lt;br /&gt;&lt;br /&gt;1. Start tackling more resource intensive problems - things that fundamentally cannot be done today for a few thousand dollars, but at some basic level requires materials, tools, energy, computation, space, manpower that is impossible to obtain at a hobby level. The LHC and space programs are good examples of this.  Even if the end goal may be of debatable near term economic value, there is a high probability that unexpected derivative technologies/projects will bring commercial/educational benefits elsewhere.&lt;br /&gt;&lt;br /&gt;2. Empower everyone within your organization to do exploratory work.  The tools are cheap and "research groups" have no monopoly on good ideas. It's hard to know where lightning will strike, so make sure you encourage it anywhere and hope you haven't missed a spot.&lt;br /&gt;&lt;br /&gt;3. Partner with the outside developer community.  There is plenty of precedence where using the resources you have to channel the creative power of the masses through the platforms you control can bring a tremendous amount of value if done in an organized manner. It is the rocket fuel that powers companies like Facebook, Twitter, and Groupon to go from non-existence to dominating entities in less than 3 years.  The same can absolutely happen with traditional physical electronics and other consumer goods.  It simply requires treating your customers as potential partners, rather than assuming they are all potential predators.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-9062508283011996333?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/9062508283011996333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=9062508283011996333' title='21 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/9062508283011996333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/9062508283011996333'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2011/03/re-emergence-of-diy-vs-big.html' title='The re-emergence of DIY vs Big Organizations'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-WTdeYzsx3fc/TYHUVu4uKKI/AAAAAAAAAa4/CuzsXEOKqpI/s72-c/wired-20110316-074410.jpg' height='72' width='72'/><thr:total>21</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-1679862585064906711</id><published>2011-02-26T01:26:00.000-08:00</published><updated>2011-02-26T01:58:27.685-08:00</updated><title type='text'>Display and Interaction work at Microsoft Applied Sciences</title><content type='html'>&lt;p$1&gt;Yay, it's great to see my old group &lt;a href="http://www.microsoft.com/appliedsciences/"&gt;Microsoft Applied&amp;nbsp;Sciences&lt;/a&gt; in the &lt;a href="http://www.engadget.com/2011/02/25/microsoft-research-shows-off-next-generation-gesture-interfaces/"&gt;press&lt;/a&gt;!&amp;nbsp; Lots of great display and interaction work being done there.&amp;nbsp;&amp;nbsp;Fantastic mix of software, hardware, and optics people.&amp;nbsp;Congrats! &lt;br /&gt;&lt;br /&gt;&lt;p$1&gt;&lt;iframe title="YouTube video player" width="640" height="390" src="http://www.youtube.com/embed/P3-vxoTrXjo" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;As it becomes increasingly cost effective to manufacture a more diverse set of computing form factors, exploring new ways of providing input to a computer and sending output to a user will become an essential part of developing new genres of computing products.  The time when raw computing horsepower was the key differentiator passed us several years ago, and the rate of device specialization has shot up dramatically. Less computing power is fine, if it is where you need it when you need it in the form you need it. As a result, you likely see the speed at which wild interface technology research moves into to product also accelerate.&lt;br /&gt;&lt;br /&gt;Consequently, if you are a young engineering student.  There will be a steady stream of good jobs for people who like to write software for new kinds of input/output devices. =o)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-1679862585064906711?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/1679862585064906711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=1679862585064906711' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/1679862585064906711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/1679862585064906711'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2011/02/display-and-interaction-work-at.html' title='Display and Interaction work at Microsoft Applied Sciences'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/P3-vxoTrXjo/default.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-649357866676903000</id><published>2011-02-21T15:06:00.000-08:00</published><updated>2011-02-25T17:07:32.733-08:00</updated><title type='text'>Windows Drivers for Kinect, Finally!</title><content type='html'>Yay! This makes me happy.&amp;nbsp; Microsoft &lt;a href="http://blogs.technet.com/b/microsoft_blog/archive/2011/02/21/kinect-for-windows-sdk-to-arrive-spring-2011.aspx"&gt;officially announces&lt;/a&gt; support for Windows Drivers&amp;nbsp;for the Kinect Camera as a free download in the Spring.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-xuMxpdVFsKs/TWLmCxkx5EI/AAAAAAAAAag/puxXDxN4uJU/s1600/microsoft-kinect-windows-1295400536.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" j6="true" src="http://2.bp.blogspot.com/-xuMxpdVFsKs/TWLmCxkx5EI/AAAAAAAAAag/puxXDxN4uJU/s320/microsoft-kinect-windows-1295400536.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;This was something I was pushing really hard on in the last few months before my departure, and I am glad to see the efforts of colleagues in the research wing of Microsoft (MSR) and the XBox engineering team carry this to fruition.&amp;nbsp; It's unfortunate this couldn't have happened closer to launch day. But, perhaps it took all the &lt;a href="http://www.google.com/search?q=kinect+projects"&gt;enthusiasm of the independent developer community&lt;/a&gt;&amp;nbsp;to convince the division to do this.&amp;nbsp;It certainly would have been nice&amp;nbsp;if&amp;nbsp;all this neat work was done on Microsoft software platforms.&lt;br /&gt;&lt;br /&gt;I actually have a secret to share on this topic. When my internal efforts for a driver stalled, I decided to approach AdaFruit to put on the &lt;a href="http://www.adafruit.com/blog/2010/11/04/the-open-kinect-project-the-ok-prize-get-1000-bounty-for-kinect-for-xbox-360-open-source-drivers/"&gt;Open Kinect contest&lt;/a&gt;.&amp;nbsp;&amp;nbsp;For obvious reasons, I couldn't run the contest myself. Besides, Phil and Limor did a phenomenal job, much better than I could have done. Without a doubt, the contest had a significant impact in raising awareness about the potential for Kinect beyond Xbox gaming both inside and outside the company.&amp;nbsp;Best $3000 I ever spent.&lt;br /&gt;&lt;br /&gt;In my opinion, all the press coverage around the independent projects brought a lot of additional positive attention to the product launch. &amp;nbsp;That unto itself became the topic of&amp;nbsp;&lt;a href="http://www.bbc.co.uk/news/technology-11742236"&gt;international&lt;/a&gt; &lt;a href="http://www.nytimes.com/2010/11/22/technology/22hack.html"&gt;news&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;But to take this even further, it would be awesome if Microsoft went so far as to hold a small&amp;nbsp;conference to actually showcase people doing interesting projects with Kinect.&amp;nbsp; It is a&amp;nbsp;really&amp;nbsp;great device, and such an outreach program&amp;nbsp;would give Microsoft an opportunity to engage with very enthusiastic partners to&amp;nbsp;potentially build new applications around it both inside and outside of gaming.&amp;nbsp; At the very least, it would be&amp;nbsp;a cheap way to recruit potential hires.&lt;br /&gt;&lt;br /&gt;There are lots of smart people outside of Microsoft that would like to build interesting stuff with it. Most of it probably won't be a&amp;nbsp;"Microsoft-scale" business initially, but worth enabling and incubating in aggregate.&amp;nbsp; Though, a large portion of the expert community is already using the Kinect camera in their own projects on just about every OS and every develoment tool in existence. &amp;nbsp;So, Microsoft will need to&amp;nbsp;give researchers and independent developers&amp;nbsp;a reason to go back to thier platform - be it opportunities to engage with people at Microsoft/MSR, other Kinect developers,&amp;nbsp;or&amp;nbsp;opportunities to share thier work though&amp;nbsp;larger distrubtion channels&amp;nbsp;such&amp;nbsp;as XNA, app stores,&amp;nbsp;or XBox downloadable games. &amp;nbsp;&amp;nbsp;We have just seen the beginning of what can be done with&amp;nbsp;low-cost depth cameras.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-649357866676903000?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/649357866676903000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=649357866676903000' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/649357866676903000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/649357866676903000'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2011/02/windows-drivers-for-kinect.html' title='Windows Drivers for Kinect, Finally!'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-xuMxpdVFsKs/TWLmCxkx5EI/AAAAAAAAAag/puxXDxN4uJU/s72-c/microsoft-kinect-windows-1295400536.jpg' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-6363897007548840392</id><published>2011-02-09T01:43:00.000-08:00</published><updated>2011-02-11T20:56:00.728-08:00</updated><title type='text'>Low-Cost Video Chat Robot</title><content type='html'>Since I relocated down to Mountain View, I wanted a good way to keep in touch with my fiance who is still back in Seattle.  So, I decided to mount an old netbook I had on top of an iRobot Create to create a video chat robot that I could use to drive around the house remotely. Since it was a good procrastineering project, I decided to document it here.&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="390" src="http://www.youtube.com/embed/9LNS9CivO34" title="YouTube video player" width="540"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;There are two major components to the project: the iRobot Create which costs around $250 (incl. battery, charger, and USB serial cable) and the netbook which I got for around $250 as well.  At $500, this is a pretty good deal considering many commerical ones go for several thousand dollars.  The software was written in C# with Visual Studio Express 2010 and only tested on Windows 7 with the "Works on my machine" certifcation. =o)  I'm sure there are TONs of problems with it, but the source is provided.  So, feel free to try to improve it.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; Download Software:&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;a href="http://littlegreatideas.com/procrastineering/files/videochatrobot/VideoChatRobot_1.zip"&gt;VideoChatRobot v0.1&lt;/a&gt; (posted 2/9/2011)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;a href="http://littlegreatideas.com/procrastineering/files/videochatrobot/VideoChatRobot_v02.zip"&gt;VideoChatRobot v0.2&lt;/a&gt; (posted 2/11/2011)&lt;br /&gt;&lt;br /&gt;Included are the executable, C# source, and two PDFs: one describing installation and usage of the control software, the other more information about modifying the charging station.&lt;br /&gt;&lt;br /&gt;The software does a few nice things like try to setup UPnP router port forwarding automatically, queries the external IP needed to make a connection over the open internet, maintains a network heartbeat which stops the robot if the connection is lost, a control password, auto-connect on launch options, and even mediates the maximum acceleration/deceleration of the motors so it doesn't jerk so much or fall over.&lt;br /&gt;&lt;br /&gt;The UPnP port forwarding is far from perfect is not well tested at all.  If it works for you, consider yourself lucky.  Otherwise, ask a friend how to set up port forwarding to enable remote control over the internet.&lt;br /&gt;&lt;br /&gt;Once you have all the parts: the netbook, the robot, the serial cable, the software. You can probably be up an running within 5 minutes. Assembly is merely plugging cables together. &amp;nbsp;Mounting the netbook can be done with velcro or tape. &amp;nbsp;Building the rise stand is more challenging, but entirely optional. &amp;nbsp;I happen to have access to a laser cutter to make my clear plastic stand, but you can probably make something adequate out of wood.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Optional: Modifying the Charging Station&lt;/strong&gt;&lt;br /&gt;Probably one of the more interesting parts of this project from a procrastineering standpoint is the modifcation to the docking station so that it would charge something else in addition to the robot base.&lt;br /&gt;&lt;br /&gt;What I did is admittedly pretty crude and arguably rather unsafe. So, this is HIGHLY NOT RECOMMENDED unless you are very comfortable working with high voltage electricity and accept all the personal risks of doing so and potential risks to others. This is provided for informational purposes only and I am not responsible for any damages or harm resulting from the use of this material. Working with household power lines can be very dangerous posing both potential &lt;b&gt;electrocution&lt;/b&gt; and &lt;b&gt;fire&lt;/b&gt; risk. This is also unquestionably a warranty voiding activity. DO NOT ATTEMPT THIS without appropriate supervision or expertise.&lt;br /&gt;&lt;br /&gt;Now that I've hopefully scared you away from doing this... what exactly did I do? A high level picture is shown here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_CPucYiWYXAQ/TVJ2dqpKlnI/AAAAAAAAAaU/mKAtHeWb-yE/s1600/power%2Bmodifications.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5571645941045958258" src="http://1.bp.blogspot.com/_CPucYiWYXAQ/TVJ2dqpKlnI/AAAAAAAAAaU/mKAtHeWb-yE/s320/power%2Bmodifications.jpg" style="cursor: hand; cursor: pointer; display: block; height: 276px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;The PDF document in the download describes changes in more detail.  But, I had a lot of trouble trying to tap the existing iRobot Create charging voltage to charge something else.  Primarily, because the charging voltage dips down to 0V periodically and holds for several milliseconds.  That would require making some kind of DC uninterruptable power supply and made the project much more complex.  The easiest way to support a wide range of devices that could ride on the robot was to somehow get 120V AC to the cargo bay... for those of you with some familiarity with electronics, you probably can see the variety of safety hazards this poses.  So, again this is &lt;b&gt;HIGHLY NOT RECOMMENDED&lt;/b&gt; and is meant to just be a reference for trying to come up with something better.&lt;br /&gt;&lt;br /&gt;I actually do wish iRobot would modify the charging station for the Create to officially provide a similar type of charging capability.  It is such a nice robot base and it is an obvious desire to have other devices piggy back on the robot that might not be able to run off the Create's battery supply.  I personally believe it would make it a dramatically more useful and appealing robot platform.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Usage Notes&lt;/b&gt;&lt;br /&gt;At the time of this post, I've been using it remotely for about a month on a regular basis between Mountain View and Seattle. &amp;nbsp;My nephews in Washington DC were also able to use it chase my cat around my house in Seattle quite effectively. &amp;nbsp;Thus far, it has worked without any real major problems. The only real interventions on the remote side have been when I ran it too long (&amp;gt;4 hours) and the netbook battery dies or having the optional 4th wheel on the iRobot Create pop-off which can be solved with some super glue. &amp;nbsp;Otherwise, the control software and the charging station have been surprisingly reliable.&amp;nbsp;Using remote desktop software like TeamViewer, I can push software changes to the netbook remotely, restart the computer, put Skype into full screen (which it frustratingly doesn't have as a default option for auto-answered video calls), and otherwise check in on the heath of the netbook.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-6363897007548840392?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/6363897007548840392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=6363897007548840392' title='28 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/6363897007548840392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/6363897007548840392'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2011/02/low-cost-video-chat-robot.html' title='Low-Cost Video Chat Robot'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/9LNS9CivO34/default.jpg' height='72' width='72'/><thr:total>28</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-7831715363336089691</id><published>2011-01-18T01:56:00.000-08:00</published><updated>2011-01-18T04:09:20.945-08:00</updated><title type='text'>"Hi, Google.  My name is Johnny."</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CPucYiWYXAQ/TTVkMN8-lBI/AAAAAAAAAaA/ilOSw0V3Rcg/s1600/ps_logo2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 111px;" src="http://2.bp.blogspot.com/_CPucYiWYXAQ/TTVkMN8-lBI/AAAAAAAAAaA/ilOSw0V3Rcg/s320/ps_logo2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5563463075752743954" /&gt;&lt;/a&gt;&lt;div&gt;I have some big news to announce on a personal front: Very recently, I have left Microsoft to join a special projects team at Google.  After more than 2 and a half years working as a core contributor to the human tracking algorithms for Kinect, it was an extremely difficult decision and I leave behind many great colleagues in Redmond.&lt;div&gt;&lt;br /&gt;It was a wild ride, helping Kinect along through the very early days of incubation (even before it was called "Project Natal") all the way to shipping &lt;a href="http://www.reuters.com/article/idUSTRE7050TU20110106"&gt;8 million units in the first 60 days&lt;/a&gt;.   It's not often you work on a project that gets a lavish product announcement by &lt;a href="http://www.microsoft.com/showcase/en/us/details/68e0d106-6f5f-487e-92e0-cb862f1f5678"&gt;Cirque du Soleil&lt;/a&gt; and a big &lt;a href="http://www.microsoft.com/presspass/press/2010/nov10/11-04kinectlaunchpr.mspx"&gt;Times Square Launch party&lt;/a&gt;.  The success of Kinect is a result of fantastic work by a lot of people.  I'm also very happy that &lt;a href="http://www.nytimes.com/2010/11/22/technology/22hack.html"&gt;so many other people&lt;/a&gt; share my excitement about the technology.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It was great to be a part of such a unique project. I look forward to seeing all the creative and unexpected ways that game developers will use the data from the camera to create fun experiences.  The Xbox is exceptionally well positioned to do great things in the entertainment space.  It's a great console, and a great platform, with a lot of potential.  I genuinely look forward to seeing how it will evolve over the next few years and I absolutely wish the Xbox team the best of luck.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-7831715363336089691?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/7831715363336089691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=7831715363336089691' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/7831715363336089691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/7831715363336089691'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2011/01/hi-google-my-name-is-johnny.html' title='&quot;Hi, Google.  My name is Johnny.&quot;'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_CPucYiWYXAQ/TTVkMN8-lBI/AAAAAAAAAaA/ilOSw0V3Rcg/s72-c/ps_logo2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-5906638804023070203</id><published>2011-01-02T01:37:00.000-08:00</published><updated>2011-02-04T10:20:40.568-08:00</updated><title type='text'>Khan Academy: The closest thing to downloading knowledge into your brain + a $5000 challenge to you</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CPucYiWYXAQ/TSBJRsgT6qI/AAAAAAAAAZ4/tDcilufjTgQ/s1600/khan.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 359px; height: 94px;" src="http://4.bp.blogspot.com/_CPucYiWYXAQ/TSBJRsgT6qI/AAAAAAAAAZ4/tDcilufjTgQ/s400/khan.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5557522508528478882" /&gt;&lt;/a&gt;&lt;br /&gt;A few months ago, I rediscovered the &lt;a href="http://www.khanacademy.org/"&gt;Khan Academy&lt;/a&gt; after stumbling across a presentation by Salman Khan.  If you aren't familiar with this, I recommend making it an absolute priority take a quick scan of some of the videos.  Here's a summary video from the website:&lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/p6l8-1kHUsA?fs=1&amp;amp;hl=en_US"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/p6l8-1kHUsA?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Sal has an astonishingly approachable and understandable method of explaining topics in his videos, and also has an incredibly deep understanding of the material he talks about hinting at lower levels of complexity that he might be skimming over, but sometimes revisits in future videos.  The Khan Academy videos are, in my opinion, perhaps one of the most interesting things to happen to education in a very very long time.  If I may, "disruptive".  Anyone with an Internet connection can go from basic fundamentals all the way up to a college level education in many topics in a clear, organized, understandable manner... all for free.  His teaching style is more effective along many dimensions than any I have personally experienced in any classroom.&lt;br /&gt;&lt;br /&gt;Recently, I've realized that I need to learn more linear algebra.  Over the years, I have picked up little bits here and there doing computer graphics, basic data analysis, but I never had a proper understanding of it enough to understand why it really works or more importantly... apply it to solve completely new problems that might be somewhat non-standard. I managed to never take a proper linear algebra course in college or grad school.&lt;br /&gt;&lt;br /&gt;So, why do I suddenly care about learning linear algebra now? and consequently should you care?  Well if you want to understand how the Wiimote Whiteboard program works, you need a little bit of linear algebra. If you want to understand how video games are rendered on the screen you need linear algebra.  If want to understand how Google works, how parts of Kinect work, or how the&lt;a href="http://www.netflixprize.com/"&gt; $1 million dollar Netflix Prize&lt;/a&gt; was won, financial modeling, or in general analyze the relationship between two large data sets in the world... you need linear algebra.  I'm discovering more and more that any modern sophisticated engineering, modeling, prediction, analysis, fitting, optimization problem now usually involves computers crunching on linear algebra equations.  Unfortunately, this fact was never properly explained to me in college so I never prioritized taking a class.&lt;br /&gt;&lt;br /&gt;I understood the basics enough to do computer graphics, rendering stuff of the screen (3D to 2D).  But much of modern computer vision, is about reversing those equations, going from 2D back to 3D, which involves solving a lot of linear algebra equations to recover unknown data.  And I've found that computer vision papers seem to be the worst places to look for a clear explanation of the math being performed.  The almost appears to be a desire to see how obtusely one can describe their work.&lt;br /&gt;&lt;br /&gt;Fortunately, &lt;a href="http://www.khanacademy.org/"&gt;Khan Academy&lt;/a&gt; has over 130 videos on Linear Algebra.  Since I knew I would be traveling this holiday, I decided to load up all of the videos on my phone to watch during down time.  Watching videos here and there while sitting on the plane, trains, buses, or waiting in lines, I was able to watch all 130+ videos, which cover a 1st year college Linear Algebra course, in about &lt;strong&gt;3 weeks&lt;/strong&gt;. Pure awesome.&lt;br /&gt;&lt;br /&gt;However, the Linear Algebra lectures stopped just as I though it was getting to the interesting part. I was hoping it would get to covering topics such as Singular Value Decomposition, numerical analysis, perspective projections...reversing them, sparse matrices, bundle adjustment, and then real-world application examples.  I'm going to order some books on these topics, but I really really love the video lecture format Sal uses in the Khan Academy and wish they continued.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The $5000 challenge:&lt;/strong&gt;&lt;br /&gt;As an attempt to continue expanding this lecture series in the Khan Academy I want to encourage people who feel like they can give clearly understandable lectures on these topics to pick up where Sal left off.  Apparently, there is an informal method of &lt;a href="http://code.google.com/p/khanacademy/issues/detail?id=718"&gt;adding your own videos to the academy&lt;/a&gt;. I've already donated some money to the Khan Academy (a not-for-profit 501(c)(3)). But, as a call the community, to incentivize people who are able to produce good video lectures on advanced Linear Algebra - for each video posted (and passes the "clearly understandable", Khan academy style, 10 minute video lecture) that continues the Linear Algebra series &lt;span style="font-weight:bold;"&gt;I will donate $100 to Khan Academy up to $5000&lt;/span&gt;. So, not only would you be educating thousands (possibly millions of people), you will be ensuring that your material stays free.&lt;br /&gt;&lt;br /&gt;If you do take me up on this offer and do post a video, let me know at johnny@johnnylee.net, and I will review the video.  If it passes the bar, I will donate the money and then send you the receipt.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-5906638804023070203?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/5906638804023070203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=5906638804023070203' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/5906638804023070203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/5906638804023070203'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2011/01/khan-academy-closest-thing-to.html' title='Khan Academy: The closest thing to downloading knowledge into your brain + a $5000 challenge to you'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_CPucYiWYXAQ/TSBJRsgT6qI/AAAAAAAAAZ4/tDcilufjTgQ/s72-c/khan.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-7336012470399664434</id><published>2010-12-16T04:44:00.000-08:00</published><updated>2011-05-10T23:48:00.684-07:00</updated><title type='text'>Simulated PS2 Controller for Autonomously playing Guitar Hero</title><content type='html'>It's been a long while since I've posted a personal procrastineering project.  The past two and half years have been pretty heads down with developing &lt;a href="http://www.xbox.com/en-US/kinect"&gt;Kinect&lt;/a&gt; (congrats to all those involved).  But, since that has now successfully launched.  I've had a some time to spend on little side projects.&lt;br /&gt;&lt;br /&gt;As an exercise to teach myself a little bit more real-time computer vision/robotics, I wanted to see if I could get a computer to autonomously play certain console video games.  Video games are nice because they can provide a relatively decent simulation of a 3D environment, emphasize demand for real-time vision processing, I don't have to go out in the field to run a test, and there is no penalty for screwing up.  This could also be done with PC games, but rich games are more often console based and it kind of black boxes the activity so I am really forced to depend solely on the data contained in the video stream.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CPucYiWYXAQ/TQoP1ii794I/AAAAAAAAAZc/yZ8hZx1qtNc/s1600/teensy.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 264px;" src="http://2.bp.blogspot.com/_CPucYiWYXAQ/TQoP1ii794I/AAAAAAAAAZc/yZ8hZx1qtNc/s400/teensy.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5551266903168382850" /&gt;&lt;/a&gt;&lt;br /&gt;However, a pre-requisite to this activity is programmatically sending controller commands to a console.  This is not something that appears to be very common on the intertubes, so I thought I would detail my efforts here to hopefully fill that gap.  There used to be a product that would allow you to do this with an Xbox 360 called the XIM2.  It was primarily targeting people who wanted to use a mouse and keyboard to play first person shooters on a console.  Unfortunately, the XIM2 is now discontinued and the nice looking soon-to-be-available &lt;a href="http://xim3.com/"&gt;XIM3&lt;/a&gt;, I'm told, will not have PC-to-Console control functionality, bummer.  So, off to build my own.&lt;br /&gt;&lt;br /&gt;The approach I ended up taking is actually very similar to the origins of the XIM.  I used a microcontroller to simulate a PS2 controller.  The nice thing about the PS2 controller is that it is a relatively simple communication protocol, and due to its vast popularity you can find low-cost adapters to use it with a &lt;a href="http://www.google.com/search?q=ps2+to+ps3+adapter"&gt;PS3&lt;/a&gt; or &lt;a href="http://www.google.com/search?q=ps2+to+xbox+360+adapter"&gt;Xbox 360&lt;/a&gt;.  These are each the order of $5-$10.  So by creating a computer controlled PS2 controller, you can support 3 consoles.  So, you can programmatically control current generation games as well.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Simulating a controller&lt;/strong&gt;&lt;br /&gt;Most of my starting points were nice websites such as &lt;a href="http://store.curiousinventor.com/guides/PS2/"&gt;this&lt;/a&gt; and &lt;a href="http://www.gamesx.com/controldata/psxcont/psxcont.htm"&gt;this&lt;/a&gt;, which neatly describes the Playstation controller protocol.  Most of the material online is geared toward using a PS2 controller with your hobby/robot projects rather than trying to simulate a PS2 controller to command the console.  In theory, you simply would reverse the instructions and it would magically work.  Unfortunately, that wasn't quite the case.  The PS2 console is very picky (sometimes erratic) about timing, goes through a reasonably sophisticated handshaking and configuration process when you plug it in (which is game dependent) before it will accept data from the controller as input.  Thus, my controller simulator had to survive that entire start up process looking like a valid controller.&lt;br /&gt;&lt;br /&gt;The microcontroller platform I chose was the &lt;a href="http://www.pjrc.com/teensy/index.html"&gt;Teensy 2.0 USB development board&lt;/a&gt; which has an ATMEGA32U4 and is programmable via the built-in USB port (so, no external programmer needed).  It can be configured to become a variety of USB devices and is only $18. Since it can become a USB serial interface and has hardware for SPI (for the PS2 controller protocol), it can do this entire project without any additional communication hardware.&lt;br /&gt;&lt;br /&gt;The PS2 controllers use the SPI protocol for communicating with the console, typically using a transmission clock of 250KHz.  But, &lt;strong&gt;SOME&lt;/strong&gt; games, will cause it to shift to 500KHz unexpectedly between messages.  So, hardware SPI is a must in the microcontroller.  BTW, if you are selecting a different micro, you need to make sure you can simultaneously clock data out as new data is clocked in. Lastly, you need to manually pull the ACK pin low to tell the console something is listening on the line which isn't part of the standard SPI spec.&lt;br /&gt;&lt;br /&gt;The PS2 controller initially boots up as a simple Playstation One controller which only provides digital button output (mode 0x41).  The game console will make a variety of queries and configuration messages to enable the joysticks, analog button pressure, motors, etc. (mode 0x79)  It's unclear what all of the configuration message mean.  There are a lot of them, and they vary quite a bit depending on what game is running. Not very simple.  But, as long as you mimic the behavior of a valid controller under several games, it appears to work.  There was a minor issue that the USB interrupts were causing de-synchronization between the console and micro. So, the USB interrupt handling is disabled while communicating with the console (which is roughly 100us every 15ms).  This did not cause an issue with my computers, but may be one possible source of USB errors on other systems just as an FYI.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Firmware Files&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://littlegreatideas.com/procrastineering/files/ps2_emulator/PS2Controller_Emulator.zip"&gt;Teensy PS2 Controller Sim Firmware v1&lt;/a&gt;&lt;br /&gt;&lt;a href="http://littlegreatideas.com/procrastineering/files/ps2_emulator/PS2Controller_Emulator_v2.zip"&gt;Teensy PS2 Controller Sim Firmware v2 (updated 5/10/11)&lt;/a&gt;&lt;br /&gt; - fixed ACK timing bug to make it work with PS3 and Xbox360 adapters.&lt;br /&gt;&lt;br /&gt;I won't dive into the details, but above are the firmware files for the Teensy development board.  These are (of course) provided at your own risk with no implication of support.  There is a precompiled .hex file which you can point your Teensy programmer toward that should get you up and running quickly.  The C source is in there.  For those of you who are industrious, also provided are logs of the SPI messages sent between a PS2 and a valid controller for a few different games.  &lt;br /&gt;&lt;br /&gt;It's worth noting that I probably didn't have to make such a thorough simulation of a valid controller to work with the PS3 or Xbox 360 adapter since they are likely much simpler and less varied in their setup handshaking.  But, I wanted to use my PS2 since it is just laying around and a better simulation would increase the likelihood some random PS3 or Xbox 360 adapter will work.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Wiring&lt;/strong&gt;&lt;br /&gt;Wiring the Teensy is pretty easy.  You need a PS2 cable (from an old controller or extension cable) that you are willing to cut and solder.  This only requires 6 wires, detailed in the picture below.  I read online that if you bought a cheap knock-off cable, the color coding may not match.  So, refer to this &lt;a href="http://blog.makezine.com/archive/2008/06/playstation2_controller_i.html"&gt;pinout diagram&lt;/a&gt; if you are unsure.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CPucYiWYXAQ/TQoWtqfY9MI/AAAAAAAAAZk/Nwk453IFbYI/s1600/wiring.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 228px;" src="http://3.bp.blogspot.com/_CPucYiWYXAQ/TQoWtqfY9MI/AAAAAAAAAZk/Nwk453IFbYI/s400/wiring.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5551274464443430082" /&gt;&lt;/a&gt;&lt;br /&gt;Program your Teensy with the .hex file in the archive provided, and the LED should begin to blink in "search mode".  When you plug in the PS2 connector to the console (while the USB side is connected to your PC since it is USB powered), the LED should go solid but slightly dim. This means it is steadily chatting with the console.  If it is flickering without your involvement, that means it is struggling to pass the setup handshake and you should feel free to debug that problem on your own. =o)  It seems to work on my PS2 and my PS3(via adapter).  I haven't gotten a Xbox 360 adapter yet, but I'm optimistic this will work assuming the adapter works at all.  &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Sending commands&lt;/strong&gt;&lt;br /&gt;As I mentioned, the Teensy 2.0 can be configured to provide a USB serial interface.  If you are using Windows, you need to download &lt;a href="http://www.pjrc.com/teensy/usb_serial.html"&gt;these drivers&lt;/a&gt;.  Mac and Linux don't need drivers.  Now, a serial port should appear in your device list.  Any programming environment that can access a serial port can now send button presses to the game console. When you do send a message, the LED on the Teensy will blink bright.&lt;br /&gt;&lt;br /&gt;The Teensy is expecting 7 byte messages of the format:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;0x5A (buttons1) (buttons2) (joyRX) (joyRY) (joyLX) (joyLY)&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Here is a &lt;a href="http://littlegreatideas.com/procrastineering/files/ps2_emulator/PS2Controller_Simulator.h"&gt;Windows C++ header file&lt;/a&gt; that might be helpful in formalizing the following:&lt;br /&gt;&lt;br /&gt;Joystick neutral is 0x80, up and left are 0x00.  &lt;br /&gt;These are the bit masks for the two button bytes, which should be set to 0 when pressed, set 1 otherwise:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;Buttons1:&lt;/strong&gt;&lt;br /&gt;PS2Button_Select = 0x01,&lt;br /&gt;PS2Button_L3 = 0x02,&lt;br /&gt;PS2Button_R3 = 0x04,&lt;br /&gt;PS2Button_Start = 0x08,&lt;br /&gt;PS2Button_Up = 0x10,&lt;br /&gt;PS2Button_Right = 0x20,&lt;br /&gt;PS2Button_Down = 0x40,&lt;br /&gt;PS2Button_Left = 0x80,&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;Buttons2:&lt;/strong&gt;&lt;br /&gt;PS2Button_L2 = 0x01,&lt;br /&gt;PS2Button_R2 = 0x02,&lt;br /&gt;PS2Button_L1 = 0x04,&lt;br /&gt;PS2Button_R1 = 0x08,&lt;br /&gt;PS2Button_Triangle = 0x10,&lt;br /&gt;PS2Button_Circle = 0x20,&lt;br /&gt;PS2Button_Cross = 0x40,&lt;br /&gt;PS2Button_Square = 0x80,&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;The starting 0x5A byte is used as a start byte to help segment message packets.  If you send data without prepending with this byte, you will get 'x' characters sent back to you on the serial port which is the microcontroller complaining your messages aren't formatted correctly.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Autonomously Playing Guitar Hero&lt;/strong&gt;&lt;br /&gt;As I mentioned at the beginning of the post, the whole purpose of this project was to see if I could analyze the video stream from the game console to autonomously play the game.  Arguably one of the easiest games to automate is Guitar Hero, which basically turned millions of willing people into bad midi file readers.  So, I'm about to use a lot more processing power and hardware to also make a bad midi file reader. =o)  In case it wasn't clear from my description above, this is a flow chart of what is going on here:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CPucYiWYXAQ/TQoh5QP5GKI/AAAAAAAAAZs/MyBNbA6wxMY/s1600/flow.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 314px; height: 224px;" src="http://3.bp.blogspot.com/_CPucYiWYXAQ/TQoh5QP5GKI/AAAAAAAAAZs/MyBNbA6wxMY/s400/flow.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5551286758185441442" /&gt;&lt;/a&gt;&lt;br /&gt;The Playstation spits out the video image, the PC analyzes that image, and then sends controller events back to the Playstation.  Now, this may seem absolutely absurd to a normal human being.  But, I'm an engineer at heart and this makes total sense to me.  The nice thing is that assuming I can make the "analyze that image" software infinitely smart, I can hopefully play all sorts of games autonomously - perhaps even driving games, first person shooters, or platformers.  Doing all that will be tough, but I'll learn a lot in the process. Some of that may even be useful for analyzing things in the real world as well. But, for now, lets just start with Guitar Hero on Expert mode.&lt;br /&gt;&lt;br /&gt;For video capture, I'm just using a &lt;a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16815100112&amp;cm_re=usb_video_capture-_-15-100-112-_-Product"&gt;$30 USB capture device&lt;/a&gt;.  Since real-time processing was priority for me, 640x480 images @ 30Hz is plenty of resolution to start with. In fact, for this starter project, I'm just using 320x240.  For a computer vision library I am using &lt;a href="http://opencv.willowgarage.com/wiki/"&gt;OpenCV&lt;/a&gt;.  Although it has some eccentrcities, it is a very powerful toolkit for getting up and running quickly.  I'm not going to go into too much detail about OpenCV.  But roughly, what I do for playing Guitar Hero is:&lt;br /&gt;&lt;br /&gt;1. Unwarp the fret board so it is square (using a homography)&lt;br /&gt;2. Use a template match to find notes along each column.&lt;br /&gt;3. Track notes over time to ensure they are not spurrious.&lt;br /&gt;4. Once notes hit a trigger line, queue the button press.&lt;br /&gt;&lt;br /&gt;There are a bunch more subtle details to make it work just right. It seems to work pretty well hitting 95% of the notes on expert mode.  It doesn't really handle star notes, sustains, star power, or other weird special effects. But, it can finish all the songs on Expert Mode.  Thanks to the simple UI design of "just hit the X button to advance", it can play the entire Career mode from start to finish without me touching it. Here's a video of it finishing the last rift of the last expert song.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/H7EEmrwZs5E?hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/H7EEmrwZs5E?hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;For those extremely interested, &lt;a href="http://littlegreatideas.com/procrastineering/files/ps2_emulator/OpenCV_PSXControl.zip"&gt;here is a copy of the OpenCV project&lt;/a&gt; that does this.  This is DEFINITELY provided without any support and requires getting &lt;a href="http://opencv.willowgarage.com/wiki/"&gt;OpenCV&lt;/a&gt; installed and running.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-7336012470399664434?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/7336012470399664434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=7336012470399664434' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/7336012470399664434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/7336012470399664434'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2010/12/simulated-ps2-controller-for.html' title='Simulated PS2 Controller for Autonomously playing Guitar Hero'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_CPucYiWYXAQ/TQoP1ii794I/AAAAAAAAAZc/yZ8hZx1qtNc/s72-c/teensy.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-4460475488111324985</id><published>2010-08-12T09:53:00.000-07:00</published><updated>2010-08-12T11:21:25.932-07:00</updated><title type='text'>Want to get your hands on an experimental research prototype from Microsoft Hardware?</title><content type='html'>It's that time of year again, and we are coming up to UIST 2010 - a research conference on new interface hardware and software technology.  Once again, Microsoft Applied Sciences is sponsoring the &lt;a href="http://www.acm.org/uist/uist2010/Student_Contest.html"&gt;student innovation contest&lt;/a&gt;.   Last year, it was the &lt;a href="http://news.cnet.com/8301-17938_105-10371215-1.html"&gt;pressure sensitive keyboard&lt;/a&gt;.  This year is the: &lt;a href="http://www.microsoft.com/appliedsciences/content/projects/uist.aspx"&gt;Adaptive Keyboard&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_CPucYiWYXAQ/TGQoxdbZebI/AAAAAAAAAZM/QmzmEDcnUb0/s1600/UIST-adaptivekeyboard.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 154px;" src="http://1.bp.blogspot.com/_CPucYiWYXAQ/TGQoxdbZebI/AAAAAAAAAZM/QmzmEDcnUb0/s400/UIST-adaptivekeyboard.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5504569474731833778" /&gt;&lt;/a&gt;&lt;br /&gt;From the Applied Sciences page, "[The adaptive keyboard] is a research prototype developed by Microsoft Hardware to explore how combining display and input capabilities in a keyboard can allow users to be more productive. The keyboard incorporates a large, touch-sensitive display strip at the top. In addition, the display continues underneath the keys, allowing the legends to be modified in real time. This lets you do things like change the character set to a different language or display command icons."&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/n0MEhKk9xg4?fs=1&amp;amp;hl=en_US"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/n0MEhKk9xg4?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ojusRO38Tdc?fs=1&amp;amp;hl=en_US"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/ojusRO38Tdc?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;If you are interested in participating, visit the &lt;a href="http://www.acm.org/uist/uist2010/Student_Contest.html"&gt;UIST student contest page&lt;/a&gt; for rules and important dates.  The entry deadline is August 17th!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-4460475488111324985?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/4460475488111324985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=4460475488111324985' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/4460475488111324985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/4460475488111324985'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2010/08/want-to-get-your-hands-on-experimental.html' title='Want to get your hands on an experimental research prototype from Microsoft Hardware?'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_CPucYiWYXAQ/TGQoxdbZebI/AAAAAAAAAZM/QmzmEDcnUb0/s72-c/UIST-adaptivekeyboard.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-5728409269778204842</id><published>2010-08-06T10:00:00.000-07:00</published><updated>2010-08-06T10:09:55.606-07:00</updated><title type='text'>Playing Nintendo with your eyes</title><content type='html'>Haha, now this is how you make a science project/research video! Great work guys. Next time I'm in the area, I'd be happy to buy you guys lunch. It looks ridiculous, but great at the same time. 150K views and counting. These Waterloo Labs guys really have something going with their "Engineer Awesome" mantra. My hats off to them. You can check out their other videos on their &lt;a href="http://www.youtube.com/user/WaterlooLabs"&gt;YouTube channel&lt;/a&gt;.&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="480" height="288"&gt;&lt;param name="movie" value="http://www.youtube.com/v/4j2kw5MJK24&amp;amp;hl=en_US&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/4j2kw5MJK24&amp;amp;hl=en_US&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="288"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-5728409269778204842?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/5728409269778204842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=5728409269778204842' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/5728409269778204842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/5728409269778204842'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2010/08/playing-nintendo-with-your-eyes.html' title='Playing Nintendo with your eyes'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-3076654821812188478</id><published>2010-06-22T13:31:00.001-07:00</published><updated>2010-06-22T13:45:05.146-07:00</updated><title type='text'>"Congrats"</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_CPucYiWYXAQ/TCEgn0hHm5I/AAAAAAAAAY8/lgZFlmrXyxQ/s1600/kinect.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 138px;" src="http://2.bp.blogspot.com/_CPucYiWYXAQ/TCEgn0hHm5I/AAAAAAAAAY8/lgZFlmrXyxQ/s320/kinect.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5485701689598516114" /&gt;&lt;/a&gt;&lt;br /&gt;I just wanted to say, "congrats". To everyone involved at Xbox, everyone at the game studios. For a really great showing at E3 last week. For all the blood, sweat, and tears that got us to this point. And for helping to bring to market the most sophisticated consumer device ever created. &lt;br /&gt;&lt;br /&gt;"Congrats"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-3076654821812188478?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/3076654821812188478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=3076654821812188478' title='48 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/3076654821812188478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/3076654821812188478'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2010/06/congrats.html' title='&quot;Congrats&quot;'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_CPucYiWYXAQ/TCEgn0hHm5I/AAAAAAAAAY8/lgZFlmrXyxQ/s72-c/kinect.jpg' height='72' width='72'/><thr:total>48</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-8766577308126345063</id><published>2010-04-01T10:23:00.000-07:00</published><updated>2010-04-01T10:35:55.008-07:00</updated><title type='text'>Laptops + Pico projectors = Bonfire</title><content type='html'>Some colleagues of mine at Intel Research/University of Washington recently got permission to post a video of thier research project from UIST 2009.  It's a really nice idea that I wish I had done myself and, in my opinon, is one of the better applications of cheap pico projectors that I've seen.&lt;br /&gt;&lt;br /&gt;Using pico-projectors and cameras mounted on a laptop, you can take advantage of nearby table space around the laptop to effectively expand your workspace at will.  The video is a little stiff but, like many good ideas, you get the jist of it pretty quick.&lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/O3MZYRAZJNk&amp;hl=en_US&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/O3MZYRAZJNk&amp;hl=en_US&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-8766577308126345063?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/8766577308126345063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=8766577308126345063' title='49 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/8766577308126345063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/8766577308126345063'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2010/04/laptops-pico-projectors-bonfire.html' title='Laptops + Pico projectors = Bonfire'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>49</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-5863490789196423747</id><published>2009-10-26T14:26:00.000-07:00</published><updated>2009-10-26T15:06:05.285-07:00</updated><title type='text'>Guitar Hero without a guitar</title><content type='html'>This year, I'm helping the User Interface Software and Technology (UIST) conference put their proceedings videos online so that more people can access them. So far, I've gotten most of the videos from this year uploaded to the &lt;a href="http://www.youtube.com/user/ACMUISTConference"&gt;conference YouTube account&lt;/a&gt;. If you've closely followed the tech media coverage, you might recognize projects like the &lt;a href="http://www.youtube.com/watch?v=1zo0kJ_wi80"&gt;pressure sensitive keyboard&lt;/a&gt; and &lt;a href="http://www.youtube.com/watch?v=Hj-L16xhZY4"&gt;Mouse 2.0&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;However, one of my favorite projects this year was a muscle sensing system that (among other things) allows you to play Guitar Hero without a guitar. It directly senses the electrical signals in your arms and maps those to the appropriate button presses. This was done by &lt;a href="http://www.cs.washington.edu/homes/ssaponas/"&gt;Scott Saponas&lt;/a&gt;, a Phd student at the University of Washington exploring a variety of biometric sensing techniques for input.&lt;br /&gt;&lt;br /&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/6_7BzUED39A&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/6_7BzUED39A&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;I also really like this project which combines a large touch table with other physical input devices such as multiple mice and keyboards all working together nicely. This prototype was done by &lt;a href="http://bjoern.org/"&gt;Bjoern Hartman&lt;/a&gt; who has recently joined UC Berkeley's faculty. &lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/v_AvkV286mI&amp;hl=en&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/v_AvkV286mI&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;I like systems that combine many modes of input so that you can dynamically choose the right device for the job and can gracefully scale to multiple people simultaneously. We are pretty far past having a 1:1 ratio between between people and computers. Yet, most systems today are still designed with 1 device and 1 user in mind.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-5863490789196423747?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/5863490789196423747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=5863490789196423747' title='388 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/5863490789196423747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/5863490789196423747'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2009/10/guitar-hero-without-guitar.html' title='Guitar Hero without a guitar'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>388</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-6556114797869248070</id><published>2009-08-08T14:18:00.000-07:00</published><updated>2009-08-08T14:45:43.566-07:00</updated><title type='text'>Pressure Sensitive Keyboard</title><content type='html'>Some of my colleagues in the Applied Sciences group in Microsoft Hardware have recently gotten some media exposure for one of their recent projects: the pressure sensitive keyboard&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/PDI8eYIASf0&amp;hl=en&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/PDI8eYIASf0&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Congrats! It's a very nice prototype, and I look forward to seeing what the students at UIST cook up in the innovation contest.&lt;br /&gt;&lt;br /&gt;If you aren't familiar with &lt;a href="http://www.acm.org/uist/uist2009/"&gt;UIST (User Interface Software and Technology)&lt;/a&gt;, it is a conference dedicated to new interface research.  It is one of my favorite conferences to attend.  It's where I demonstrated my past work like &lt;a href="http://www.youtube.com/watch?v=XgrGjJUBF_I"&gt;Automatic Projector Calibration&lt;/a&gt;, &lt;a href="http://www.youtube.com/watch?v=nhSR_6-Y5Kg&amp;feature=channel"&gt;Foldable Interactive Displays&lt;/a&gt;, where Chris Harrison (recently known for &lt;a href="http://www.chrisharrison.net/projects/pneumaticdisplays/index.html"&gt;Physically Changing Displays&lt;/a&gt;) showed off &lt;a href="http://www.chrisharrison.net/projects/scratchinput/"&gt;Scratch Input&lt;/a&gt;, Andy Wilson showed early pre-Surface touch tables, Hrvoje Benko showed &lt;a href="http://research.microsoft.com/en-us/um/people/benko/projects.html"&gt;Spherical Surface&lt;/a&gt;, MSR-Cambridge presented &lt;a href="http://www.youtube.com/watch?v=XfzplPIrzjY"&gt;Second Light&lt;/a&gt;, and where Jeff Han first demonstrated &lt;a href="http://cs.nyu.edu/~jhan/ftirsense/"&gt;FTIR&lt;/a&gt;.  ...and that's just a small sample from the last 2-3 years.&lt;br /&gt;&lt;br /&gt;So if you are interested in new interface technology (or you are part of the tech media) I would encourage you to attend &lt;a href="http://www.acm.org/uist/uist2009/"&gt;UIST in October&lt;/a&gt; this year.  You'll get to see what the latest interface researchers are doing all over the world and get to talk to the people behind the ones you have read about.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-6556114797869248070?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/6556114797869248070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=6556114797869248070' title='243 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/6556114797869248070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/6556114797869248070'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2009/08/pressure-sensitive-keyboard.html' title='Pressure Sensitive Keyboard'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>243</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-2968229894372085688</id><published>2009-07-23T10:01:00.001-07:00</published><updated>2009-07-29T23:17:52.402-07:00</updated><title type='text'>Rhonda - 3D drawing</title><content type='html'>It's always good to give people reminders of what is possible when you don't stick with just a mouse and keyboard.  This is a very nice piece of interface work for 3D drawing.  The system is called &lt;a href="http://rhondaforever.com/"&gt;Rhonda&lt;/a&gt;.  The drawing is a bit on the abstract art side, but it's easy to see the level of control he has.&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/g_9NgZLQTgI%2Em4v" type="application/x-shockwave-flash" width="640" height="510" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;The &lt;strong&gt;great&lt;/strong&gt; thing about 3d drawing is that the current tools are awful, so new ways of doing it are always interesting.  Unfortunately, the &lt;strong&gt;bad&lt;/strong&gt; thing about 3d drawing is that there are a relatively small number of people on the planet that really want to do it.  So, it's unlikely these interfaces become widespread outside the domain.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-2968229894372085688?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/2968229894372085688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=2968229894372085688' title='199 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/2968229894372085688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/2968229894372085688'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2009/07/rhonda-3d-drawing.html' title='Rhonda - 3D drawing'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>199</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-4297873670690814846</id><published>2009-06-01T20:58:00.000-07:00</published><updated>2009-06-03T16:18:39.115-07:00</updated><title type='text'>Project Natal</title><content type='html'>If you've been wondering why my project blog has been pretty quiet, I can finally say it is because I have been helping Xbox with &lt;a href="http://www.xbox.com/en-US/live/projectnatal"&gt;Project Natal&lt;/a&gt;. If you haven't seen the vision video, it is definitely worth checking out:&lt;br /&gt;&lt;br /&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/g_txF7iETX0&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/g_txF7iETX0&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt; &lt;br /&gt;&lt;br /&gt;Now, I should preface by saying I don't deserve credit for anything that you saw at E3. A large team of very smart, very hard working people were involved in building the demos you saw on stage. The part I am working on has much more to do with making sure this can transition from the E3 stage to your living room - for which there is an even larger team of very smart, very hard working people involved. The other thing I should say is that I can't really reveal any details that haven't already been made public. Unfortunately.&lt;br /&gt;&lt;br /&gt;Speaking as someone who has been working in interface and sensing technology for nearly 10 years, this is an astonishing combination of hardware and software.  The few times I’ve been able to show researchers the underlying components, their jaws drop with amazement... and with good reason.&lt;br /&gt;&lt;br /&gt;The 3D sensor itself is a pretty incredible piece of equipment providing detailed 3D information about the environment similar to very expensive laser range finding systems but at a tiny fraction of the cost. Depth cameras provide you with a point cloud of the surface of objects that is fairly insensitive to various lighting conditions allowing you to do things that are simply impossible with a normal camera.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CPucYiWYXAQ/SiTIdxSJ9HI/AAAAAAAAAW8/qIriW4rzW5M/s1600-h/pointcloud.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 118px;" src="http://3.bp.blogspot.com/_CPucYiWYXAQ/SiTIdxSJ9HI/AAAAAAAAAW8/qIriW4rzW5M/s320/pointcloud.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5342615471739499634" /&gt;&lt;/a&gt;&lt;br /&gt;But once you have the 3D information, you then have to interpret that cloud of points as "people". This is where the researcher jaws stay dropped. The human tracking algorithms that the teams have developed are well ahead of the state of the art in computer vision in this domain. The sophistication and performance of the algorithms rival or exceed anything that I've seen in academic research, never mind a consumer product. At times, working on this project has felt like a miniature “Manhattan project” with developers and researchers from around the world coming together to make this happen.&lt;br /&gt;&lt;br /&gt;We would all love to one day have our own personal holodeck. This is a pretty measurable step in that direction. &lt;br /&gt;&lt;br /&gt;Xbox and Microsoft deserve an enormous amount of credit for taking on such an ambitious project. It’s one thing to say “Wouldn’t it be cool if…”, but it’s another thing entirely to say, “let’s dedicate the resources to really make it happen inventing whatever needs to be invented along the way.”  I have to say it's pretty neat building the future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-4297873670690814846?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/4297873670690814846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=4297873670690814846' title='384 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/4297873670690814846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/4297873670690814846'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2009/06/project-natal.html' title='Project Natal'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_CPucYiWYXAQ/SiTIdxSJ9HI/AAAAAAAAAW8/qIriW4rzW5M/s72-c/pointcloud.jpg' height='72' width='72'/><thr:total>384</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-4887987562151778938</id><published>2009-04-20T10:59:00.000-07:00</published><updated>2009-04-20T11:24:53.248-07:00</updated><title type='text'>Inspiring robots set to nice music</title><content type='html'>Since, I'm on a bit of a mini-robot kick at the moment.  I thought I would share some of the videos I've seen lately that at least inspired it. The elegance of some of these movements and the music remind me of the child-like imagination that we perhaps once had before becoming more jaded with age. At least, the dreams of a little engineer.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/dMJJ2FJqsdI&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/dMJJ2FJqsdI&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/0jyBiECoS3Q&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/0jyBiECoS3Q&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/n4JJEazpb_g&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/n4JJEazpb_g&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;This last one is just fun.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/oUH3m6ZyW-g&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/oUH3m6ZyW-g&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-4887987562151778938?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/4887987562151778938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=4887987562151778938' title='182 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/4887987562151778938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/4887987562151778938'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2009/04/inspiring-robots-set-to-nice-music.html' title='Inspiring robots set to nice music'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>182</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-8607657695755157324</id><published>2009-04-20T00:45:00.000-07:00</published><updated>2009-04-22T15:08:18.648-07:00</updated><title type='text'>Adventures with Bioloid</title><content type='html'>A couple of weeks ago, I was participating in the Siggraph Jury review process looking at some of the projects submitted this year. There were a couple of submissions using humanoid servo motor robots.  Since I have always had an itch to play with robots that I've never had a chance to scratch, I decided to look into buying one.  One of the best selections of these robots I found online was at &lt;a href="http://www.trossenrobotics.com/humanoid-robot-kit.aspx"&gt;Trossen Robotics&lt;/a&gt;.  After a lot of reading and video watching, the current highest rated robots appear to be the &lt;a href="http://www.youtube.com/watch?v=ufQf6wyhyAs"&gt;Robonova&lt;/a&gt;, &lt;a href="http://www.youtube.com/watch?v=BQYEKQUF0_c"&gt;Kondo KHR-2HV&lt;/a&gt;, &lt;a href="http://www.youtube.com/watch?v=Su00kOltuSA"&gt;Futaba RBT-1&lt;/a&gt;, and the edutainment &lt;a href="http://www.youtube.com/watch?v=LCIW7SmwuFk"&gt;Robotis Bioloid&lt;/a&gt;. These are all very impressive robots that all (with the exception of the Bioloid) are used in the &lt;a href="http://en.wikipedia.org/wiki/RoboCup"&gt;RoboCup Soccer&lt;/a&gt; competitions. Combined with the $900-$1500 price tags, these are definitely not your typical kids toy.&lt;br /&gt;&lt;br /&gt;After much deliberation, I ended up going with the Bioloid. It's one of the more well documented robots with a healthy developer community, and it's highly reconfigurable.  It comes with an "errector set"-like kit which allows you to build a variety of robots, not just humanoids. However, this modularity comes at the cost of extra weight. So, while the power-to-weight ratio of the servo motors maybe comparable to the higher-end robots, the overall performance of the robot is noticeably slower and clunkier. It also happens to be one of the cheaper robots at$900. I really liked the re-configurability (for future robot projects), the number of degrees of freedom (particularly in the hip), and the size of the community support/English documentation.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_CPucYiWYXAQ/SewtLy4aPfI/AAAAAAAAAV0/e2Ox9HrYxUE/s1600-h/IMG_0303.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_CPucYiWYXAQ/SewtLy4aPfI/AAAAAAAAAV0/e2Ox9HrYxUE/s320/IMG_0303.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5326682139932638706" /&gt;&lt;/a&gt;&lt;br /&gt;When I first got it, I was a little intimidated by the number of pieces in the box.  Being an educational robot, I was hoping it was going to be a quick and simple setup. While the instructions are fairly easy to follow, it did take me about 5 hours from opening the box to a completed robot. Assembly requires handing many similar looking parts and lots of tiny screws. However, it is very satisfying to see the robot slowly take form as you assemble the components.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_CPucYiWYXAQ/Sewt_bNlYQI/AAAAAAAAAV8/eH2nzebLoOM/s1600-h/IMG_0308.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 274px;" src="http://1.bp.blogspot.com/_CPucYiWYXAQ/Sewt_bNlYQI/AAAAAAAAAV8/eH2nzebLoOM/s320/IMG_0308.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5326683026932195586" /&gt;&lt;/a&gt;&lt;br /&gt;Once it is done, you do get an urge to say out loud "IT'S ALIVE!" with a grin on your face.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_CPucYiWYXAQ/SewuUAvRDpI/AAAAAAAAAWE/qJpF9PEf8X4/s1600-h/IMG_0309.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 258px; height: 320px;" src="http://4.bp.blogspot.com/_CPucYiWYXAQ/SewuUAvRDpI/AAAAAAAAAWE/qJpF9PEf8X4/s320/IMG_0309.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5326683380602965650" /&gt;&lt;/a&gt;&lt;br /&gt;The included CD does have software to program and contol the robot, but as I expected, it is somewhat limited to keyframe pose playback or simplfied visual programming. My original intent was to run the robot using my own C/C++ or C# program. So, I didn't spend much time with the included software other than to verify the robot worked and to get an understanding of the control flow. The C development tools described by the documentation are for writing programs that run on the Atmega128 chip inside the robot. What I wanted was to run the control logic on my PC. However, getting my own software to control the robot ended up being quite a bit more challenging than I had expected.  &lt;br /&gt;&lt;br /&gt;The first major hurdle I had was the physical connection. The kit comes with a serial cable for communication with the robot, but it uses a DB-9 connector that is only found on desktops these days and my main machine is a laptop. The Bioloid has an expansion slot on its control board, the CM-5, for a wireless Zigbee connection.  There are a few resources online explaining how to use a &lt;a href="http://www.bioloid.info/tiki/tiki-download_file.php?fileId=38"&gt;Bluetooh Module instead of a Zigbee module&lt;/a&gt;. So, I had ordered a &lt;a href="http://www.sparkfun.com/commerce/product_info.php?products_id=8332"&gt;BlueSMIRF module&lt;/a&gt; (WRL-08332) from Sparkfun in anticipation of doing this.&lt;br /&gt;&lt;br /&gt;The Bioloid controller requires 57600 baud serial communication, but the Bluetooth modules typically come set to 9600 baud. To my frustration, the information on Sparkfun's website on exactly how to re-configure the baud rate is a little obtuse.  They have different chipset versions with different command sets.  Something I burned about 2 hours learning was that newer modules, with the BGB203 chip, CANNOT be configured wirelessly over the Bluetooth connection. They have to be configured via the wired TTL TX/RX connections.  Moreover, to change the baud rate and save it to memory requires a TTL connection that can dynamically change its baud rate to issue the "save to memory" command at the new baud rate. My short lived attempt at trying to using a second Bluetooth module was a failure because while it could issue the "change baud rate" command it could not issue the "save to memory" command. =oP Anyway, once I got my hands on a &lt;a href="http://www.adafruit.com/index.php?main_page=product_info&amp;cPath=29&amp;products_id=70"&gt;USB TTL-232 cable&lt;/a&gt;, things went smoothly.  One other important thing to check is the Bluetooth &lt;strong&gt;passkey&lt;/strong&gt; of the module (using the configuration commands).  In Vista, to make the Bluetooth serial port binding behave nicely I had to configure the bluetooth connection to use the passkey. It happened to be set to "0000" on my module despite the documentation from Sparkfun indicating it would be "default".&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_CPucYiWYXAQ/Sew2oHGJ4zI/AAAAAAAAAWU/yyYhyUhCxvw/s1600-h/CIMG0060.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 237px;" src="http://4.bp.blogspot.com/_CPucYiWYXAQ/Sew2oHGJ4zI/AAAAAAAAAWU/yyYhyUhCxvw/s320/CIMG0060.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5326692521999983410" /&gt;&lt;/a&gt;&lt;br /&gt;The second problem I ran into was that once I connected the Bluetooth module to the Zigbee communication pins, I discovered that it is NOT A REPLACEMENT for to the PC LINK serial programming cable port at the top of the CM-5.  The data from the Zigbee unit is only meant to provide command bytes triggering behaviors in a program running natively on the CM-5.  What I wanted was raw access to the servos so I could run control logic on the PC.  This can only done via the PC LINK.  The data from the Zigbee module never makes it to the servo motor bus. So after some digging, I found a schematic for the CM-5 and found where to piggy back data onto the main PC link. The image below shows where I connected my wires.  The TX from the Bluetooth module is attached to the logic level side of the RS232 level converter.  The other wires are connected to the Zigbee pins as decribed by the reference above.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_CPucYiWYXAQ/Sew34NbErAI/AAAAAAAAAWc/QLbR6fu5T_M/s1600-h/CM-5+circuit+board.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_CPucYiWYXAQ/Sew34NbErAI/AAAAAAAAAWc/QLbR6fu5T_M/s320/CM-5+circuit+board.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5326693898087869442" /&gt;&lt;/a&gt;&lt;br /&gt;This defintiely &lt;strong&gt;at your own risk&lt;/strong&gt; and may behave badly if you try to connect the wired PC link cable at the same time.  But since I intend to only use the Bluetooth serial connection, this was not a concern for me.&lt;br /&gt;&lt;br /&gt;Now, I can run the included software such as Motion Builder using the Bluetooth connection as if I had the wired PC Link cable attached. Great! The CM-5 provides some commands such that if you open up a ternimal window to the serial port, you can get/set the data for each servo manually.  However, the human readable commands use A LOT of bandwidth overhead.  Given that the 57600 baud connection is already runnning much slower than the 1000000 native baud rate of the Dynamixel AX-12 servo motors, trying to control the robot via these commands was unbearably slow even if executed programmatically and I kept running into buffer limits on more complex commands.&lt;br /&gt;&lt;br /&gt;A not-very-well documented mode of the CM-5 is "Toss Mode" which appears to be a pass through mode to the servo motor bus. Put the CM-5 in Manage Mode, and hit the Start button. In your PC's terminal window, type "t" then hit enter. It should respond with "Toss Mode". At this point, any bytes sent via the serial connection is pushed directly onto the servo motor bus and vice versa. Finally! Exactly what I wanted. After slowly making my way through the &lt;a href="http://robosavvy.com/site/docs/Bioloid/AX-12(english).pdf"&gt;Dynamixel AX-12 User's guide&lt;/a&gt;, I now have a small C# library that provides direct control/communication with the servos via the serial port.  It's still pretty rough but once I clean it up a bit more, I'll probably make it available for download.  But, it is a farily straight forward implementation of key commands from the Dynamixel users manual.  The hard part was getting the hardware into the right configuration to allow direct communication.&lt;br /&gt;&lt;br /&gt;The next step to do is write my own control and logic software to see if I can make it do more interesting things than simply recall preset poses. There's also a mild annoyance in that the 57600 baud serial link is about 17x slower than the 1000000 baud servo bus speed. If this becomes an issue, I might explore making an alternative controller board that would provide 1000000 baud pass through, or even put each limb on a separate bus to parallelize I/O making it even faster. This could result in a 70x speed bump in servo communication which would be helpful with real-time control logic.&lt;br /&gt;&lt;br /&gt;(update 4-22-09) It looks like Scott Ferguson has &lt;a href="http://www.forestmoon.com/Software/AX12ArmSample/"&gt;C# libraries&lt;/a&gt; for controlling a dynamixel directly via a serial port. He was using a USB2Dynamixel adapter. The bad this is that it doesn't provide power to the servo, only control.  So, using the CM-5 a wirelss control/power brick is still fairly attractive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-8607657695755157324?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/8607657695755157324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=8607657695755157324' title='158 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/8607657695755157324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/8607657695755157324'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2009/04/adventures-with-bioloid.html' title='Adventures with Bioloid'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_CPucYiWYXAQ/SewtLy4aPfI/AAAAAAAAAV0/e2Ox9HrYxUE/s72-c/IMG_0303.JPG' height='72' width='72'/><thr:total>158</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-4652738819123896719</id><published>2009-03-21T14:18:00.001-07:00</published><updated>2009-03-21T14:41:01.040-07:00</updated><title type='text'>Magnetic Ink</title><content type='html'>In a bit of procrastineering research, I started looking into making my own &lt;a href="http://en.wikipedia.org/wiki/Ferrofluid"&gt;ferrofluid&lt;/a&gt;.  Apparently the best stuff to use these days is &lt;a href="http://en.wikipedia.org/wiki/Magnetic_ink_character_recognition"&gt;Magnetic Ink Character Recognition &lt;/a&gt;(MICR) Toner.  But, it's a little hard to find in bulk.  The most amazing work I've seen done with ferro-fluid is by &lt;a href="http://www.kodama.hc.uec.ac.jp/spiral/"&gt;Sachiko Kodama&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/me5Zzm2TXh4&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/me5Zzm2TXh4&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;It's difficult and messy stuff to work with. Not to mention you need to know how to generate custom magnetic fields to move it. So, it's always been a little low on my project list. &lt;br /&gt;&lt;br /&gt;Though, in my brief search for materials, I came across this wonderful artwork by &lt;a href="http://www.flight404.com/blog/?p=106"&gt;flight404&lt;/a&gt;.  This is done with an application called &lt;a href="http://processing.org/"&gt;Processing&lt;/a&gt;, which is a programming environment designed for computational art that grew out of the MIT Media Lab. It's definitely evolved quite a bit since the last time I looked at it if you can create these kinds of visuals. It's beautiful and all free (as in open source). =o)  Maybe I'll try my hand at it again (in what little free time I have).  Simply trying to recreate something that approximates this visual style would be a satifying exercise.&lt;br /&gt;&lt;br /&gt;&lt;object width="400" height="302"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=615344&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=615344&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="302"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-4652738819123896719?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/4652738819123896719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=4652738819123896719' title='131 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/4652738819123896719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/4652738819123896719'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2009/03/magnetic-ink.html' title='Magnetic Ink'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>131</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-774047898023521930</id><published>2009-03-19T13:31:00.000-07:00</published><updated>2009-03-19T13:35:04.395-07:00</updated><title type='text'>What would you do with a thousand sheep?</title><content type='html'>This is absolutely astonishing!  What are YOU doing with your sheep? eh?  Whatever it is, it's probably not as good as this:&lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="295"&gt;&lt;param name="movie" value="http://www.youtube.com/v/D2FX9rviEhw&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/D2FX9rviEhw&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-774047898023521930?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/774047898023521930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=774047898023521930' title='148 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/774047898023521930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/774047898023521930'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2009/03/what-would-you-do-with-thousand-sheep.html' title='What would you do with a thousand sheep?'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>148</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-4528471765280234109</id><published>2009-03-15T13:09:00.001-07:00</published><updated>2009-03-19T13:38:10.757-07:00</updated><title type='text'>"Birth of a new art form..."</title><content type='html'>It's not often you hear that phrase.  I don't think I've ever used it myself, but a few people have been tossing that around when talking about Kutiman's work at &lt;a href="http://thru-you.com/"&gt;Thru-You.com&lt;/a&gt; who does video remixes of musicians around the world to create amazing new musical/video pieces.  The one that is getting the most blog exposure is called &lt;a href="http://www.youtube.com/watch?v=tprMEs-zfQA"&gt;The Mother of All Funk Chords&lt;/a&gt;. However, the one I think more clearly demonstrates the subtlety and intricacy of this artistic contribution is below entitled "I am new":&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/EsBfj6khrG4&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/EsBfj6khrG4&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;There have certainly been many video remixes before, but this steps it up a few notches in several directions - in no small part facilitated by abundance and wealth of YouTube performances. One of the earlier examples of musical/video editing that I really enjoyed is work by Lasse Gjertsen.  He started with &lt;a href="http://www.youtube.com/watch?v=o9698TqtY4A"&gt;"human beat boxing"&lt;/a&gt;, but really stepped it up in the following video.  It's worth remembering that he doesn't know how to play these instruments:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/JzqumbhfxRo&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/JzqumbhfxRo&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;On the topic of the great examples of creating musical mixes with video, this is another wonderful example of what one individual with a camera, video editor, a few instruments, and some determination can create:&lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="295"&gt;&lt;param name="movie" value="http://www.youtube.com/v/uRv8gnBMiWM&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/uRv8gnBMiWM&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Trying your hand at making something like this would be an excellent procrastineering project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-4528471765280234109?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/4528471765280234109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=4528471765280234109' title='80 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/4528471765280234109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/4528471765280234109'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2009/03/birth-of-new-art-form.html' title='&quot;Birth of a new art form...&quot;'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>80</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-5087240685358675447</id><published>2009-02-16T13:57:00.001-08:00</published><updated>2009-02-16T14:05:49.248-08:00</updated><title type='text'>Wonderful slow-motion stabilized video montage of New York</title><content type='html'>I'm not sure who Vincente Sachuc is, but he's certainly got a career in cinematography if he wants one. This makes me want to get back into creative film work rather than technical videos.  He mentions this is captured with a Casio EX-F1 at 300 fps and edited at 24 fps.  A skateboard and a Steadicam Merlin help with the smooth traveling shots.  Of course, you could buy one of my &lt;a href="http://www.littlegreatideas.com/steadycam/"&gt;Poor Man's Steadycams&lt;/a&gt; at 5% of the cost of a Merlin =o).  Colorization done in Premiere and Photoshop.&lt;br /&gt;&lt;br /&gt;&lt;object width="400" height="289"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2910103&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=2910103&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="289"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/2910103"&gt;New York 2008&lt;/a&gt; from &lt;a href="http://vimeo.com/user1128030"&gt;Vicente Sahuc&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-5087240685358675447?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/5087240685358675447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=5087240685358675447' title='174 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/5087240685358675447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/5087240685358675447'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2009/02/wonderful-slow-motion-stabilized-video.html' title='Wonderful slow-motion stabilized video montage of New York'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>174</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-1898646813400327645</id><published>2009-01-26T13:33:00.000-08:00</published><updated>2009-01-26T18:22:10.746-08:00</updated><title type='text'>Impressive and Frightening</title><content type='html'>This is one of the most impressive (and frightening on several levels) pieces of engineering I've ever seen. When there exists a device that can turn a living tree into logs in under 15 seconds, it is no surprise that deforestation can be a problem. Fortunately, this appears to be a tree farm... for IKEA?&lt;br /&gt;&lt;br /&gt;The unbridled and unapologetic efficiency by which this machine performs its function leaves a visceral sensation of both awe and horror.  It is distrubingly animal-like. The fact the tree is mostly debarked by the time it hits the ground makes my jaw drop. &lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/TxM5falj_WI&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/TxM5falj_WI&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-1898646813400327645?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/1898646813400327645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=1898646813400327645' title='97 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/1898646813400327645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/1898646813400327645'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2009/01/impressive-and-frieghtening.html' title='Impressive and Frightening'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>97</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-5188337127467172832</id><published>2009-01-09T12:01:00.001-08:00</published><updated>2009-01-09T12:17:53.529-08:00</updated><title type='text'>Sensitive Object - make any surface touch sensitive</title><content type='html'>This is not extremely new technology, but not a lot of people know about it and it has evolved quite nicely in recent years. Sensitive Object is a French company that sepecializes in the use of microphones to detect touches anywhere on an arbitrary objects.  With multiple mics they can determine the location of touches or even dragging (as well as multiple dragging touches - not shown in the video below). &lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/_R1afGge8w8&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/_R1afGge8w8&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;I've had a chance to play with it in person, and it's pretty impressive stuff.  It works a lot better than I would expect.  It doesn't detect touch locations using a triangulation technique (i.e. see how long it takes for the sound to reach each microphone) because that would vary greatly depending on the material the object was made of (plastic, metal, wood, etc) and depend on the shape of the object.  Sensitive Object can do any shape like a vase, or statue.&lt;br /&gt;&lt;br /&gt;They accomplish this using a pattern matching technique.  Each touch sound gets compared to a known table of sound-to-location mappings.  Which means you have to enter this mapping during a calibration step. (i.e. give the system a couple examples of touching each location that you want to recognize, touching here sounds like this.... touching there sounds like that).  This upfront calibration step is somewhat heavy, but when you are done it's quite powerful.  You could turn a cardboard box, a basketball, your car, or even your friend's head into a touch sensitive surface (if it's hard enough).  Though, larger objects may only be "bang sensitive" surfaces.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-5188337127467172832?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/5188337127467172832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=5188337127467172832' title='70 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/5188337127467172832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/5188337127467172832'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2009/01/sensitive-object-make-any-surface-touch.html' title='Sensitive Object - make any surface touch sensitive'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>70</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-3715321741118516080</id><published>2008-12-17T10:35:00.000-08:00</published><updated>2008-12-17T10:57:53.740-08:00</updated><title type='text'>"He was like..."</title><content type='html'>While certainly not the technology focused topic I usually post, I definitely wasted a few minutes trying to sing the following chorus in the true spirit of procrastination.  Try to sing along (if you can). If you are linguistically incapable, just reading along is amusing enough.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;"he was like&lt;br /&gt;she was all&lt;br /&gt;he was all&lt;br /&gt;they were like&lt;br /&gt;we were all, &lt;br /&gt;&lt;br /&gt;like oh my god &lt;br /&gt;like totally&lt;br /&gt;&lt;br /&gt;we were like&lt;br /&gt;that was all&lt;br /&gt;they were all&lt;br /&gt;he was like&lt;br /&gt;she was like&lt;br /&gt;&lt;br /&gt;all totally &lt;br /&gt;like oh my god"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/HN1ru6_u8lY&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/HN1ru6_u8lY&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;If this was not educational enough for you, the following "anthropological introduction to YouTube" has a boring title, but is an incredibly fascinating and entertaining discussion of the cultural and social phenomena within the depths of YouTube... and relevant to the video above.  &lt;span style="font-style:italic;"&gt;Like totally.&lt;/span&gt; (warning: 1 hour talk, but definitely one of the better uses of 1 hour in my life).&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/TPAO-lZ4_hU&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/TPAO-lZ4_hU&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-3715321741118516080?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/3715321741118516080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=3715321741118516080' title='65 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/3715321741118516080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/3715321741118516080'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2008/12/song-to-learn.html' title='&quot;He was like...&quot;'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>65</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-809037996674693568</id><published>2008-12-15T17:06:00.000-08:00</published><updated>2008-12-15T17:53:54.716-08:00</updated><title type='text'>Nice Pen-based Input Research</title><content type='html'>One of the things I enjoy to using this blog for is to share cool projects from Human-Computer Interaction (HCI) research. This post highlights projects by &lt;a href="http://www.dgp.toronto.edu/~bonzo/pubs.html"&gt;Gonzalo Ramos&lt;/a&gt; (or "Gonzo" for short) and his co-authors. He has worked on several projects demonstrating how much better pen input software could be. These are just a few I like.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. The Zlider&lt;/strong&gt; - A pressure sensitive slider widget that adds additional navigation and control capability to standard slider interactions. Academic research video below. Quick demo montage at beginning, but the demo meat is &lt;a href="http://www.youtube.com/watch?v=EcE3XBytN-U&amp;#t=3m07s" target=new&gt;at 3:07&lt;/a&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/EcE3XBytN-U&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/EcE3XBytN-U&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. Using a Pen to Effortlessly Bridge Displays&lt;/strong&gt;. Using a stylus, you can simply drag documents between computer screens or mobile devices. The pen motion also implicity defines the orientation of the displays relative to one another. Academic video below. Demos at the beginning and more mobile screen scenarios at &lt;a href="http://www.youtube.com/watch?v=NcW_zxT6UvA&amp;#t=2m43s" target=new&gt;around 2:43&lt;/a&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/NcW_zxT6UvA&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/NcW_zxT6UvA&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3. Rolling the Pen as Input&lt;/strong&gt; Using an external tracker and a Wacom tablet, rotating the pen in your fingers can be used to control another parameter without moving the stylus. Academic video below, demo meat &lt;a href="http://www.youtube.com/watch?v=r9L3Zq8VrCM&amp;#t=2m19s" target=new&gt;at 2:19&lt;/a&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/r9L3Zq8VrCM&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/r9L3Zq8VrCM&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;You can check more of his projects on &lt;a href="http://www.dgp.toronto.edu/~bonzo/pubs.html"&gt;his website.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-809037996674693568?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/809037996674693568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=809037996674693568' title='164 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/809037996674693568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/809037996674693568'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2008/12/nice-pen-based-input-research.html' title='Nice Pen-based Input Research'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>164</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-8862095544918300318</id><published>2008-11-20T12:28:00.000-08:00</published><updated>2008-11-20T13:27:08.055-08:00</updated><title type='text'>Some great Wiimote IR tracking projects</title><content type='html'>I've decided to collect some of my favorite projects I've seen people do with my Wiimote projects, derivatives of them, or distantly inspired (through the creator's own admissions).  It's a surprise, and flattering to see how many people seem happy to credit me. Thanks all! The list gets more "unusual" the further you go down.&lt;br /&gt;&lt;br /&gt;Two Wiimote Whiteboards to make a competative relay race:&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/CIwT1BhWUl4&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/CIwT1BhWUl4&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Great IR wands for the Wiimote whiteboard.  I've been meaning to make these, but I haven't gotten to it yet.&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/0dq3dBYVLao&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/0dq3dBYVLao&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Some nice two handed, two finger pinching systems:&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/f75GMH4gyu0&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/f75GMH4gyu0&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/txtl51YDMYw&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/txtl51YDMYw&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Wiimote Wheelchair art. Unfortunately, no video but more information at &lt;a href="http://risknfun.com/project/digitalwheelart/"&gt;this link.&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_CPucYiWYXAQ/SSXM8Sb6JYI/AAAAAAAAAVs/7SVPDhSrzZo/s1600-h/wii_wheelchair_art.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 244px;" src="http://3.bp.blogspot.com/_CPucYiWYXAQ/SSXM8Sb6JYI/AAAAAAAAAVs/7SVPDhSrzZo/s320/wii_wheelchair_art.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5270844275020146050" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Head tracking prototypes with Anime assets.  The effect of the girl coming out of the screen (about half way through the video) is very nicely done with the "haze" layer. His other videos are also worth checking out.  I don't know what he does for a living, but he's good at it.&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/75pjBsECVHA&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/75pjBsECVHA&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Wii Theremin gallantly created/performed by Ken Moore:&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/lnYOC9tKUBs&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/lnYOC9tKUBs&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Finally, a video on "chicken head tracking".  It doesn't use the Wii remote, but was posted as a response to my video and I love it!&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/_dPlkFPowCc&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/_dPlkFPowCc&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-8862095544918300318?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/8862095544918300318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=8862095544918300318' title='262 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/8862095544918300318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/8862095544918300318'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2008/11/some-great-wiimote-ir-tracking-projects.html' title='Some great Wiimote IR tracking projects'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_CPucYiWYXAQ/SSXM8Sb6JYI/AAAAAAAAAVs/7SVPDhSrzZo/s72-c/wii_wheelchair_art.jpg' height='72' width='72'/><thr:total>262</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-6366960835270041906</id><published>2008-11-13T19:28:00.000-08:00</published><updated>2008-11-13T19:43:20.307-08:00</updated><title type='text'>Scratch Input and Low-Cost Multi-spectral material sensor</title><content type='html'>&lt;a href="http://www.chrisharrison.net/"&gt;Chris Harrison&lt;/a&gt;, a PhD Student at my old program at CMU, presented a couple projects of his at UIST 2008 that I really really like. The first is his &lt;a href="http://www.chrisharrison.net/projects/scratchinput/index.html"&gt;"Scratch Input" device&lt;/a&gt;. The basic idea is that if you place a senstive microphone on the bottom of a mobile device. Any large, hard surface you put it down on can now be used as an input gesture surface. A variety of gestures can be distinctly and reliably detected with some simple machine learning. Video (academic) below include a nice demo where he turns his entire wall into an MP3 player controller:&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/2E8vsQB4pug&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/2E8vsQB4pug&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;The other project he presented was a simple, &lt;a href="http://www.chrisharrison.net/projects/placementaware/index.html"&gt;cheap multi-spectral sensor for recognizing various materials&lt;/a&gt;. It includes an IR LED, UV LED, RGB LED, a photoresistor, and a TSL230 TOAS optical sensor.  With these, he read the reflectively under different illuminations to recognize 27 different materials with 86.9% accuracy, be this your jeans, your backpack, your desk at home, your desk at work.  This means coarse location awareness of mobile devices for cheap, some opportunities for more intelligent power management, and implicit security behaviors when placed on familiar or unfamiliar surfaces.  Very nice work.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_CPucYiWYXAQ/SRzyEq0vmWI/AAAAAAAAAVk/ypXSo-Wprws/s1600-h/photosensor.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5268351826145548642" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 222px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_CPucYiWYXAQ/SRzyEq0vmWI/AAAAAAAAAVk/ypXSo-Wprws/s320/photosensor.jpg" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-6366960835270041906?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/6366960835270041906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=6366960835270041906' title='157 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/6366960835270041906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/6366960835270041906'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2008/11/scratch-input-and-low-cost-multi.html' title='Scratch Input and Low-Cost Multi-spectral material sensor'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_CPucYiWYXAQ/SRzyEq0vmWI/AAAAAAAAAVk/ypXSo-Wprws/s72-c/photosensor.jpg' height='72' width='72'/><thr:total>157</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-5648515127961512009</id><published>2008-11-07T03:21:00.001-08:00</published><updated>2008-11-07T03:36:37.871-08:00</updated><title type='text'>SurfaceWare - sensing glasses for Surface</title><content type='html'>My colleague, Paul Dietz, in the Applied Sciences group released a video of one of his first projects he did when he joined Microsoft.  These glasses use the transparent material of the glass as prisms that sense the amount of liquid in them by watching the amount of internally reflected IR light. Check out the video:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/DG3_2lvoL8A&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/DG3_2lvoL8A&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;If you aren't familiar with how Surface works, it is a rear projected table that also has a bright IR emitter inside that illuminates objects placed on the surface which are then visible to an IR camera. The video does a good job explaining how the glasses work.&lt;br /&gt;&lt;br /&gt;This is actually a revisit of an older project of Paul's called &lt;a href="http://www.merl.com/projects/iGlassware/"&gt;iGlassware&lt;/a&gt;.  That one used passively powered RFID sensor tags in the base of the glass to capacitively measure the liquid level.  The table had a big RFID antenna in it. Paul was also a key developer of Mitsubishi Electric Research Lab's Diamond Touch table being skillfully demonstrated by Ed Tse below.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/5O1bTNbbWk4&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/5O1bTNbbWk4&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Ed is currently at Smart Technologies, who helped push out their new touch table:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/b_FRmYXtneQ&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/b_FRmYXtneQ&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-5648515127961512009?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/5648515127961512009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=5648515127961512009' title='105 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/5648515127961512009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/5648515127961512009'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2008/11/surfaceware-sensing-glasses-for-surface.html' title='SurfaceWare - sensing glasses for Surface'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>105</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-7712477739801145237</id><published>2008-10-09T17:17:00.000-07:00</published><updated>2008-10-09T18:13:18.946-07:00</updated><title type='text'>Andy Wilson</title><content type='html'>I was re-watching some videos of work done by one my colleagues Andy Wilson, and I don't think his work gets as much attention as it deserves given how amazing it is.  If you think my stuff is cool, you should bow down to his greatness... or at least watch these videos. &lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/AtmwQnUlEmc&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/AtmwQnUlEmc&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/PnEP64dc7Aw&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/PnEP64dc7Aw&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-7712477739801145237?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/7712477739801145237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=7712477739801145237' title='238 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/7712477739801145237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/7712477739801145237'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2008/10/andy-wilson.html' title='Andy Wilson'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>238</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-3052168744127982146</id><published>2008-09-04T17:51:00.000-07:00</published><updated>2009-04-20T16:20:00.179-07:00</updated><title type='text'>Working with the PixArt camera directly</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_CPucYiWYXAQ/SMCC4DqHw-I/AAAAAAAAAQ8/d2YmckBdwfk/s1600-h/IMGP0393.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5242333865825518562" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_CPucYiWYXAQ/SMCC4DqHw-I/AAAAAAAAAQ8/d2YmckBdwfk/s320/IMGP0393.JPG" border="0" /&gt;&lt;/a&gt; This has been a pretty whirlwind past few months. Lots of things have happened, almost none of which procrastineering related which is why I haven't posted anything here. But, one of the things that I have poked at in the past few weeks was creating a PixArt to USB-HID device which allows the camera from the Wiimote to appear as a relatively easy to access USB device. This addresses several problems with using the Wiimote such as running off batteries for extended periods and flakey platform specific Bluetooth drivers. It's also possible to read from the Pixart cam at over 100Hz if you read directly via I2C as well as track visible dots once you remove the IR filter. Of course, none of this was discovered by me. All credit belongs to the numerous individuals who have contributed thier knowledge to the various Wiimote hacking websites. Normally, this project wouldn't be worth a post, but all the information on how to do this is pretty scattered and difficult to follow. So, I figured I would contribute by trying to making this all a bit clearer.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This project is fairly advanced. You must be comfortable with working with microcontrollers. Several simpler devices such as the &lt;a href="http://www.arduino.cc/"&gt;Arduino&lt;/a&gt; or the &lt;a href="http://www.parallax.com/tabid/295/Default.aspx"&gt;Basic Stamp&lt;/a&gt; may work, but I used the 18F4550 &lt;a href="http://en.wikipedia.org/wiki/PIC_microcontroller"&gt;PIC Microcontroller&lt;/a&gt; which provides built-in full-speed USB capabilites. But first, let talk about the PixArt camera:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p align="center"&gt;&lt;a href="http://1.bp.blogspot.com/_CPucYiWYXAQ/SMCIsAJK67I/AAAAAAAAARU/hFazchY_tlw/s1600-h/pixart+pinout.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5242340255793343410" style="CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_CPucYiWYXAQ/SMCIsAJK67I/AAAAAAAAARU/hFazchY_tlw/s320/pixart+pinout.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="left"&gt;Here's the pinout thanks to &lt;a href="http://www.kako.com/neta/2007-001/2007-001.html"&gt;kako&lt;/a&gt; and a PCB picture. The Reset pin is active low, so use a pullup resistor to Vcc. The Wiimote runs the camera with a 25Mhz clock, but it also works with a 20Mhz clock so you might get away with fudging this a bit. The &lt;a href="http://www.totalphase.com/support/kb/10037/"&gt;I2C communication&lt;/a&gt; is fast 400Khz and the slave device address is 0xB0. Most microcontroller development platforms should include I2C communication capabilities. If yours doesn't, get a better dev kit =o). Desoldering the camera can be hard with so many pins. But, careful use of a hot air gun will do the trick. The first part is to initialize the camera over I2C. Here's the pseudo code for initializing to maximum sensitivity (actual CCS C code in comments):&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-size:85%;"&gt;write(hex): B0 30 01&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-size:85%;"&gt;wait 100ms&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-size:85%;"&gt;write(hex): B0 00 00 00 00 00 00 00 90 //sensitivity part 1&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-size:85%;"&gt;wait 100ms&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-size:85%;"&gt;write (hex): B0 07 00 41 //sensitivity part 2&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-size:85%;"&gt;wait 100ms&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-size:85%;"&gt;write(hex): B0 1A 40 00 //sensitivity part 3&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-size:85%;"&gt;wait 100ms &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-size:85%;"&gt;write(hex): B0 33 03 //sets the mode&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-size:85%;"&gt;wait 100ms&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-size:85%;"&gt;write(hex): B0 30 08&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span style="font-size:85%;"&gt;wait 100ms&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;p align="left"&gt;It's still somewhat mysterious to me what all these mean, but in this mess is the sensitivity and mode settings described at &lt;a href="http://wiibrew.org/wiki/Wiimote"&gt;Wiibrew&lt;/a&gt;. The above code uses the sensitivity setting suggested by inio "00 00 00 00 00 00 90 00 41, 40 00" experssed in the 2nd, 3rd, and 4th message. The wait times are conservatively long. After you initialize, you can now read samples from it:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;write(hex): B0 37 //prepare for reading&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;wait 25us&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;write(hex): B1 //read request&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;read 8 bytes&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;wait 380us&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;write(hex): B1 //read request&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;read 4 bytes&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p align="left"&gt;This yeilds one sample from the camera containing 12 bytes, 3 for each of the 4 potential points. The format of the data will be the Extended Mode (X,Y, Y 2-msb, X 2-msb, Size 4-bits). The wait timings approximate what the Wiimote does. I've called this routine 1000 times per second without ill effect. Though, I doubt this is actually scanning the sensor and instead is just reporting the contents of an interal buffer. But, people claim 200Hz updates are possible. So, you can use that as a suggestion.&lt;/p&gt;&lt;p align="left"&gt;Hooking this up to your microcontroller is pretty straight forward. Give the camera 3.3v power using a voltage regulator, ground, a 20-25Mhz clock, and connect the SDA and SCL lines (don't forget your pull up resistors), and pull up the reset pin.&lt;/p&gt;&lt;p align="left"&gt;The &lt;a href="http://www.ccsinfo.com/content.php?page=compilers"&gt;CCS C Compiler &lt;/a&gt;for the PIC18F4550 includes USB-HID sample code. It's simply a matter of stuffing the data you got from the PixArt camera into the input report buffers for the USB. With this, you could actually create a USB mouse profile and make it control the cursor without any software or drivers at all. If set it up as a full speed device, it's possible to get 1ms reports providing extremely low latency updates. CCS provides relatively affordable &lt;a href="http://www.ccsinfo.com/product_info.php?cPath=Store_Software&amp;amp;products_id=icdmachx"&gt;PIC programmers &lt;/a&gt;as well. Explaining how to set all this up is not within the scope of this post, but it should be plenty to get you started. If you want to make a PCB, you can try &lt;a href="http://www.expresspcb.com/"&gt;ExpressPCB&lt;/a&gt; which can get you boards in-hand for as low as $60.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update 9/6/08:&lt;/strong&gt; Just a note about the clock. Since my PIC was using a 20Mhz resonator, I just piggy backed the Pixart clock pin off the OSC2/CLKO pin of the PIC which seemed to work fine. Also, Kako has more details (in Japanese) on &lt;a href="http://kako.com/neta/2008-009/2008-009.html"&gt;doing this with an Arduino&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-3052168744127982146?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/3052168744127982146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=3052168744127982146' title='124 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/3052168744127982146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/3052168744127982146'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2008/09/working-with-pixart-camera-directly.html' title='Working with the PixArt camera directly'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_CPucYiWYXAQ/SMCC4DqHw-I/AAAAAAAAAQ8/d2YmckBdwfk/s72-c/IMGP0393.JPG' height='72' width='72'/><thr:total>124</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-8021659901989240322</id><published>2008-06-23T00:01:00.000-07:00</published><updated>2008-06-23T16:59:18.003-07:00</updated><title type='text'>More Wiimote Projects - A Brain Dump</title><content type='html'>It’s been a while since I’ve posted anything.&lt;span style=""&gt;  &lt;/span&gt;That’s largely because I’ve been traveling a lot, giving talks, and most recently relocating to a new city.&lt;span style=""&gt;  &lt;/span&gt;It became clear to me a while ago that I wasn’t going to get around to making more videos anytime soon.&lt;span style=""&gt;  &lt;/span&gt;So, I figured I would make a post about the projects that I would probably make videos of if I had more free time.&lt;span style=""&gt;  &lt;/span&gt;The content of this post has been in the talks that I’ve been giving, but I’m just sitting down to write it out now for my trusty blog readers.  &lt;p style="font-weight: bold;" class="MsoNormal"&gt;1. Throwable Displays using the Wii remote&lt;/p&gt;    &lt;p class="MsoNormal"&gt;This I actually built and demoed in my lab at CMU.&lt;span style=""&gt;  &lt;/span&gt;But, it only existed for about two days before I had to break it down to move and I didn’t get a chance to document it. Several months ago, a &lt;a href="http://gizmodo.com/355394/philips-patents-throwable-display-for-gaming"&gt;patent filed by Philips made some of the tech new sites&lt;span style=""&gt; &lt;/span&gt;about throwable displays in games&lt;/a&gt;.&lt;span style=""&gt;  &lt;/span&gt;But it was a concept patent pretty far from a working demo.&lt;span style=""&gt;  &lt;/span&gt;However, it turns out it’s pretty easy to implement using a projector, a wiimote, an IR emitter, and some of our trusty retro-reflective tape.&lt;span style=""&gt;  &lt;/span&gt;It essentially combines the techniques from the finger tracking and the wiimote whiteboard projects.&lt;span style=""&gt;  &lt;/span&gt;You put a little bit of reflective tape on each corner of a square piece of foam core, turn on the IR emitter so the Wiimote can see the four corners, align the camera tracking data with a projector using the 4-point calibration, and then the projector can display images perfectly aligned to the edges of a moving piece of foam core.&lt;span style=""&gt;  &lt;/span&gt;The process of using a projector to augment the appearance of objects is called “Spatially Augmented Reality”.&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Research colleagues of mine made a really fun demo where they tracked an air hockey puck from above and projected down on the air hockey table to display all sorts of visual effects that responded to the location/motion of the puck.&lt;span style=""&gt;  &lt;/span&gt;They were demonstrating a fancy new type of high-speed tracking system.&lt;span style=""&gt;  &lt;/span&gt;But, the Wiimote works quite well at 100Hz. &lt;span style=""&gt; &lt;/span&gt;I wish I had documented the throwable display on video, because it worked quite well. You really could pick it up and throw it around and the video image stays fairly locked onto the surface. There's a small latency primarily due to the 60Hz refresh of the projector. I even made a rough demo of the air hockey table, but it was VERY rough - just drew a line tail behind the puck. Again, a little patch of reflective tape on the puck and IR ring illuminated Wiimote above.&lt;span style=""&gt;  &lt;/span&gt;However, the throwable display concept is actually a simpler implementation of a project I did earlier on “Foldable Displays” (tracked using a Wii remote) which I did make a video of, but not in tutorial format like my other Wii videos:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/nhSR_6-Y5Kg&amp;amp;hl=en"&gt;&lt;embed src="http://www.youtube.com/v/nhSR_6-Y5Kg&amp;amp;hl=en" type="application/x-shockwave-flash" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-weight: bold;" class="MsoNormal"&gt;2. 3D tracking using two (or more) Wii remotes&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Since the tracking in the Wiimote is done with a camera, if you have two cameras you can do a simple stereo vision triangulation to do full 3D motion capture for about $100.&lt;span style=""&gt;  &lt;/span&gt;This was actually already done by some people at the University of Cambridge:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/CT6aQN-lwmo&amp;amp;hl=en"&gt;&lt;embed src="http://www.youtube.com/v/CT6aQN-lwmo&amp;amp;hl=en" type="application/x-shockwave-flash" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;This is text book computer vision algorithm, but I haven’t gotten around to making a C# implementation.&lt;span style=""&gt;  &lt;/span&gt;Obviously, you can use more than 2 wii remotes to increase tracking stability as well as increase occlusion tolerance.&lt;span style=""&gt;  &lt;/span&gt;This would be a VERY useful and popular utility if anyone out there wants to make a nice software tool to transform multiple wiimotes into a cheap mocap system.&lt;/p&gt;&lt;p style="font-weight: bold;" class="MsoNormal"&gt;3. Universal Pointer using the Wii remote&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The nice thing about the camera is that it can detect multiple points in different configurations.&lt;span style=""&gt;  &lt;/span&gt;The four dots could be used to create a set of barcode-like or glyph-like identifiers above each screen in a multi-display environment.&lt;span style=""&gt;  &lt;/span&gt;This would not only provide pointing functionality on each screen, but also provide screen ID which means you could interact with any cooperating computer simply by pointing at its screen. No fumbling for the mouse and keyboard, just walk around the room, or office building, or campus, and point at a screen.&lt;span style=""&gt;  &lt;/span&gt;If all the computers were networked, you could carry files with your Wiimote virtually (using the controller ID) letting you copy/paste or otherwise manipulate documents across arbitrary screens regardless of what computer is driving the display or what input device is attached to the computer.&lt;span style=""&gt;  &lt;/span&gt;You just carry your universal pointer that works on any screen, anywhere automatically. This makes a big infrastructure assumption, but it really alters the way one could interact with computational environments. The computers disappear and it becomes just a bunch of screens and your universal pointer.&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Similarly, arbitrary objects could have unique IR identifiers. For example, if each lamp in your house had a uniquely shaped Wii sensor bar on it (and they were computer controlled lamps, of course), you could turn on a specific lamp simply by pointing at it and pressing a button or dim it by rotating the wiimote. If was an RGB led lamp, you could specify brightness, hue, and saturation with a quick gesture..&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;p style="font-weight: bold;" class="MsoNormal"&gt;4. Laser Tag using Wii remotes&lt;/p&gt;  &lt;p class="MsoNormal"&gt;If you put IR leds on each of the Wii remotes, they can see each other.&lt;span style=""&gt;  &lt;/span&gt;So, you can have a laser-tag like interaction just using Wii remotes – no display, except perhaps if you wanted a big score board. You’d have to validate which Wii remote you were shooting at, which you would do using some kind of IR LED blink sequence for confirmation.&lt;span style=""&gt;  &lt;/span&gt;Just wire up the IR leds to the LEDs built into the Wii remote, so you can computer control their illumination.&lt;/p&gt; &lt;p style="font-weight: bold;" class="MsoNormal"&gt;5. IR tracking with ID using the Wii remote&lt;/p&gt;  &lt;p class="MsoNormal"&gt;This is more technical (and related to the above idea), but it addresses an important issue that I have yet to see done in either commercial or research systems.&lt;span style=""&gt;  &lt;/span&gt;The problem with IR blob tracking using cameras is that you can’t which blob is which.&lt;span style=""&gt;  &lt;/span&gt;You could blink the LEDs to broadcast their ID.&lt;span style=""&gt;  &lt;/span&gt;But, this 1) would be slow because the ID data rate is limited by the frame rate of the camera 2) really hurts your tracking rate/reliability because you don’t know where the dot is when the LED is off.&lt;span style=""&gt;  &lt;/span&gt;Now, the Wii remote’s camera chip gives 100Hz update, which might be tolerable for a small number of IDs.&lt;span style=""&gt;  &lt;/span&gt;But, this approach doesn’t really work well when you want fast tracking with lots of unique IDs.&lt;span style=""&gt;  &lt;/span&gt;One solution is to attach a high speed IR receiver to the side of the Wii remote for data transmission and simply use the camera for location tracking.&lt;span style=""&gt;  &lt;/span&gt;IR receivers used in your TV probably support data rates of around 4000 bps - much higher than the 50 bps sampling limit you could squeeze out of the Wii remote.&lt;span style=""&gt;  &lt;/span&gt;So, as the LEDs furiously blink their IDs at 4Kbps, they look like they are constantly on to the camera.&lt;span style=""&gt;  &lt;/span&gt;This yields good tracking as well as many IDs.&lt;span style=""&gt;  &lt;/span&gt;Now when you have multiple LEDs transmitting simultaneously, you’ll get packet collisions. So, some type of collision avoidance scheme would be needed of which there are many to choose from.&lt;span style=""&gt;  &lt;/span&gt;It will also be necessary to re-associate the data packet with a visible dot.&lt;span style=""&gt;  &lt;/span&gt;So, not all the LEDs can be visible all the time.&lt;span style=""&gt;  &lt;/span&gt;But, you only have to sacrifice a small number of camera frames to support a large number of IDs.&lt;span style=""&gt;  &lt;/span&gt;You can also probably boost performance if you are willing to accept short term probabilistic ID association.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-8021659901989240322?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/8021659901989240322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=8021659901989240322' title='275 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/8021659901989240322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/8021659901989240322'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2008/06/brain-dump.html' title='More Wiimote Projects - A Brain Dump'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>275</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-8620649308724271990</id><published>2008-03-27T15:11:00.001-07:00</published><updated>2008-12-11T11:10:19.216-08:00</updated><title type='text'>WiimoteWhiteboard v0.2 - slightely updated/fixed</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_CPucYiWYXAQ/R-wcCC4IH8I/AAAAAAAAAPQ/sYq8isFexv8/s1600-h/wiimote2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_CPucYiWYXAQ/R-wcCC4IH8I/AAAAAAAAAPQ/sYq8isFexv8/s320/wiimote2.jpg" alt="" id="BLOGGER_PHOTO_ID_5182548092654198722" border="0" /&gt;&lt;/a&gt;Hi, all.  I got a few moments yesterday to make a couple of small  improvements to the Wiimote Whiteboard software. Most notably, I improved the mouse emulation code. There were problems where it wouldn't work with some programs like PowerPoint, Alias Sketchbook, etc.  So, those work fine now.&lt;br /&gt;&lt;br /&gt;I also added a "Tracking Utilization" feedback to the GUI which tells you how much of the camera you are utilizing for tracking.  This gets updated after calibration.  This provides a way to evaluate how good your Wiimote placement is which directly impacts tracking quality.  Getting this number to 100% is virtually impossible in any usable configuration, but dropping below 50% is a sign of not-so-great Wiimote placement.&lt;br /&gt;&lt;br /&gt;I've also updated the code to use Brian Peeks's WiimoteLib v1.2.  I think this may help a little with greater Bluetooth/Vista compatibility.  On a technical note, the WiimoteLib in this download is slightly modified to increase the Wiimote camera sensitivity.&lt;br /&gt;&lt;br /&gt;You can use this link to download the new version: &lt;a href="http://www.cs.cmu.edu/%7Ejohnny/projects/wii/WiimoteWhiteboardv02.zip"&gt;WiimoteWhiteboard v0.2&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-8620649308724271990?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/8620649308724271990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=8620649308724271990' title='177 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/8620649308724271990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/8620649308724271990'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2008/03/wiimotewhiteboard-v02-slightely.html' title='WiimoteWhiteboard v0.2 - slightely updated/fixed'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_CPucYiWYXAQ/R-wcCC4IH8I/AAAAAAAAAPQ/sYq8isFexv8/s72-c/wiimote2.jpg' height='72' width='72'/><thr:total>177</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-6680877285247347576</id><published>2008-03-22T10:02:00.000-07:00</published><updated>2008-03-22T10:12:22.321-07:00</updated><title type='text'>Inspiring Students</title><content type='html'>One of the great, unexpected, and perhaps most influential aspects of creating these videos has been how many people they have inspired and sparked an innovative spirit in.  I've gotten hundreds of emails from young students that express this enthusiasm. But, perhaps one of the best testimonials is this news article about kids in the &lt;a href="http://www.dailypress.com/news/local/community/williamsburg/dp-town_inventors_0321mar21,0,1801961.story"&gt;Clara Byrd Baker Elementary School's Lego Club &lt;/a&gt; in Williamsburg, VA.  The students there, lead by Kofi Merritt, are getting excited about innovating in technology by creating their own electronic white boards.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-6680877285247347576?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/6680877285247347576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=6680877285247347576' title='33 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/6680877285247347576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/6680877285247347576'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2008/03/inspiring-students.html' title='Inspiring Students'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>33</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-1549669207823121927</id><published>2008-03-13T20:08:00.001-07:00</published><updated>2008-12-11T11:10:19.390-08:00</updated><title type='text'>Tracking multiple laser pointers @ 200Hz using the Wii remote</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.youtube.com/watch?v=WsvK7Euwa-I"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_CPucYiWYXAQ/R9nsU1X-LmI/AAAAAAAAAPA/23hBBc4aXZw/s320/laserpointer+tracking.jpg" alt="" id="BLOGGER_PHOTO_ID_5177429089308257890" border="0" /&gt;&lt;/a&gt;A couple of videos (&lt;a href="http://www.youtube.com/watch?v=ssMlodh2n4U&amp;amp;feature=user"&gt;vid1&lt;/a&gt; and &lt;a href="http://www.youtube.com/watch?v=WsvK7Euwa-I&amp;amp;feature=related"&gt;vid2&lt;/a&gt;) from sha433 demonstrate that if you are willing to crack open your Wii remote (you'll need a &lt;a href="http://www.google.com/search?complete=1&amp;amp;hl=en&amp;amp;c2coff=1&amp;amp;safe=off&amp;amp;sa=X&amp;amp;oi=spell&amp;amp;resnum=0&amp;amp;ct=result&amp;amp;cd=1&amp;amp;q=tri+wing+screwdriver&amp;amp;spell=1"&gt;tri-wing screw driver&lt;/a&gt;) and take out the IR filter, the camera will track visible points of light, including laser pointers.  That's pretty neat.  Additionally, it has also been recently discovered by a few people that if you read the data directly off the camera chip using I2C, you can get 200 Hz tracking (vs 100Hz that you get over Bluetooth).  It looks like there might be a latency hit, though, depending on how you get the data into your computer.&lt;br /&gt;&lt;br /&gt;So, if you are willing to get a little down and dirty with the hardware, you can pull out quite a bit more capability!  Good job Sha!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-1549669207823121927?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/1549669207823121927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=1549669207823121927' title='63 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/1549669207823121927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/1549669207823121927'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2008/03/tracking-multiple-laser-pointers-200hz.html' title='Tracking multiple laser pointers @ 200Hz using the Wii remote'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_CPucYiWYXAQ/R9nsU1X-LmI/AAAAAAAAAPA/23hBBc4aXZw/s72-c/laserpointer+tracking.jpg' height='72' width='72'/><thr:total>63</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-4893121493860329763</id><published>2008-03-13T15:55:00.001-07:00</published><updated>2008-12-11T11:10:19.720-08:00</updated><title type='text'>YouTube Awards: Nominated for Best Instructional Video of 2007</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.youtube.com/ytawards07"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_CPucYiWYXAQ/R9mw81X-LlI/AAAAAAAAAO4/oaU_Q4Fv6wc/s320/bestofyt.jpg" alt="" id="BLOGGER_PHOTO_ID_5177363805805358674" border="0" /&gt;&lt;/a&gt;Hey all, (shameless plug) it looks like my video on head-tracking was nominated for the Youtube Award - &lt;span style="font-weight: bold;"&gt;Best Instructional Video of 2007&lt;/span&gt;! Very neat. =o)  &lt;a href="http://www.youtube.com/ytawards07"&gt;Please, go to the site and cast your vote!&lt;/a&gt; Thanks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-4893121493860329763?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/4893121493860329763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=4893121493860329763' title='43 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/4893121493860329763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/4893121493860329763'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2008/03/youtube-awards-nominated-for-vest.html' title='YouTube Awards: Nominated for Best Instructional Video of 2007'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_CPucYiWYXAQ/R9mw81X-LlI/AAAAAAAAAO4/oaU_Q4Fv6wc/s72-c/bestofyt.jpg' height='72' width='72'/><thr:total>43</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-1816078128951604262</id><published>2008-02-22T01:44:00.000-08:00</published><updated>2008-12-11T11:10:19.881-08:00</updated><title type='text'>EA's Boom Blox to include Wiimote Headtracking</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.joystiq.com/2008/02/21/gdc08-boom-blox-to-include-head-tracking-seriously/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_CPucYiWYXAQ/R76cbfZ8MvI/AAAAAAAAAOY/or_CBbFe1gk/s320/BoomBlox.jpg" alt="" id="BLOGGER_PHOTO_ID_5169741418368611058" border="0" /&gt;&lt;/a&gt;Louis Castle announced yesterday at GDC2008 that EA's upcoming title "Boom Blox" will ship with an &lt;a href="http://www.joystiq.com/2008/02/21/gdc08-boom-blox-to-include-head-tracking-seriously/"&gt;easter egg that allows head-tracking using the Wii remote!&lt;/a&gt;  Very cool. Here's the &lt;a href="http://digg.com/nintendo/Head_tracking_in_Steven_Spielberg_s_Boom_Blox_no_really"&gt;Digg article&lt;/a&gt; someone created for it - which you should all digg to help drum up some attention and demand for this feature.  Reward the developers who decided this was worth including and send a signal to EA and the greater game development community that this is a desired step forward in the evolution of game play technology.  The expected release will be in May.&lt;br /&gt;&lt;br /&gt;I'm proud.  If this pans out, it'll be only 5 months between the initial research prototype to integration into a major product release.  Sweet!  Happy to see my stuff being used.  Humorously, there were 3 other demos on the GDC expo floor showing variations of my head tracking demo. =o)&lt;br /&gt;&lt;br /&gt;Just in case you are wondering: No, I don't get any royalties or benefits for the use of this technique in games.  Personally, I'm much happier impacting the state of technology on such a large scale in such a short period of time rather than struggling to transform it into personal financial gain.  In terms of my original intent behind creating the head-tracking demo, it has already been a wild success beyond my highest expectations.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.joystiq.com/2008/02/21/gdc08-boom-blox-to-include-head-tracking-seriously/"&gt;Joystiq article&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://digg.com/nintendo/Head_tracking_in_Steven_Spielberg_s_Boom_Blox_no_really"&gt;Digg article&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-1816078128951604262?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/1816078128951604262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=1816078128951604262' title='275 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/1816078128951604262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/1816078128951604262'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2008/02/eas-boomblox-to-include-wiimote.html' title='EA&apos;s Boom Blox to include Wiimote Headtracking'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_CPucYiWYXAQ/R76cbfZ8MvI/AAAAAAAAAOY/or_CBbFe1gk/s72-c/BoomBlox.jpg' height='72' width='72'/><thr:total>275</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-6182012240188828905</id><published>2008-01-09T13:53:00.000-08:00</published><updated>2008-01-09T14:00:55.704-08:00</updated><title type='text'>Official Wiimote Project Forum!</title><content type='html'>The number of comments on my blog posts have gotten rather unweildy making them difficult read and thus, not extremely useful. It has become clear that a full up discussion forum is needed to manage the threads of conversation. I know there is already a lot of chatter scattered all around the web about these Wiimote projects, so hopefully this isn't too late to centralize some of that discussion.&lt;br /&gt;&lt;br /&gt;JD has honorably stepped up the challenge.  So,... announcing the official discussion forum for wii remote projects!&lt;br /&gt;&lt;br /&gt; &lt;a href="http://www.wiimoteproject.com/"&gt;http://www.wiimoteproject.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Everyone give JD a pat on the back, and try to use the forum for discussing wii remote projects. I'll try to add links to this forum on the main project page.&lt;br /&gt;&lt;br /&gt;Link to the &lt;a href="http://www.wiimoteproject.com/"&gt;WiimoteProject Forum&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-6182012240188828905?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/6182012240188828905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=6182012240188828905' title='71 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/6182012240188828905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/6182012240188828905'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2008/01/official-wiimote-project-forum.html' title='Official Wiimote Project Forum!'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>71</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-530064446792574852</id><published>2007-12-21T22:59:00.000-08:00</published><updated>2008-01-04T20:44:45.963-08:00</updated><title type='text'>Wiimote DesktopVR - FAQ and Adv Discussion</title><content type='html'>A lot of very smart people have written in questions and suggestions and I think a lot of them are very clever and worth sharing... and I'd like to add some of my own expansions on what I showed in the video. Like they say, 2 brains are better than 1.... it turns out several thousand brains are even better. This post will be REGULARLY EDITTED to add new ideas as they come in. I know it breaks the RSS model, but I don't want to make a new post for every new idea. Sorry.&lt;br /&gt;-------------------------------------------&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Shutter/polarized glass&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;es&lt;/span&gt; - if you are going to put something on your head covering your eyes for 3D, it is worth considering making shutter/polarized glasses which allows the computer to deliver a different image to each eye. This results in stereoscopic displays. Combined with head tracking, you get a DARPA grade 3D simulator. When just doing head tracking, the conflicting stereo depth cues weakens the illusion. I would love to do this, but it's quite a bit more hardware, and requires synchronization with the display refresh (or light polarization) which often isn't easy especially given the wide variety of display technologies out there.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Split screen for 2 people&lt;/span&gt; - if you split the screen and use two head mounted sensor bars, you can do this for two people... and possibly with one tracking wiimote. One wiimote does 4 dots, so it could (with some smarts) handle two heads. The field of view of a wiimote is only 45 degrees, so it might be cramped with 2 people. But, you could use one wiimote per head and still do split screen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-530064446792574852?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/530064446792574852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=530064446792574852' title='305 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/530064446792574852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/530064446792574852'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2007/12/wiimote-desktopvr-faq-and-adv.html' title='Wiimote DesktopVR - FAQ and Adv Discussion'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>305</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-6597014165696655974</id><published>2007-12-21T22:39:00.001-08:00</published><updated>2008-01-09T02:28:35.689-08:00</updated><title type='text'>Wiimote Whiteboard - FAQ and Adv Discussion</title><content type='html'>A lot of very smart people have written in questions and suggestions and I think a lot of them are very clever and worth sharing... and I'd like to add some of my own expansions on what I showed in the video. Like they say, 2 brains are better than 1.... it turns out several thousand brains are even better. This post will be REGULARLY EDITTED to add new ideas as they come in. I know it breaks the RSS model, but I don't want to make a new post for every new idea. Sorry.&lt;br /&gt;------------------------------------&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;My Bluetooth adapter and LED&lt;/span&gt;s - Though it is reported to work with many bluetooth adapters and chipsets, I've been using &lt;a href="http://www.sparkfun.com/commerce/product_info.php?products_id=150"&gt;this one sold by SparkFun electronics&lt;/a&gt;. The IR LEDs I use are Vishay TSAL6400s running at 100mA available from &lt;a href="http://mouser.com/"&gt;Mouser&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tip switch&lt;/span&gt; - Instead of pressing the side button to illuminate the LED, a tip swtich could be added to illuminate when pressed on a surface. Though, it's mechanically harder to make and finding the right level of pressure for activation can be hard, especially if your surface varies (ex: whiteboard vs carpet)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Can you do this with a webcam?&lt;/span&gt; - The wii remote contains a 1024x768 camera with built-in hardware for IR blob tracking of upto 4 points at 100Hz. This significantly outperforms any $40 webcam I'm aware of. It'll work with a webcam, just not as well and not as easily.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;Rear-Projection&lt;/span&gt;&lt;/span&gt;&lt;span&gt; - using a rear projected surface, works great. The software will automatically work as-is so long as your pen is bright enough to shine through the projection surface. The wiimote gets a unobstructed view of the screen which eliminates occlusion problems and maximizes tracking resolution. Though, actually building a rear-projection wall or table can be a little difficult if you don't already have one.&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;Pressure sensitivity&lt;/span&gt; - wacom tablets give nice pressure sensitive behavior. Doing this with the wiimote whiteboard will be tough, at least through the camera data. The brightness of the LED varies significantly depending on angle, surface reflectivity, and distance. Any pressure data based off birghtness will not be reliable. The data could be transmitted via a high-frequency IR channel (like remote contol data) to an IR reciever mounted on the wiimote. (see "Right click" for more)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Right Click&lt;/span&gt; - any right click signal based off brightness is not likely going to be reliable. Additionally, using multiple LEDs (1 - left click, 2- right click) won't work at all distances and orientations as the LEDs get too close for the wiimote to distinguish them. The RIGHT way to do this is to use high-frequency IR data transmission (like remote control data) to an IR reciever. This will also give you a way of potentially getting pen ID - which is VERY powerful and may be a future project. Though, this requires quite a bit more hardware.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Multiple wiimotes for better tracking&lt;/span&gt; - if you have a large surface, you could have multiple wiimotes covering different areas to keep tracking reslution high, or have the wiimotes cover the same area to avoid occlusion problems, or do some interpolation of the data for higher accuracy. All possible, just with the smarter software. Doing this myself is probably not going to happen, but the source is freely available.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-6597014165696655974?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/6597014165696655974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=6597014165696655974' title='257 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/6597014165696655974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/6597014165696655974'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2007/12/wiimote-whiteboard-faq-and-adv.html' title='Wiimote Whiteboard - FAQ and Adv Discussion'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>257</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-2132391051238866520</id><published>2007-12-21T22:18:00.000-08:00</published><updated>2008-01-04T21:43:18.311-08:00</updated><title type='text'>Wiimote Finger Tracking -FAQ and Adv Discussion</title><content type='html'>A lot of very smart people have written in questions and suggestions and I think a lot of them are very clever and worth sharing... and I'd like to add some of my own expansions on what I showed in the video. Like they say, 2 brains are better than 1.... it turns out several thousand brains are even better. This post will be REGULARLY EDITTED to add new ideas as they come in. I know it breaks the RSS model, but I don't want to make a new post for every new idea. Sorry.&lt;br /&gt;------------------------&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;LED arrays from security cameras&lt;/span&gt; - online stores sell IR LED arrays for night vision security cameras.  These should work perfectly for the wiimote.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Gloves&lt;/span&gt; - gloves exactly like minority report are definitely do-able and probably a good idea for repeated use.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;LEDs on fingers&lt;/span&gt; - instead of tape you can use LED lights and do this without the LED array. But, you effectively create IR pens similar to the WiimoteWhiteboard demo which means batteries on the glove too.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Pinching with thumb and forefinger&lt;/span&gt; - the wiimote does upto 4 points. So both left and right thumb and finger could be tagged with reflective tape or LEDs. The software needs to be smart about maintaining the correct association and recognizing pinches, but very do-able.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tagging a wiimote and knunchuck&lt;/span&gt; - getting the spatial location of another wiimote and knunchuck using a wiimote and reflective tape is an idea VERY much worth exploring. Now you get bi-manual (two handed) positional input in addition to all the accelerometer data and buttons.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tracking fingers on surfaces (instead of the air)&lt;/span&gt; - unless it's a rear projection surface, the tape will be facing the wrong way... though you might be able to put the tape on the back of the fingers and figure out some method of triggering input. That said, it'll probably work well on a rear projection surface. You may need to offset the view angle of the wiimote so the support glass/acrylic won't retroreflect the light back to the wiimote. Alternatively, use active LED points.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tagging objects on tables and projection&lt;/span&gt;- combining this method of tracking with projection is VERY powerful. This is essentially a field of research called Augmented Reality and will likely the be subject of a future video.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-2132391051238866520?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/2132391051238866520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=2132391051238866520' title='216 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/2132391051238866520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/2132391051238866520'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2007/12/wiimote-finger-tracking-faq-and-adv.html' title='Wiimote Finger Tracking -FAQ and Adv Discussion'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>216</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-4498503492474345405</id><published>2007-12-21T18:00:00.000-08:00</published><updated>2007-12-30T17:34:50.522-08:00</updated><title type='text'>"Unable to launch the DesktopVR program"</title><content type='html'>blarg.... a number of people have been reporting a "Wiimote FishtankVR has encountered a problem" error. but whom are able to run my other programs. Unfortunately, I can't replicate the error on any of my computers and I'm leaving for the holidays. So, fixes may be slow for the next 2 weeks. If you can shed some light on this, please add a comment to this post and I'll upload a fixed version once this problem is hashed out.&lt;br /&gt;&lt;br /&gt;Deleting the "config.dat" file and re-running the program may help.&lt;br /&gt;Installing the most recent version of DirectX may help.&lt;br /&gt;&lt;br /&gt;(update 12/30/07) I also got some suggestions that this might be due to a "x86/x64 linkage problem" related to 64-bit version of Windows.  The program needs to be recompiled for this.  I'll try to post a new version sometime in the next few weeks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-4498503492474345405?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/4498503492474345405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=4498503492474345405' title='284 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/4498503492474345405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/4498503492474345405'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2007/12/bug-with-desktopvr-program.html' title='&quot;Unable to launch the DesktopVR program&quot;'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>284</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-8144036949001678431</id><published>2007-12-21T07:18:00.000-08:00</published><updated>2008-12-11T11:10:20.110-08:00</updated><title type='text'>Head Tracking for Desktop VR Displays using the Wiimote</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CPucYiWYXAQ/R2vaeib-YbI/AAAAAAAAANQ/vnK7jNBNDjk/s1600-h/vr.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_CPucYiWYXAQ/R2vaeib-YbI/AAAAAAAAANQ/vnK7jNBNDjk/s320/vr.jpg" alt="" id="BLOGGER_PHOTO_ID_5146447217375994290" border="0" /&gt;&lt;/a&gt;Using the infrared camera in the Wii remote and a head mounted sensor bar (two IR LEDs), you can accurately track the location of your head and render view dependent images on the screen. This effectively transforms your display into a portal to a virtual environment. The display properly reacts to head and body movement as if it were a real window creating a realistic illusion of depth and space.&lt;br /&gt;&lt;br /&gt;Link to the &lt;a href="http://www.cs.cmu.edu/%7Ejohnny/projects/wii/"&gt;Wiimote Projects Page&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-8144036949001678431?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/8144036949001678431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=8144036949001678431' title='230 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/8144036949001678431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/8144036949001678431'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2007/12/head-tracking-for-desktop-vr-displays.html' title='Head Tracking for Desktop VR Displays using the Wiimote'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_CPucYiWYXAQ/R2vaeib-YbI/AAAAAAAAANQ/vnK7jNBNDjk/s72-c/vr.jpg' height='72' width='72'/><thr:total>230</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-8632756775713525759</id><published>2007-12-18T15:48:00.000-08:00</published><updated>2007-12-18T16:10:46.223-08:00</updated><title type='text'>Source Forge: Wiimote Whiteboard</title><content type='html'>I'm swamped with requests for compatibility fixes, requests for Mac and Linux versions. ... and as much as I would love to be able to get this working in the hands of as many people as possible, I don't have the skills or time to do all this alone. So, here is my call for help. I have created a &lt;a href="https://sourceforge.net/projects/wiiwhiteboard/"&gt;SourceForge&lt;/a&gt; repository for all WiimoteWhiteboard development.&lt;br /&gt;&lt;br /&gt;If you are a Mac, PC, or Linux developer there are thousands of people (especially educators and entire schools) just waiting to use the software you write. Help out, become a hero.&lt;br /&gt;&lt;br /&gt;If you tried the WiimoteWhiteboard software and had trouble with your setup, you can post your configuration in &lt;a href="https://sourceforge.net/forum/forum.php?forum_id=764898"&gt;the SourceForge Help Forum.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Link to &lt;a href="https://sourceforge.net/projects/wiiwhiteboard/"&gt;SourceForce: Wiimote Whiteboard&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-8632756775713525759?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/8632756775713525759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=8632756775713525759' title='63 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/8632756775713525759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/8632756775713525759'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2007/12/source-forge-wiimote-whiteboard.html' title='Source Forge: Wiimote Whiteboard'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>63</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-8424010738127746355</id><published>2007-12-17T19:47:00.001-08:00</published><updated>2008-12-11T11:10:20.501-08:00</updated><title type='text'>$14 Steadycam</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CPucYiWYXAQ/R2dC8Cb-YWI/AAAAAAAAALw/QgbU1XmkygY/s1600-h/top_big.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 145px; height: 211px;" src="http://4.bp.blogspot.com/_CPucYiWYXAQ/R2dC8Cb-YWI/AAAAAAAAALw/QgbU1XmkygY/s320/top_big.jpg" alt="" id="BLOGGER_PHOTO_ID_5145154698507870562" border="0" /&gt;&lt;/a&gt;This is an oldy, but a goody. The first online tutorial I ever created was on creating your own&lt;a href="http://steadycam.org/"&gt; low-cost camera stabilizer for only $14&lt;/a&gt; (that's in 2001 dollars).  It became a featured article in the premier issue of &lt;a href="http://makezine.com/01/stabilizer/"&gt;Make Magazine&lt;/a&gt;, posted on countless news/blog sites, and viewed well over a 1 million times. It has become a staple of the low-budget/student film-making community and is currently used in a number of high school and college production classes.&lt;br /&gt;&lt;br /&gt;If you can't (or don't want to) make one,  you can simply buy one. I currently sell them through &lt;a href="http://www.littlegreatideas.com/steadycam/"&gt;littlegreatideas.com&lt;/a&gt; for $39.95. It includes some bells and whistles beyond the $14 tutorial version. If you like my projects and want to support me, buying one is currently one of the easiest ways to do that. Then again, I also won't turn down flat out donations. =o)&lt;br /&gt;&lt;br /&gt;Link to &lt;a href="http://steadycam.org/"&gt;$14 Steadycam&lt;/a&gt;&lt;br /&gt;Link to &lt;a href="http://www.littlegreatideas.com/steadycam/"&gt;buying a Poor Man's Steadycam &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-8424010738127746355?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/8424010738127746355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=8424010738127746355' title='50 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/8424010738127746355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/8424010738127746355'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2007/12/14-steadycam.html' title='$14 Steadycam'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_CPucYiWYXAQ/R2dC8Cb-YWI/AAAAAAAAALw/QgbU1XmkygY/s72-c/top_big.jpg' height='72' width='72'/><thr:total>50</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-5686688994452117634</id><published>2007-12-17T15:20:00.000-08:00</published><updated>2008-12-11T11:10:21.246-08:00</updated><title type='text'>Wiimote Whiteboard with a Rear-Projected Display</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CPucYiWYXAQ/R2cEfCb-YVI/AAAAAAAAALo/IQXsEARjfUY/s1600-h/rear+projected.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_CPucYiWYXAQ/R2cEfCb-YVI/AAAAAAAAALo/IQXsEARjfUY/s320/rear+projected.jpg" alt="" id="BLOGGER_PHOTO_ID_5145086030570742098" border="0" /&gt;&lt;/a&gt;After a few people have written in asking about this, I think it's worth posting about it. The Wiimote Whiteboard technique/software works great with rear-projected surfaces. In fact, I think it's the best configuration because you can put the Wiimote behind the surface near the projector and you don't have to worry about blocking it's view. The camera also gets a prime view of the screen so tracking resolution is high.&lt;br /&gt;&lt;br /&gt;I didn't talk about this in the original video because making a custom rear-projection screen is relatively hard... and making a rear projected drafting table, for which stylus work is better suited, is even a little harder. So, this might be a little out of reach for many people. But, it's well worth the effort in my opinion because the result is pretty great.&lt;br /&gt;&lt;br /&gt;Link to &lt;a href="http://www.cs.cmu.edu/%7Ejohnny/projects/wii/"&gt;WiimoteWhiteboard&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-5686688994452117634?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/5686688994452117634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=5686688994452117634' title='44 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/5686688994452117634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/5686688994452117634'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2007/12/wiimote-whiteboard-with-rear-projected.html' title='Wiimote Whiteboard with a Rear-Projected Display'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_CPucYiWYXAQ/R2cEfCb-YVI/AAAAAAAAALo/IQXsEARjfUY/s72-c/rear+projected.jpg' height='72' width='72'/><thr:total>44</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-3115976499955419020</id><published>2007-12-14T12:19:00.000-08:00</published><updated>2007-12-14T12:29:17.147-08:00</updated><title type='text'>Squiggly lines and other Bluetooth Drivers</title><content type='html'>After seeing some videos people have posted of them using the WiimoteWhiteboard software, I have added the following to the troubleshooting section of the help document and mention this on the download page.&lt;br /&gt;&lt;br /&gt;-----&lt;br /&gt;"My lines are really squiggly and tracking is bad" -  Remember the Wii Remote contains a camera, and the better view the camera has of your screen the better tracking you'll have. So, good placement is the key to good tracking. The more direct view the wiimote has of your screen, the better, The closer it is without losing visibility of your screen, the better. The wiimote camera has a 45 degree field of view.  Keep this in mind for placement.  Using the "Visible IR dots" diagnostic on in the software, you can test the visibility of the corners of your screen using your IR pen.  It may be helpful to turn off cursor control. Activate the LED at each corner location and check if the Wiimote still sees it. Some squiggilyness is unavoidable, but it can definitely be minimized. Smoothing is on the feature list to be added in any future release.&lt;br /&gt;----&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Also, I've gotten testimony and links to videos that say this works with other bluetooth drivers besides Blue Soleil.  But, I haven't tested them myself.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-3115976499955419020?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/3115976499955419020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=3115976499955419020' title='47 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/3115976499955419020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/3115976499955419020'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2007/12/squiggly-lines-and-other-bluetooth.html' title='Squiggly lines and other Bluetooth Drivers'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>47</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-5595225614932649781</id><published>2007-12-12T15:46:00.001-08:00</published><updated>2007-12-18T13:22:50.948-08:00</updated><title type='text'>IR LED pen schematic and IR keychain lights</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.cs.cmu.edu/%7Ejohnny/projects/wii/pen.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://www.cs.cmu.edu/%7Ejohnny/projects/wii/pen.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I've uploaded a simple schematic of the IR LED pen I used.  If you use a good LED, you can probably run it safely directly off a 1.5v AAA battery without a resistor. I used Vishay TSAL6100 940nm IR LEDs running at 100mA which I bought from &lt;a href="http://www.mouser.com/index.cfm?handler=home"&gt;Mouser.&lt;/a&gt; But, you can find usable LEDs and everything else you need from RadioShack. A number of people have also written in saying that &lt;a href="http://www.photonlight.com/IR-Infrared-LED-Lights-Specialty-LED-Lights-p/ir-infrared-led-flashlight.htm"&gt;some places sell IR keychain lights&lt;/a&gt; which may work right out of the box.  &lt;span style="font-weight: bold;"&gt;NOTE:&lt;/span&gt; If you rough up the end of your LEDs, they will be more omni-directional and more easily seen by the wiimote.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-5595225614932649781?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/5595225614932649781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=5595225614932649781' title='90 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/5595225614932649781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/5595225614932649781'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2007/12/ir-led-pen-schematic-and-ir-keychain.html' title='IR LED pen schematic and IR keychain lights'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>90</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-1197142180936575086</id><published>2007-12-12T15:43:00.000-08:00</published><updated>2008-12-11T11:10:21.487-08:00</updated><title type='text'>Low-Cost Multi-point Interactive Whiteboards Using the Wiimote</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_CPucYiWYXAQ/R2ByXd3I6DI/AAAAAAAAALc/wf_oLwjlfV0/s1600-h/whiteboard.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_CPucYiWYXAQ/R2ByXd3I6DI/AAAAAAAAALc/wf_oLwjlfV0/s320/whiteboard.jpg" alt="" id="BLOGGER_PHOTO_ID_5143236521935562802" border="0" /&gt;&lt;/a&gt;Since the Wiimote can track sources of infrared (IR) light, you can track pens that have an IR led in the tip. By pointing a wiimote at a projection screen or LCD display, you can create very low-cost interactive whiteboards or tablet displays. Since the Wiimote can track upto 4 points, multiple pens can be used.&lt;br /&gt;&lt;br /&gt;When updates are made to the software, I'll post them here on this blog.&lt;br /&gt;&lt;br /&gt;Link to the &lt;a href="http://www.cs.cmu.edu/%7Ejohnny/projects/wii/"&gt;Wiimote Projects page&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[update] Link to the &lt;a href="https://sourceforge.net/projects/wiiwhiteboard/"&gt;SourceForge repository &lt;/a&gt;to help with development.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-1197142180936575086?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/1197142180936575086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=1197142180936575086' title='104 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/1197142180936575086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/1197142180936575086'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2007/12/low-cost-multi-point-interactive.html' title='Low-Cost Multi-point Interactive Whiteboards Using the Wiimote'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_CPucYiWYXAQ/R2ByXd3I6DI/AAAAAAAAALc/wf_oLwjlfV0/s72-c/whiteboard.jpg' height='72' width='72'/><thr:total>104</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-8344409133561901706</id><published>2007-12-12T15:36:00.000-08:00</published><updated>2008-12-11T11:10:21.925-08:00</updated><title type='text'>Tracking Your Fingers with the Wiimote</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_CPucYiWYXAQ/R2Bx193I6CI/AAAAAAAAALU/nOcWDkouwIw/s1600-h/finger.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_CPucYiWYXAQ/R2Bx193I6CI/AAAAAAAAALU/nOcWDkouwIw/s320/finger.jpg" alt="" id="BLOGGER_PHOTO_ID_5143235946409945122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Using an LED array and some reflective tape, you can use the infrared camera in the Wii remote to track objects, like your fingers, in 2D space. This lets you interact with your computer simply by waving your hands in the air similar to the interaction seen in the movie "Minority Report". The Wiimote can track upto 4 points simultaneously.&lt;br /&gt;&lt;br /&gt;Link to my &lt;a href="http://www.cs.cmu.edu/%7Ejohnny/projects/wii/"&gt;Wiimote Projects page&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-8344409133561901706?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/8344409133561901706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=8344409133561901706' title='36 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/8344409133561901706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/8344409133561901706'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2007/12/tracking-your-fingers-with-wiimote.html' title='Tracking Your Fingers with the Wiimote'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_CPucYiWYXAQ/R2Bx193I6CI/AAAAAAAAALU/nOcWDkouwIw/s72-c/finger.jpg' height='72' width='72'/><thr:total>36</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-2278014993496569880</id><published>2007-12-12T14:39:00.001-08:00</published><updated>2007-12-12T14:45:56.119-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thesis automatic projector calibration augmented reality'/><title type='text'>Projector-Based Location Discovery and Tracking</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.cs.cmu.edu/%7Ejohnny/projects/projector.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 239px; height: 178px;" src="http://www.cs.cmu.edu/%7Ejohnny/projects/projector.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;My thesis work at CMU is on Project-Based Location Discovery and Tracking.  The basic concept is to discover the locations of light sensors using light patterns from the projector.  Once we discover the sensor locations, that information can be used for a wide variety of applications such as automatic keystone correction, multi-projector stitching, tracking input pens, augmented reality, variable resolution displays, and simulating foldable displays.&lt;br /&gt;&lt;br /&gt;Here's a &lt;a href="http://www.cs.cmu.edu/%7Ejohnny/projects/thesis/"&gt;link to my thesis work&lt;/a&gt; with videos after the jump.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-2278014993496569880?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/2278014993496569880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=2278014993496569880' title='37 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/2278014993496569880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/2278014993496569880'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2007/12/projector-based.html' title='Projector-Based Location Discovery and Tracking'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>37</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4556324987649637814.post-6213994107475581559</id><published>2007-12-12T14:29:00.000-08:00</published><updated>2007-12-12T16:14:43.842-08:00</updated><title type='text'>Weclome to my project blog: Procrastineering.com</title><content type='html'>Hi, everyone! Welcome to my project blog.  This is an experiment to see if it is helpful for people get updates to projects that I'm working on and as a documentation tool for things that I'm doing.&lt;br /&gt;&lt;br /&gt;My main website can be found at &lt;a href="http://johnnylee.net/"&gt;johnnylee.net&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4556324987649637814-6213994107475581559?l=procrastineering.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://procrastineering.blogspot.com/feeds/6213994107475581559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4556324987649637814&amp;postID=6213994107475581559' title='51 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/6213994107475581559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4556324987649637814/posts/default/6213994107475581559'/><link rel='alternate' type='text/html' href='http://procrastineering.blogspot.com/2007/12/weclome-to-my-blog.html' title='Weclome to my project blog: Procrastineering.com'/><author><name>Johnny Chung Lee</name><uri>http://www.blogger.com/profile/09801743394639546972</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>51</thr:total></entry></feed>
