Kinect NITE Mac OS X

10:30 AM Edit This 1 Comment »
Just got skeleton tracking from Kinect data up and running on my Mac. There's a lot out there on this topic right now including several completely different drivers and it took me forever to figure out what I was supposed to install and in what order--so I figured I'd document it. Though in the end most of this is from the SensorKinect (see below) README, which has additional useful info. This post: http://www.roxlu.com/blog/entry/116/openni-and-sensorkinect-driver-for-mac-/page/ was also useful in explaining what all the different pieces were for.

Here's what I did:

Make sure you have Xcode 3.2.5.

1) OpenNI (the framework)
Download https://github.com/OpenNI/OpenNI/tree/unstable
Install MacPorts (this may take a while)
sudo port install libtool
sudo port install libusb-devel +universal

Follow instructions in OpenNI install file:
Building OpenNI:
a) Go into the directory: "Platform/Linux-x86/CreateRedist".
Run the script: "./RedistMaker".
This will compile everything and create a redist package in the "Platform/Linux-x86/Redist" directory.
It will also create a distribution in the "Platform/Linux-x86/CreateRedist/Final" directory.
b) Go into the directory: "Platform/Linux-x86/Redist".
Run the script: "sudo ./install.sh"

2) NITE (skeleton tracking module)
Download NITE for OS X from here: http://www.openni.org/downloadfiles/openni-compliant-middleware-binaries/33-latest-unstable
Use license key in SensorKinect README
(in <...>/Nite-1.3.0.18/) run:
sudo ./install.sh

3) SensorKinect (Kinect driver)
Download SensorKinect from here: https://github.com/avin2/SensorKinect
Follow instructions in SensorKinect install file:
Building Sensor:
a) Go into the directory: "Platform/Linux-x86/CreateRedist".
Run the script: "./RedistMaker".
This will compile everything and create a redist package in the "Platform/Linux-x86/Redist" directory.
It will also create a distribution in the "Platform/Linux-x86/CreateRedist/Final" directory.
b) Go into the directory: "Platform/Linux-x86/Redist".
Run the script: "sudo ./install.sh"

Run <...>/OpenNI-OpenNI-ea12479/Platform/Linux-x86/Redist/Samples/Bin/Release/Sample-NiUserTracker
Stand in calibration pose.

1-wire

9:15 PM Edit This 0 Comments »
The 1-Wire search protocol works like that game of tag where you run across a field in groups...

Everyone born in the spring, go!
Everyone with green shoes, go!
Everyone who likes pizza, go!

...and finally the last loser left standing there by themselves is the device you're looking for.

