Archive for the 'multitouch' Category

bugs bugs bugs

many thanks to ScreamingDrills for finding a nasty little bug: Turns out when you are in the filter config window, you used to be able to put in all sorts of numbers that would break things. I added some nice constraints, but did a poor job of it :-) as of r157 you could still squeeze in a few bad numbers (ie 1 for any of the kernel sizes) so I went and fixed all that up. SO!

update your stuff to r158. (there is a new binary on the opentouch code site)

NOTE: Don’t forget that BBTouch requires openCV.framework now. so be sure to grab that as well and stick it into your ~/Library/Frameworks folder. (you may have to make this folder).. It is actually a private framework, and I have been playing around with trying to get it to be part of the BBTouch codebase, but googlecode is not playing nice with it (it claims to be locked, which is possible since I got it from someone else who had compiled it. So anyway, i haven’t had the time to go in and see why SVN thinks it is locked and so it is still not technically part of BBTouch, so you have to install it manually, my apologies)

But! if you do not install it, then BBTouch will brash on load. so if you re having crash on load issues, start with openCV. (BTW I uploaded the version that I am testing against to the opentouch downloads page, so you can get it there. (the link to the right that says “Fairly recent binaries”).

Anyhow, I am in the process of trying to find the time to get around to thinking about updating the documentation to include the above warning about openCV as well as all the new filtery stuff. But I havent had the chance, so tell your friends.

More videos of BBTouch and xPrexxo

This is a quick video (slightly better quality than the last one, altho i do manage to get in the way of the camera a few times :-) of one of the apps that i wrote for Sandor at Corporate Design Cologne. It is a combination of multi-touch coverflow (sometimes with actual covers :-) and the light box app (which I have decided is basically like the hello-world of multi-touch apps, everyone needs to write one at least once :-)

Anyhow this is all running on my prototype table which is a diffused illumination setup, the tracker is BBTouch and it is all using TUIO to communicate. The tech is all core animation using CALayers. there is lots of mipmapping going on to keep the performance up even when there are tons of images, and it works quite nicely even on my macbook pro. BBtouch never tops 50% processor and xPrexxo is similar.

BBOSC in the wild

I just wanted to take a minute to pimp a cool project that I just found out about:

Some of you may be aware of the monome project: http://monome.org/ I think these guys have a great deal in common with the Multi-touch community :-)

Anyhow, there is a cool iphone port of the monome stuff called Haplome: http://toddtreece.com/haplome/ it allows you to pretend you have a monome button array on your iPhone. fun stuff.

Anyhow, the reason this is topical to my lame site is that he is using BBOSC to help talk to the other OSC apps thet can play nice with the monome stuff. So there you go!

Thanks Todd for a cool project!

BBTUIOTest is now part of a google code repo

I just re-assembled BBTUIOTest app (the latest and greatest, now referred to as rev 2). I just created a google code repo for the various TUIO based cocoa apps that I am planning on generating in the days to come.

Here it is:
http://code.google.com/p/bbtuio/

the most recent BBTUIOTest is there as I mentioned, and a binary of the same is also on the downloads page.

It is pretty straightforward to use, just load it up, set the port and hit ’start listening’. If you want to run it full screen, then just pick a screen and hit ‘go fullscreen’. to get out of fullscreen either hit ’stop fullscreen’ (if you can see the original window) or make sure the fullscreen window is in front ( by clicking it with the mouse ) and hit ‘ESC’. Quitting the app will also get you out of fullscreen.

the ‘fake mouse events’ tries to use the first recognized TUIO cursor as a mouse. If it ‘locks up’ while faking mouse events then it probably fakes a mouse down and then never faked a mouse-up. if you simply wait long enough this should resolve itself, but if you are in a hurry; command - option -esc will open the force-quit dialog. The act of opening this dialog will break you out of any mouse events that the TUIOTest got you into. (you dont actually need to force-quit anything)

Groovy!
-b

BBTouch r157 now with a bit less suck

Hey All,

I just commited a few more files, bringing BBTouch up to r157. I had been running 152 all week with no trouble, but Sandor managed to find a handful of bugs (of course, right when he is trying to use it at a show :-) so I made some changes and hopefully it is a bit better.

The biggest changes between 152 and 157 are that I fixed some very minor UI issues where the TUIO settings fields were not being properly disabled so you could change them out from under the OSC objects (causing some odd behavior). But the big one was that in some circumstances BBTouch would boot up and the filter settings (and the dark blobs pref) would be basically disconnected from the detector objects. no matter how much you changed them they didnt really affect anything. In any case, with 157 that is all fixed.

That is all for now :-)

I should be posting the newest BBTUIOTest.app soon, once I get it all back together.

cheers!
-b

i am teh coding Newbz0rz!

OK, so i am dumb. changed all the cool config stuff and broke the TUIO on/off button (rendering it useless). I tested everything else last night but that d’oh!

Anyhow, r152 is up now with working TUIO again. (like, 3 lines had to change, i suck!)

here is the new binary:
bbtouchr152app

BBTouch Code Updated to r151

