Xtion, the mini Kinect…

I was debating using my Kinect with some Linux drivers from the web on my project (MS only provides Windows drivers and SDKs for it, as far as I know), but then as I was reading on the whole “Natural Interface” scene, I came across the Xtion.  Even if Kinect stuff under Linux seems pretty “mature”, I got curious about this little device and read more about it…

It’s just like the Kinect (video, audio, depth) but smaller, USB powered and made for the Open Source community.    Very interesting stuff!  As I was reading up on it, the stocks on NewEgg went dry!  I had to wait an extra week roughly before the got more.  As soon as I got the notification that more stocks were in, I jumped in without hesitation this time.  I just checked for the hell of it, and they’re out again (more stock expected in 2 weeks).  I wish they could have made it even more narrow by removing the microphones on either side…

Anyhow, overall I’m pretty satisfied.  I installed all the software for it in Windows (the PrimeSense and OpenNI stuff).  I had problems getting it running at first, but then I realized that it had installed a driver called “PrimeSense PS1080″ instead of the “PrimeSense Sensor Development Kit 5.x” driver.  I just forcefully replaced the driver and things went smoothly after that.  I ran a few samples, pretty neat stuff…  I still need to get everything running in Android potentially, so things might get interesting later.

Xtion Pro Live

Installing an OS (or two?) on the Pandaboard…

Well I still wasn’t decided on an operating system.  The board is officially supported by Android, and there’s also a version of Ubuntu out for ARM.  Ubuntu would give me the most freedom if I need to fiddle around with it or install custom drivers.  And Android, well Android is just cool.  :)

But more seriously, if I could make my project as an Android app, I could be knocking two birds with one stone seeing as it’s something I’ve always been curious about anyhow.  I could be writing the core of my app (the portion I would want portable) in C++ using the NDK (Native Dev Kit), so if I regret my choice at some point I can simply run away with the code and drop it in a regular Linux executable.  As another bonus, I could use Android’s SDK to develop a touchscreen friendly UI pretty fast, since I intend to drop a touchscreen in there at some point…

So finally, I figured I’d go as far as I can with Android, and if I get blocked at some point then I’ll just switch over to Ubuntu.  I got myself two SD cards so that I can install both anyhow.  Getting Android up and running might be useful if I ever intend to develop apps as a side-project some day anyhow.

So the first thing I did was slap a new hard drive in my PC and install the latest Ubuntu on it.  Then I went on the Android Open Source Project and I starting setting myself up to build Android…

I made it to the point where I’m sinking most of the code base, it’s a pretty long step.  Then I started reading ahead…  Being able to build Android at will from the latest code is lots of fun, but I’m pretty excited to have my Pandaboard and I just want to see it boot up at this point.  I figured the old internet must have had a “key in hand” solution to quickly get on your way.  So I searched, and I found Linaro.  What’s up buttercup!  Basically, it’s a free place that is dedicated to making Open Source stuff work on ARM.  Among their efforts, they build the latest Android and Ubuntu for ARM processors and such platforms as the PANDABOARD, huzzah.

As a side note, Linaro made me discover two other SoC based “hobby boards”: the Origen and the Snowball.  The Origen is massively Sold Out, but it could have been a nice alternative to get the kit that comes with a nice 7″ touchscreen.

So yeah, I now have the Android source code all synced up, and Linaro images installed on both of my SD cards:  one for Android 4.0.4 and one for Ubuntu “Precise”.  Everything works just peachy.  Couldn’t be happier, it was pretty cool to see the board boot up for the first time.  :)  Using Android with a mouse and keyboard is a pretty special feeling too…  :P

Android on Pandaboard

Adding a pico projector…

Adding a projector into the mix.  I want to have the option of “outputting visual information”…  Not quite clear how it will be used yet, but I can find a few situations where it would be useful for the project, so why not.  Might just be useful in life too…  :P

I was sort of turned off by the prices at first, and almost dropped the entire idea.  I kept coming back to it though, while researching other things, I just couldn’t accept that there wasn’t something right for me out there.  I wanted HDMI input, as bright as possible, a decent resolution and ideally it could be battery powered.  I finally came across a company called Aaxa that seems to specialize in portable projectors.  The P3 Pico Projector filled all my needs at a decent price on Amazon, so I pulled the trigger.