(actually, it's backwards, but close enough)

TechShop

8:34 PM Edit This 0 Comments »
Planning to blog experiences at TechShop Menlo Park this summer, a workshop for building things and learning to build things. Currently signed up for classes in:
CNC basics--so I can learn to use the CNC router to cut large pieces of wood.
Hand tools--for woodworking, mainly because I badly need to learn safety practices.
Woodworking--power tools! Will I get over my terror of the table saw?
Laser cutter--I've used them before but you have to take the class to use theirs, plus they probably have useful advice.
Metal shop--hadn't thought I wanted to learn this until I saw this at Maker Faire.

What I want to build:
nomad furniture (multipurpose, pack/fold flat, requiring no screws furniture for frequent movers and small space dwellers). Right now I'm loving the idea of integrating organic curviness. CNC and woodworking skillz required.

A suitcase that pulls you--motorized suitcase with heartrate monitor that takes a turn pulling you after you've pulled it for a while and it senses you are tired. Part of a line of things I want to build that support people developing autonomy and pride rather than only relying on devices.

Transportable, quick-accessible modular organization system for craft and electronics supplies, minimizing the space it takes up (thinking along the lines of small drawer compartments). Possibly integrated with some sort of electronic tracking system so you can keep track of where things are and how much you have. Have been thinking about this for a while, not satisfied with current ugly plastic drawer organizers that aren't very space-efficient.

Time for an Upgrade?

4:51 PM Edit This 0 Comments »
For the past two years, I've done all my work on my "hackintosh-ed" netbook. I've developed in C, Java, Python, and Max/MSP, I've controlled robots via Bluetooth, I've used Photoshop and played Netflix movies, I've written long papers, I've programmed microcontrollers, I've had videocalls with my family, I've worked on planes and in hotel lobbies and coffee shops, I've done all my school and work assignments...all in 26GB of hard drive space, a 10-inch screen, a mini-keyboard, and 1.5 hours of battery life (originally it was 3, but the battery has gotten weaker). I have loved how it fits right in my purse, how it doesn't look like something anyone would immediately want to steal like a shiny new Mac would, how even if someone did steal it, it is inexpensive and replaceable, and how I didn't have to support Apple's frustrating business model.

Ever since I discovered Linux, I've been irked at the way Apple markets things and closes them down...but sadly after trying a whole variety of operating systems, Mac OS X is still the one I like best. As educational and empowering as it is, I just don't have time to fight with driver issues all the time. And I actually really like Windows 7, but I just can't quite deal with not having a Unix shell. I hate that I'm making this argument, but I've given it a fair trial run and I think it's time to face it and start giving Apple my money again. Dammit. *shakes fist at Apple*

The problems with my current laptop:
  • It's not quite powerful enough to develop on comfortably.
  • After two years, things are starting to break down. Bluetooth just stopped working entirely, and the battery life is getting shorter.
  • Upgrades are kind of a pain. (and by that I mean I haven't done one since I first installed it)
  • It is great for working on the go, but as a portable computer, it's not quite portable enough to say, use on a bus. It needs a surface to sit on.
  • It's a "cramped" working experience, really: small keyboard, small screen, not much hard drive space.
  • Small bugs such as: no working microphone, needing to run a shell script to set it to play out of headphones or to use the ethernet jack.
  • Inconsistent VGA output. It works with some external monitors, have never been able to make it work with a projector. This is pretty important for presentations and I've had to borrow other computers enough times that it's a big issue.
I'm really happy that it's lasted me 2 years for not that much money...overall a great investment, I would say. But all in all it's not really going to cut it for school and work next year.

Research time!

It's got to be a laptop. The Boy insightfully reminds me, "duh, you're a laptop person! You're always wanting to move your work around." This is very true.

I was debating between the 13-inch or the 15-inch Mac Book Pro. The specs on the new 15-inch look so tempting (crazy switching graphics cards, lovely big screen, i5 processor), but then I compare the lowest end 13-inch to my current setup (which after all hasn't been that bad performance-wise):

4GB of RAM vs. 2GB
250GB memory vs. 26GB (for my OS X partition)
2.4 GHz vs. 1.6 GHz
13-inch screen vs. 10-inch

...yeahhhhh, I think that one will be just fine. :)

So now I just need to save up this summer so I can get one for the fall. With the education discount they are $1,100, and because they just upgraded them, I might be able to get the older model for a bit less.

Now here's the terrible part...I want an iPad (*cringe*). After making fun of the name and describing its total failure in every way to anyone who would listen (I was hoping for something that would be smartphone + netbook + ebook reader + tablet, and it didn't seem to do well at any of those), I actually tried one today. It is a fantastic size for carrying around and super responsive (the maps application is so much snappier than on the iPhone). It's about a pound lighter than my netbook, which I can already carry around in my purse, and much thinner. The book reader application (iBooks, I think) is really well done. It's these little shelves with all the books you own on them, and when you open a book you can actually flip the pages with your finger. It shows you where you are in the book with a slider (though I kind of wish that would be reflected in the unread pages graphic shown on the right). You can tilt it horizontally and see two pages, or vertically and see one (I do find it weird that the pages shift around to fit, so that words don't end up in the same place on the one page as they do on two). It works with any bluetooth keyboard it sounds like (YES!!!! I can avoid the horrendous Apple chicklet keys).

Certainly there are some UI issues, but I pretty much love it. I've been looking for the perfect e-book reader for a while, because as nice as real books feel, I hate having physical books to lug around from place to place. I also strongly dislike owning redundant stuff, so what's been holding me back from getting a proper laptop for a while is the idea of ending up with two laptops. An iPad would be cheaper in the long run than an iPhone (no data plan needed) and let me read (and work a bit too) on the go.

There is the standpoint that I could buy a ton of real books for $500... and the standpoint that I don't really need this, and that I've been totally-convinced, at the point of hitting the checkout button, on a lot of products in the past that I didn't end up buying (including the iPhone). So we'll see...I'll think about this some more, watch what apps come out, see what the next model looks like when they have some of the bugs smoothed out.

One more thing: one application that would be brilliant is a note-taking application that lets you create individual notebooks that are flip-through-able just like the iBooks application, and which you could embed web links and content into. This would be similar to the Microsoft Courier idea, and a very spatial and intuitive way of organizing and taking notes. A stylus is definitely also needed for note-taking. I could actually see using this for class notes.

Backlog

3:39 PM Edit This 0 Comments »
I just noticed I have like ten drafts of posts I wrote but never finished and posted, so I'm just going to publish them all at once in unfinished form. Be warned if the next ones don't make sense...

edit: never mind, it seems to keep the original timestamps so they show up in the right order. Nice.

Imaginary Characters

5:43 PM Edit This 2 Comments »
I'm writing my Masters thesis right now and I'm all immersed in empirical data and academic papers, so I wanted to take a break and write about this the way I think about it.

I don't know why, but I remember the imagination games I played as a kid very well. It might be because my sister closest in age is a genius storyteller and she made them memorable. I'm also a very "what if" sort of thinker, generally very happy to be immersed in imaginary worlds but especially when I was a kid and sometimes needed a retreat from the real world.

Here are a few of the games we played, between 6 to 12 years old:

"Mage Bears" (we had a whole collection of those tiny "birthstone bears"--basically, 3-inch-ish tall stuffed bears in different colors matching the color of the gem for their month. We named them all accordingly--Sapphire, Garnet, Ruby, Diamond, Emerald, etc. As I list them, I can remember each one's distinct personality! Each one had a pretty specific persistent personality and history that seemed to appear almost immediately after we introduced it, with occasional adjustments and disagreements (my sister's frequent complaint being that I made a particular character "too irritatingly perfect.") We had some we favored and some that didn't come into the stories as often. Some of them had magical powers--the "mage bears" and some did not, and a lot of the plot revolved around the training of the young mage bears by the older ones and subsequent magical accidents and problems to solve. Another frequent plot point was various romantic triangles among the characters and the ensuing drama.

Clowny and Beep: The story centered around two tiny glass clowns. Each one had a disproportionately large three-story house (an entire bookshelf). Beep lived in my room, Clowny in my sister's room. My sister's room also housed their "village" full of other characters: a tiny pompom that lived in a plastic box, a giant ladybug, tiny ceramic animals, and a "grocery store" full of tiny bins of "food" (mostly ground-up candy, making the Fisher Price plastic cabinet they were housed in smell rather distinct). They had their own form of currency: called "kabobs" and made out of sequins. Funny memory: because we only had so many paper bags for the grocery store (folded out of origami paper), customers could get a small refund for bringing back their bags (this was invented to solve the supply problem, at the time we'd never heard of deposits for bags or bottles, nor the whole "green" movement). Clowny was a mad scientist and had an underground lab, and also kept farm animals. I can't remember what Beep did for a living (a lawyer?). We got a huge kick of pretending they called each other on their little phones by saying "beep beep beep beep beep beep beep...Beep?"

Papabla and Telly: Papabla was my sister's favorite stuffed bear, Telly was mine. They had sort of a Calvin-and-Hobbes dynamic, with Papabla being long-limbed and tall, Telly being short and stout. Telly's parents were lost at sea and Papabla's missing for some other reason, so my sister and I acted as what we called "legal guardians" (kids of divorced parents pick up the terminology!) The bears had little backpacks full of school accessories like tiny handmade notebooks, pencils, and paints. They would go to school and meet other stuffed animals, and we would invent assignments for them. Related to this game was what my sister and I did while they were at school: she was a marine biologist and I was a designer, but somehow we worked in the same office. We had a shockingly horrible boss who my sister had fun inventing different lipstick colors for every day. Our office was very high-tech: we could send each other drinks and messages via little transporter cubbies in the walls. We delighted in complaining about work--we must have gotten this from movies, because our parents never really did this. One of our favorite plots was to get together for "coffee" (or was it tea?) and at one point one of us would announce "I quit my job," after which the other would pretend to spit coffee everywhere in shock. Again, I have NO idea where we got this, but it never got old.

Other stories: Mrs. Tambrila and the Eternal Houseguests (my sister's dollhouse with a family of Russian dolls, with my characters being visitors to the house, occasionally living in the attic). There was a game with a group of tiny beaded magical alligators, and then the traditional Polly Pockets and Barbies. And then there were some my younger siblings played later, including one involving warring factions of plastic frogs and lots of games around superhero-inspired characters.
We also had a huge number of games where we acted out the characters rather than having physical toys.

When we wanted to decide what to play, we had a hierarchy of decisions to make that would help us pick a game. First: toys or acted-out characters? Setting: past, present, or future? Were we allowed to use magic? "R or no R?" (R was a codename for "romance"...ie. would imaginary boys be present in the story, or would we conquer the bad guys on our own?!)

One thing I notice: the characters in each "world" didn't interact with each other. This doesn't seem to have been an issue of scale or what the toys were designed for, because most of the games involved an extremely miscellaneous assortment of character toys. I also don't think I ever used "multivocality"--different voices for each character, but relied on "he said, she said" like we were narrating a story.

I stopped playing the year I turned 13. I have a ton of fun with my younger siblings now, but I can't seem to play imaginary games anymore. There's still something I'm fascinated about, though, and I've been trying to pin it down and learn something about it in my thesis. It's this idea of character-perspective: the toy you are playing with has a personality and while you're playing, you see things from its perspective. You make objects for it at the right scale and physically look at the world from its level. A little bit like Toy Story and the Velveteen Rabbit and other books where toys come alive. This has two dimensions: one is this idea of the toy coming alive and having a real personality, the other is this perspective-shifting you do when you play, seeing what the toy character sees.

You know how there is a whole field of user interface design: how to design computers or robots to relate effectively to humans? I started thinking of toy-computer interactions or user interfaces for toys--what if the toy characters had working technology? This came out of a project I was doing on remote communication interfaces for kids, where I built two dollhouses with tiny working phones (they were hooked up to a computer running Skype) and a "mail system" (tiny letters could be placed in a mailbox and were transmitted to the remote dollhouse and printed out the mail slot on a tiny photo printer). Later, by popular request, I added a video system--first a decontextualized one, just a video window at the right scale for the toys to see each other, then one which made the video screen look like a tiny computer screen sitting on a computer desk.

My thesis is about perspective-taking in that sense, how when kids play they learn to see the world from another's point of view--both socially and cognitively.

The kids I tested with liked them a lot, but none did what I expected, which was to invent extended stories and develop character personalities like I remember doing. I've been reading and reading but I'm a little stuck on how people get real results sitting a kid down in front of an unfamiliar toy for an hour. They just can't possibly have time to get to know the characters in that time! Or do they not play that way anymore? A few of the kids reported not playing imagination games at home...they played computer games or Webkinz. I have a lot of papers I'm making my way through on kids' play, but what I'd really like to find is transcripts and recordings of play sessions, to find out exactly what the stories are today.

Edit 4/15/10: so I've done a lot more reading, and found play session transcripts. I need to do more, but it seems that going into as much depth as we did is relatively rare. This may have something to do with the fact that the majority of kids stop imagination play younger than we did (by 7, whereas I played until 13), so it's possible by the time their language and cooperation skills make it possible to develop anything that complex, they have moved on to other types of play and pastimes. What I don't know is--would it be good for more kids to play more deeply? To play longer? Is it something that can be encouraged? Or are they already developing at the pace that is right for them, and this is not needed for all kids? Is the accessibility of technology at younger and younger ages making something about play and imagination get lost in the process? Is this appropriate for the skills needed in this current technological age, so it's not a bad thing? Is there a difference in terms of what it does for kids developmentally between creativity as applied to construction activities (on-screen or off-screen), for eg. building with legos and programming ("constructionism") and creativity as applied to stories and narrative? I know that you can tell stories with these building toys, and that there are even story-building toys (again on and off the computer), but is there a fundamental difference in the type of creation that is happening? I touch on this in my thesis but I'm not yet fully satisfied with the answer.

Useful Swag

1:27 AM Edit This 0 Comments »
Things companies could give away at conferences/events that I would actually use, not mind the logos, and which would be just fine if I got duplicates:
  • cable wraps (those little velcro things, maybe even the color-coded ones)
  • mesh travel pouches and packing cubes
  • durable folders
  • gum (not mints!)
No more T-shirts! (especially the ones that are way too big to ever actually wear!) No more cheap pens that don't withstand fiddling!

Any more ideas? :)

9:52 PM Edit This 0 Comments »
My winter break internship reminds me I chose the right major.
Man, there are a LOT of other things I want to learn, especially in mechanical engineering, design, fabrication, and information science.
And then things I really should learn to be more effective, like writing and public speaking.