Hey all!

I just checked in a big chunk of new code and a new interface for BBTouch. (now up to r151)

I moved some of the interface stuff around, I put the TUIO stuff and the Screen Selector into sheets to unclutter the main interface a bit. I also added a button to open the filter config window. as well as the new config library :-) more on that in a sec.

I added a whole new configuration control system. Now you can save and load configurations on the fly very easily through the config library.

It is pretty straight forward: just get all the settings to where you like them, then open the library, hit “+” and it will add a new configuration (double click to edit the name). each configuration holds every value on the interface as well as both the camera mesh and the projection mesh. So now you can configure all the various surfaces/situations you might need and just switch them easily on the fly.

Thanks again to Sandor for funding all these new changes (as well as the other code that I am working on that will be posted next week; a few demo apps like a cocoa based lightbox (all TUIO of course, so you can use it even if you dont want to use BBTouch). Also, Sandor and I are rushing to get these apps working by Monday, so if you want to help out, load up bbtouch and break the hell out of it and let me know what bugs you find.

Here is a binary of r151:
bbtouchr151app (check more recent posts for newer binaries)

also the code is up on the repo, link in the sidebar to the right.

I will probably be changing the BBTouch code a few times this week, so check back for the most recent stuff. (i will always commit the code to the google repo too, so that will always be updated)

Cheers!
-b

Quick Code Update for BBTouch

Hey All,

I just finished committing the last of the new filter code to the repository. (r150) No binary yet (I am at a conference, waiting for the keynote to start, so no time now :-) so you will have to compile your own. You will also need the openCV.framework
(found here: http://www.ubaa.net/shared/processing/opencv/)

(I plan to add it properly to the project as a private framework, but didnt do it when i added it first for some reason, and now I keep forgetting)

anyhow, the only thing to know really is that in the View Menu, there is a new option : Filter Config… This will allow you to adjust the filter parameters for your setup. It is kinda optimized for DI stuff right now (because that is what I have) but I will add more FTIR friendly filters later (if someone tells me what they need) Oh, and dont put even numbers (or zero) in for the kernel values, or it will crash. I need to put a constraint on that, but haven’t got to it. You can put any number in for the Threshold Mean Offset tho. (negative numbers usually work best)

Let me know any bugs you find!

CHeers!
-b

Quick BBTouch Update

Here is a youtube video (my first :-) of the initial testing of the newer/better/more filtery-er BBTouch along with the BBTUIOTest app (now with more lightboxyness).

Apologies for the supreme craptacularness of the video quality. I don’t have a camcorder, so I just pointed my laptop’s built-in iSight at the table and used iMovie to capture. (while also running BBTouch in the background)

Anyhow, the BBTouch setup was like so:

BBTouch tracking, generating TUIO events, sending them via wifi to yet another machine running BBTUIOTest which is running the projector, and is running the lightbox code.

I know what you are all thinking: since when does BBTUIOTest have a lightbox feature?? and the answer to that would be since a few days ago when I added it. (no code up yet, it is still pretty raw)

I think it is also important to note that all this development comes with much thanks from Sandor’s development budget. I have been working with him on an MT app that he designed (more on that later :-) and now we are moving to the next step and getting BBTouch and some nice (yet to be made :-) cocoa/core image demo apps up to snuff so that he can use them for his own nefarious purposes :-) So! Everyone needs to buy Sandor a beer and thank him for his generous funding of BBTouch and Multitouch code development, and fastracking BBTouch improvements that I may never have gotten to otherwise! (thus saving me at least temporarily from some other, far less interesting jobs :-)

SO! BBTouch, now with more filters: It is still in a very raw state, and the code wont be stable for a few more days at the very least, but here is a sneak peek:

I know, everyone is wondering why I didnt add filtering sooner. Well, it is like this: I like to keep things as simple and minimal as possible (especially things that are generally very complex, like MT stuff). And before, when BBTouch was merely a pet project and I could optimize the blob detection algorithm to my heart’s content, that is what i did. I think it paid off in the end, because i think that just the blob detector pre new filtery goodness was about 85% there. All it was doing was a background subtraction and a simple threshold, and I got really good coverage across about 85% of my surface. However, I was getting the bane of all DI surfaces: false hits from you palm or curled fingers on the light areas and no hits for any blobs in the dark areas. These filters help with that immensely.

Now I have added basically two more filters: a High Pass and an Adaptive Threshold. (and a noise reducer for the highpass, so I guess technically 3 filters.) (all using the openCV image filters. more on that later too)

The High pass filter made all the difference. For anyone doing DI type setups, make sure that you are using a higpass, it will make your life so much easier.

Anyhow, enough for now, back to work for me!

Cheers!
-b

No longer on location.. however..

Still busy.

Just a quick update for everyone waiting (all 2 of you :-) for BBTouch stuff. I finished up that last job, but rolled right into another one that will keep me busy for at least 2 weeks. so, good for me (I can pay my bills! yay!) but less good for BBTouch development (gotta wait just a bit longer :-( ).

that is all for now!

Cheers!
-ben