Post with 9 notes
For an art project, I am thinking of making a variation on the idea of manipulating objects, detecting them with a camera, and using their position and orientation to control a program (such as generating music). This is called fiducial tracking. This post surveys software available for this task.
I initially thought I could just detect QR codes. I found the ZXing library, which enjoys support from Google, apparently. It includes a website to generate QR codes. However, big problem: detection is too slow.
I looked into ARToolKit and similar, which are strangely abandoned projects. I tried to compile some in Xcode 4 but they were too old. I also found ArUco, which uses OpenCV. It compiled but it was too slow. The fiducial markers for these look like simplified QR codes.
Then I ran into reacTIVison. I ran it and it worked great, it was really fast. The fiducial markers are custom designed, and there is a paper on their development. However, the license is strange and unsuitable. The reading software is GPL but the software to generate markers is closed source and the markers provided can only be used with reacTIVision.
I found that Karsten Schmidt (toxi) wrote a Processing program to generate fiducials: Fid.gen. Apparently these fiducials will work with reacTIVision. Then I found ofxFiducialFinder, part of ofxding written by Alain Ramos (ding), which is an addon for openFrameworks. This program is GPL and will probably work with the Fid.gen fiducials. I think that the combination of Fid.gen and ofxFiducialFinder will work for me.
The final thing that fits into this is Community Core Vision (CCV) from the NUI Group. They’ve gotten Google Summer of Code interns in the past, which is always a good sign. They don’t seem to have a recent build for OS X, so I started to play with the version from the repository, but I realized that they were using the same code as ofxFiducialFinder (I think). What CCV adds is finger tracking + fiducial support, and TUIO support.
Finally, I need a suitable webcam, though the ones I have will work. Apparently the PS3 Eye is the best for tracking, since it supports a high framerate (125fps).
Anyway, that’s it, I will report on progress.
Yesterday I got a UPS notice on my door. I didn’t recognize the sender…did I dare to hope?…I went to the UPS office. After what seemed like 30 minutes of searching, they found the package. Nicely laptop-sized box. Was it…tearing the tape…graphics that I’ve seen before, somewhere…yes, yes, YES!
A Google Chrome OS Cr-48 laptop.
After the air-punching had subsided, I found myself here at Jet’s Espressoria on Pearl Street in Boulder, coffee in hand, with my new toy. So how is it?
It’s got some problems with the keyboard (hard to repeat letters, like tt) and the trackpad is a little strange to use. So I can see why they might not want to sell this :) It’re really quite cute, moreso than the photos. It does look a lot like the black Macbooks. And the box it came in is cool. It’s totally silent, which is new to me. Software wise, it’s the Chrome web browser, which I have been using for a while, but it lets you keep your Google Talk on top, which is great.
I am a software developer, and there aren’t good ways to write software using a browser right now (i.e. like Google docs). For my PhD research, I am developing a 3D graphical simulator for sensornets using Python. Right now it’s a desktop app, but I want to make it into a web app with WebGL and Native Client, and let people write Python programs for the simulator in the browser and run them right there. I said that in my application to the Pilot program, and I think that’s why I got the notebook. Right now WebGL and Native Client are not enabled in Chrome OS, as far as I can tell, but WebGL should be coming down the pipe any day now since it’s in Chrome 9, and Native Client will arrive…someday, but it will arrive.