I’m surprised at how good the projector is actually.  You don’t need to be in an exceedingly dark room in order to clearly see the image.  I’ve tried it at a friend’s place where he has a screen setup for his professional projector, and we were able to get images up to 80″ inches without a hitch.  We even went up to 100″ and although it was dimmer, it was still quite impressive.  I even hooked it up to my iPad to watch an episode of the Daily Show on my bedroom wall, it was very decent.  All in all, much better than I expected considering the modest specs for a portable projector. All these tests have it plugged into the wall though, when I try it off the battery it’s not as bright (35 lumen vs 50 lumen)…

The down sides are that the AC adapter gets VERY hot very fast, and the projector itself has a loud fan (which doesn’t prevent it from getting pretty warm too).  But hey, I don’t mind stuff getting hot as long as it doesn’t bust…  :P

P3 Pico Projector

P3 next to Pandaboard

Find storage for the Pandaboard…

I initially thought I’d just start off with some old camera memory I had lying around, but it turns out all we could spare were 2GB SD cards…  Seemed kind of tight to put my OS own, so I went to a nearby electronic store to pick up whatever was handy.

I looked real fast in the Pandaboard documentation, and they only stated 2-3 smaller SD cards and one Transcend 32GB card.  My local stores didn’t have that particular brand, so I came back with whatever I could find:

  • SanDisk Ultra 32GB SDHC Class 6 (claims 30MB/s).
  • PNY Professional 32GB SDHC Class 10 (claims 20MB/s).

I got two because I didn’t want to have to commit to Android or Ubuntu yet… :)

SDHC Cards

Find the brains…

Well the first step was to find something to build around that would be smart enough for what I need to do.  If ever it doesn’t have the horsepower to do what I need (when I find out what that is), then ideally it would have some form of wireless communication to offload processing (and I would deal with latency later).

So I sent out to find different “all in one” boards for this kind of project…  There are A LOT.  But the names of three major players kept coming back:

  • The Raspberry Pi.  This little board was designed to be… well, little.  And it’s also very cheap at 25$!  It comes in two models, the “bigger” one has an extra USB and ethernet port.  Otherwise we’re looking at a 700Mhz ARM11 processor, 256MB of RAM, GPU and RCA or HDMI output…
  • The BeagleBoard.  It comes in different flavors (Original, BeagleBone and xM)…  I was mostly looking at the xM with its Arm Cortex A8 at 1 Ghz, 512MB of memory, 4x USB 2.0 ports, ethernet port, DVI-D, SVideo, etc…
  • The PandaBoard. It comes in two flavors, I was mostly looking at the more powerful ES version. Dual Core A9 at 1.2GHz, POWERVR SGX540 GPU, HDMI and DVI-D outputs (that can run simultaneously), 1GB of DDR2, Wifi, bluetooth, 2x USB 2.0 ports, ethernet port, etc…

Considering how vague my objectives were, I didn’t want something too limiting, so I just went for the board who had the most features: the Pandaboard.  Also, seeing as this is a one time expense, pricing wasn’t really a concern.  I don’t pretend to know everything about these boards, and maybe some of my arguments are flawed, but here’s what I liked about it:

  • More horsepower!
  • Two digital video outputs… since I might want a projector and a touchscreen, this could be useful.
  • Wifi and Bluetooth are welcome additions, it might simplify things later for extra modules.  Less hassle than adding them with USB dingles later…
  • Pandaboard is now officially supported by the Android Open Source project.  How cool is that.  :)  It’s not to say that Android can’t work on the others, but having it officially supported by the project itself is a cool thing.

So I am now the proud owner of a Pandaboard purchased on Digikey’s website!  I also got myself a power adapter for it, didn’t want to run it off the USB OTG port to start with…

Pandaboard

It begins…

Trying to put together a blog just for this project of mine…  For myself mostly, I need to organize my thoughts since I’m not to clear on where I’m going.  :)  But if this can benefit anyone else, why not!