Thanks for your reply Uwe.
I think I’m on the right way to decode the TUIO messages, since I have been working with the OSC decoder for a while now. The solution to my problem I can’t receive TUIO messages is obvious: I tried to receive them on another computer, since vvvv is running on Windows. I would really appreciate it if you could implement the feature, sending TUIO messages to another computer (IP adress) like darwiinosc does (http://code.google.com/p/darwiinosc/downloads/list).
My setup at the moment is the following one: wiimote -> MacBook receiving with darwiinosc -> sending via OSC/LAN to Server -> decoding and using paramteters with vvvv Now I would add another MacBook using Wiimote Whiteboard to also send OSC data to my vvvv application running on the server.
IF you want to implement the feature, can you maybe post an estimation when this could be done? Otherwise I would write an Processing app, receiving TUIO on localhost, resending it to server.
Thanks in advance! Gerfried
Hi Oliver,
thanks for suggestions. I also thought about this and agree that calibrating all Wiimotes at once is the most user-friendly way to do it. Experimenting will show which averaging strategy actually works best during use. I’ll let the user choose among them if there are several good candidates.
Uwe
Hi Gerfried,
I don’t really understand why you want to forward it to another machine, but that’s alright :) Maybe you can send me a picture of the whole thing once it is working.
_IF_ you want to implement the feature, can you maybe post an estimation when this could be done?
Implementing this feature shouldn’t take too much time. When do you need it?
Otherwise I would write an Processing app, receiving TUIO on localhost, resending it to server.
I found this article on how to tunnel UDP over SSH to another machine. While I assume this would work from Mac to Mac, Windows doesn’t come with the tools in order to do it. This could be a (temporary) solution for you if it even can be done on Windows (try for instance Cygwin), you’re a command line hacker and want to get it working now.
Uwe
The reason is simple: Wiimote Whiteboard runs on Mac OSX without any problems. The windows app doesn’t run as stable and perfect (on our Mac Books on Windows we can’t get the wiimote to work). Our VJ app is done in vvvv whichs only has Windows support. We want to include livepainting on projections. So we need to transfer the pen movement data to the Windows machine.
If we want to implement this livepainting feature, we need to start within the next two weeks.
Of course I can send you some pictures. For information on ongoing development visit http://www.lichtarbeit.li/.
Greets and Thanks! Gerfried
Changes: TUIO host and port now configurable added batch file and shell script to start the cross-platform JAR file
Uwe
Wow… You’re awesome! I’ll try it in the afternoon and post some first results.
Greets Gerfried
One further thought is that while multiple wiimotes will help with the issue of obscuring one of them while in use, it’s really important not to do this while doing calibration, or the system will get very confused. It would be worth putting a message on screen for the user to highlight this.
Just thought I’d follow up. I finally got the keynote software to work with it, but I had to use Scriboard. http://www.macmax.org I don’t know if it ever expires or anything like that. Thanks for making the porting the program Uwe
Hallo,
ich würde gerne das Rotor Display nachbauen, hast du Bestellnummern von Reichelt oder Conrad? Ich bin relativ neu in der Elektronik… Kannst du mir ein wenig dabei Helfen?
I love your program. I use a Windows PC running XP with a Widcomm stack, and I’m using an IOgear Bluetooth adapter, and it worked perfectly for me. In fact, so far it seems to be the best “Wiimote Whiteboard” Program I’ve tried so far in terms of smoothness of lines and ease of use. Thank you for this great app.
Hi Sebastian,
das RotorDisplay wurde von Stefan Heindel gebaut und ich habe das Java Programm dafür geschrieben. Ich habe Stefan Bescheid gesagt und er wird sich bei dir melden oder hier antworten.
Uwe
This is amazing! I have been waiting for the Mac version…so glad that there are people who are smarter than me to figure this out and share with the rest of us. I posted a video of my Wiimote Whiteboard on my blog http://ilearntechnology.com. Feel free to link to it. I am so excited right now I can’t even stand it! You made me a hero today with my students :-)
It’s great to hear that you all like the software. I will add a page with links when I have some time. I’m currently adding support for two Wiimotes and hope to have another release soon.
Uwe
Hi Uwe,
I’ve been reading all the nice comments and about the features of your programm but I can’t get it to run :-( When the app is starting it ends with an error saying it failed to connect because not soported on winsock. :(
I’m pasting bellow all the code:
E:\WII_WHITEBOARD\WiimoteWhiteboard_UWE_JAVA>java -jar WiimoteWhiteboard.jar
BlueCove version 2.0.3-SNAPSHOT on winsock
19/04/2008 06:29:45 PM wiiremotej.WiiRemoteDiscoverer getWiiRemote
GRAVE: Error getting device!
java.io.IOException: WiiRemote failed to connect!
at wiiremotej.WiiRemote.construct(WiiRemote.java:301)
at wiiremotej.WiiRemote.
at com.intel.bluetooth.BluetoothStackMicrosoft.l2OpenClientConnection(Bl
uetoothStackMicrosoft.java:657)
at com.intel.bluetooth.BluetoothL2CAPClientConnection.
at com.intel.bluetooth.BluetoothStackMicrosoft.l2OpenClientConnection(Bl
uetoothStackMicrosoft.java:657)
at com.intel.bluetooth.BluetoothL2CAPClientConnection.
Hi Efex,
the program is not working with the “winsock” Bluetooth stack that comes with Windows XP by default. If possible, try using the WIDCOMM stack. Your last chance may be BlueSoleil if this also fails.
WiiRemoteJ is used to connect to the Wiimote over Bluetooth. If it works on your system, my program will work too. The WiiRemoteJ forum might help to solve your problem.
Good luck, Uwe
Hallo Uwe, wäre es möglich zwei Wii Remote so zu verwenden, dass jeweils in zwei Ecken eines Vierecks eine Wii Remote sich befindet. Ich hatte mir das Ebeam interaktiv Usb System gekauft. Ich finde die Handhabung sehr schön, da ich den Empfänger direkt auf das Whiteboard befestigen kann. Die Genauigkeit beim Ebeam kommt hier wahrscheinlich durch die Verwendung von Ultraschall und IR Sender. Ich dachte mir nun, wenn man zwei Wii Remote verwendet, so müsste man nicht die 45° einhalten und könnte die Wii Remote waagerecht zur Wand verwenden. Leider verstehe ich nichts vom programmieren und könnte die Einbindung von zwei Wii Remote Empfängern nicht selbst umsetzen. Die Frage ist, ob diese geplant ist oder ob du dies langfristig umsetzen könntest.
Andre
Can you share more information on how you are using the Apple Remote as an IR Pen?
Craig G.
Thank you from some great software. As a Tech Coordinator for a K-12 School District this project is very exciting. I do have a question, I was wondering if anyone else has tried a different IR camera? The reason I ask is not because I love the wii remote for what it does, many of the students that see it are become more excited to see there type of technology being used in the school. I ask because I would want to use a camera that doesn’t run on batteries. I have been looking and have not seen anything available. For the price it seems that the wii remote will be the best priced, even with a case of batteries, but was just checking to see if anyone else has thought of this.
P.S. Nice Website. I love seeing Drupal used.
Hi Andre,
I would first of all appreciate if you could post in English since less than 10% of visitors are from Germany. On to your question about using two Wiimotes:
As far as I understand you want something similar to case 3 that I explained in a previous post. If so, support for this is currently not planned. The next release of the software will support cases 1 and 2 of the aforementioned post.
Uwe
Hi Ben,
I’m pretty sure you won’t find anything comparable to the Wiimote for this low price. The major advantage of using a Wiimote is that the image processing (to find the 4 brightest IR dots) is actually done on the Wiimote itself. It only transmits the coordinates of those points which takes very low bandwidth in comparison to sending raw images.
I ask because I would want to use a camera that doesn’t run on batteries. […], but was just checking to see if anyone else has thought of this.
Other people have thought of this before. Here you go:
Uwe
I went to BigLots and picked up a $5.00 AC universal adapter, turned it to 3V, and put the 9V leads on the battery leads on the WiiMote, using balled-up tinfoil to make contact. I used a couple of confiscated erasers I’d harked from my students (hey, if they play with it in class, it’s a toy, and it’s mine!) to maintain pressure of the 9V leads to the battery leads. I no longer have to climb on a table and check the batteries every day anymore! It’s wonderful.
Another thing I’m sick of is swapping batteries in my IR pens. I don’t want to use USB cables. I tried putting a rechargeable battery in the wiipen and using bent paper-clips to run from the charger leads to the battery nodes through some holes I’d drilled in the case. It worked, but the batteries I was using are way crappy so it didn’t work well. I’m sure it will work well once I get over being too cheap to spring for some new rechargeable AAs.
I had a closer look at Andre’s post, using my rusty German and a web search for the Ebeam product. It throws up another potential use of multiple wiimotes which I’ll describe here:
The two wiimotes are close to co-planar with the white board. Each one can see the entire board and they are sufficiently far apart to resolve the position of the IR source in 2D (on the two top corners, for example). Each wiimote is effectively just reporting a 1D coordinate, so the maths should be fairly straightforward.
The benefit is that the user is unlikely to obscure the pen and sources away from the board can be ignored. The problem is that the wiimotes’ field of view is about 45 degrees (accordingly to Johnny Lee, haven’t test it myself) whereas 90 degrees would be better for this setup. This could be sorted by putting them further away from the board.
Does this program allow me to use 2 pens and manipulate the screen with more than 1 point?
Hi Uwe,
I tried to use the programs you recommended. Widcomm doesn’t recognize my usb bluetooth adapter. Bluesoleil works fine. I can connect mi wiimote to computer with it, but when I run your wiimotedesktop, it says wiimote failed to connect because bluesoleil doesn’t support it. Does it mena that I can’t get to run your application ??
Thanks
@Efex: Note that WiiremoteJ handles the whole connection - it will fail if you have already connected to your wiimote. Having said that, there are lots of issues of compatibility between adapters and drivers. The wiiremoteJ forum is one place to look for advice, but the consensus there seems to be that the Widcomm drivers are the most likely to work (but check which version because the latest Widcomm drivers don’t work with all Bluetooth chipsets but earlier versions do). Johnny’s original program uses a library that’s compatible with a wider variety of Windows setups, so that’s the best bet for general windows use, but it has fewer of the advanced features that Uwe has built / is building into his software.
Hi ! I’m using ubuntu 7.04 and trying to use your soft, but it dont work…
I have this message : Bluetooth failed to initialize. There is probably a problem with your local Bluetooth stack or API.
I try same kind of soft writen in pyton and it work perfectely. So I think my bluetooth work perfectely.
Can you help me ?
Thanks Oliver for your answer. In Bluesoleil I don’t have the wiimote connected. I know Uwe’s app is supposed to do it :(
Where can I get earlier versions of Widcomm? Because the one I download from the site just doesn’t run. When I run the install, immediatly it tells me it hasn’t found any bluetooth device and exit :(
Thanks again
I saw the reference to earlier Widcomm drivers on this page: http://www.dev-toast.com/2007/01/05/uncrippling-bluetooth-in-vista-rtm
It’s about Vista but I guess it applies to XP as well.
Oliver
Hi Uwe, I’ve got to say your are a real trooper for getting this going - being a mac user, I’m used to missing out on all this fun stuff! I’ll be getting this going on my Powerbook G4 over the next week - I can’t wait to impress, well, anyone who’ll listen! Keep up the good (groundbreaking) work. Cheers from Australia, Kearon
What you outlined may work. It would still require some careful positioning of the Wiimote though. I’ll think about this feature once cases 1 and 2 are working well…
Uwe
With the included TUIO support, you can use up to 4 pens and have their positions send to other applications. My software will only use the first pen’s position to control the mouse cursor.
Uwe
Hi Pascal,
I already said some words about Linux compatibility in a previous post. My software now uses a BlueCove 2.0.3 snapshot, but you still need to download the BlueCove GPL module that supports BlueZ on Linux.
One user did all this but didn’t succeed. I’m unable to test it due to the lack of a Linux system and time. There is one alternative worth exploring if you know how to compile my software: Download the source code and use the Avetana bluetooth library instead ob BlueCove.
Uwe
Hi Efex,
WIDCOMM only works with some (licensed?) USB Bluetooth adapters as far as I know. Here’s the story about BlueSoleil:
Flow: WiimoteWhiteboard » WiiRemoteJ » JSR-082 (BlueCove) » OS » Bluetooth Stack (e.g. WIDCOMM) » Bluetooth Controller (e.g. USB dongle)
I started requests for evidence about the successful combination of BlueCove, BlueSoleil and my software/WiiRemoteJ here and here. Nobody cared. I’m honestly a little confused about this…
Uwe
Okay, the subject probably sounds stupid, but, if we’re running this on intel macs, why do we need a wiimote? There’s a IR sensor built right in!
I don’t know how hard this would be, but wouldn’t it be possible to use the IR sensor in my Macbook Pro?
Oliver
You really need a wiimote, because in the MacBook Pro is just a IR sensor and not an IR cam. With the sensor you can determine whether the IR LED is turned on or of, but with the IR cam in the Wiimote you can determine the position of the IR LED.
toco
Hi all,
Great work on this project, Uwe!
My apologies if this is a silly question, but…. Does the wiimote pick up light directly from the tip of the pen, or is it picking up the light when it is reflected on the whiteboard? If the latter, wouldn’t one of these: http://www.bhphotovideo.com/c/product/443847-REG/Morovision_ITTA_271952_IR_Laser_Stick_.html be perfect as a pen, and even work from a long distance, say in the back of a room?
Saleem
Hi Saleem,
this is not a silly question and other people are also talking about it. Have a look at this thread about IR lasers and the Wiimote. The Wiimote is picking up the 4 brightest IR dots it can see, which can be reflections. But that’s not whole story. The Wiimote actually includes a normal camera with an IR filter in front of it to block non-IR light. People have removed the IR filter and used regular laser pointers with it. Have a look at this video and this recent thread.
Uwe
Hi Uwe, I tried to compile and run WiiWhiteboard with eclipse on Mac OS X but failed at first. The problem is that the bundled BlueCove jar does obviously not work with the “new” 1.6 of Apple. I ran the Ant script of BlueCove to make a new jar but it still failed. So I chose 1.5 as JDK and it all worked.
Somehow strange…
Anyway, I want to try to enhance/reuse the app in order to enable a face tracking scenario with the Wiimote and a goggle with IR LEDs on both sides (just like in the Johnny Cung Lee head tracking video).
Cheers johannes
Hi Johannes,
I tried to compile and run WiiWhiteboard with eclipse on Mac OS X but failed at first. The problem is that the bundled BlueCove jar does obviously not work with the “new” 1.6 of Apple. I ran the Ant script of BlueCove to make a new jar but it still failed. So I chose 1.5 as JDK and it all worked.
You could post this at the BlueCove Users Group. The lead developer usually replies very quickly. I have a first generation Macbook (32-bit CPU) and hence can’t use the new Java 1.6 (thanks Apple!).
Anyway, I want to try to enhance/reuse the app in order to enable a face tracking scenario with the Wiimote and a goggle with IR LEDs on both sides (just like in the Johnny Cung Lee head tracking video).
This is great news! Don’t hesitate to ask if you need help understanding my (mostly undocumented) code. I’m pretty sure there are many users eagerly waiting for head-tracking on their Macs.
It would be great if you could separate the head-tracking logic from the “3D graphics display”. Other applications would be able to reuse your implementation…
Uwe
I finally up and tried the cross-platform Java version in Windows. I decided I could use the many extra features your version provides. But it just doesn’t work as well as Johnny’s. It’s the sensitivity still. I can’t imagine why it would have this problem. If I reset the WiiMote many, many times I might get decent sensitivity, but it always works perfectly with Johnny’s version the first time. I know you’re working on improvements even as I write this, but I thought I’d point it out. I can’t wait to be able to use your version all the time! I’m working on different placement for the WiiMote, and we’ll see what happens. Maybe it will work better once you get the 2-WiiMote implementation done.
I’m still wondering whether it makes sense to implement the head-tracking in Java. In my opinion this depends on the scenario in which the head-tracking will be used. Mostly it will be a 3D scenario in which every bit of GPU and CPU power is needed.
However, my context would be a Quartz Composer (QC) channel that is used to set the virtual camera of a rapidly composed 3D scene. As I’m not keen to spend hours on tweaking the Darwiin Remote implementation (as I’m more into Java to be honest…) I’m considering to use a Java channel in QC (if this is possible at all) with your implementation as a foundation. A result could be some kind of interface, which yields angle and distance of a head. That would keep things very basic…
Anyway do you know a programmatic way to remove a Bluetooth device from Mac OS X’s Bluetooth devices list by just pushing a button in a Java GUI? I still have the same problems with WiimoteWhiteboard as in DarwiinRemote. Before I can connect to my Wiimote I must remove it from the Bluetooth devices list. Would be nice if this could be put in a button (or in the according fetched Exception in the source code). Maybe this could be achieved with an AppleScript, which is triggered by the Java app…
Hi Descalzo,
But it just doesn’t work as well as Johnny’s. It’s the sensitivity still. I can’t imagine why it would have this problem. If I reset the WiiMote many, many times I might get decent sensitivity, but it always works perfectly with Johnny’s version the first time.
I also don’t know why this is the case…
I know you’re working on improvements even as I write this, but I thought I’d point it out. I can’t wait to be able to use your version all the time! I’m working on different placement for the WiiMote, and we’ll see what happens. Maybe it will work better once you get the 2-WiiMote implementation done.
I actually haven’t changed the code for about two weeks now. Support for 2 Wiimotes is basically implemented, but there is an issue with WiiRemoteJ that prevents the release of a new version. A Bluetooth exception is thrown every 20 seconds if only one Wiimote is connected (due to the ongoing Bluetooth discovery in the background). The developer of WiiRemoteJ told me he wanted to have it fixed it two weeks ago, but it seems he’s either busy or it’s hard to fix. Have a look at these threads (1, 2) for more information.
Uwe
Hi Johannes,
Anyway do you know a programmatic way to remove a Bluetooth device from Mac OS X’s Bluetooth devices list by just pushing a button in a Java GUI? I still have the same problems with WiimoteWhiteboard as in DarwiinRemote. Before I can connect to my Wiimote I must remove it from the Bluetooth devices list. Would be nice if this could be put in a button (or in the according fetched Exception in the source code). Maybe this could be achieved with an AppleScript, which is triggered by the Java app…
Are you using a PowerPC Mac? If so, this is a known issue. If not, let me say that I don’t have that problem on my first-gen MacBook.
The funny thing is that a while ago I actually tried to write an AppleScript to delete the Wiimote from the Bluetooth list of known devices (for PowerPC users). I only succeeded in detecting the Wiimote in that list, I wasn’t able to delete it. I assume it can’t be done with an AppleScript (I like to be proven wrong). And I also just tried the script and it doesn’t work on Leopard…
AppleScript that detects if a Wiimote is in the list of Bluetooth devices (only tested on Mac OS X Tiger):
if (CPU type of (system info) starts with "PowerPC") thentell application "System Preferences" activate set the current pane to pane id "com.apple.preferences.Bluetooth" end tell tell application "System Events" tell application process "System Preferences" set frontmost to true delay 0.2 tell window "Bluetooth" tell tab group 1 click radio button "Devices" delay 0.2 set WiimoteExists to exists static text "Nintendo RVL-CNT-01" of list 1 of scroll area 1 of scroll area 1 of browser 1 of splitter group 1 end tell end tell end tell end tell tell application "System Preferences" if WiimoteExists then display dialog "\"Nintendo RVL-CNT-01\" (Wiimote) already exists in the \"Bluetooth Devices\" list. You have to delete it from there to be able to connect from the WiimoteWhiteboard application. Unfortunately this has to be done after each successful connection (on a PowerPC Mac)." with title "Warning" buttons "OK" else quit end if end tellend if
Uwe
I tried it again. I booted into Tiger and used only the internal (poopy) BT module. I went and uninstalled your program and reinstalled it. It’s working. I had to quit and reconnect, then it worked. I don’t know what changed. Planetary alignment, maybe?
I thought you might like to know.
I’m trying to use the nice Mac drawing application Rita to draw using the Wiimote Mac driver version 0.9.5, but Rita only recognizes mouse clicks from the pen so it’s not possible to draw a line. Dragging the pen while “clicked” only results in a dot at the beginning of the drag.
On the other hand Skitch works great for drawing, but I prefer some of Rita’s drawing tools.
According to Rita’s developer it uses standard Cocoa events for mouse and pen so it should work with all mouse input devices.
Any ideas why Wiimote Whiteboard doesn’t work with an application like Rita, while it works with another drawing application like Skitch?
Just built a IR pen today and got your mac version of writeboard software working on my G4 powerbook OS 10.4.10. I’m a student studying Post Grad Digital Media Arts at University of Brighton, UK and this is gonna be extremely useful for my work there. Keep up the good work. http://www.renderghost.co.uk/
Hi Johan,
I downloaded Rita and could reproduce your problem. Strange enough, if you for instance use the line tool it will actually draw a very thin line. But this thin line is somehow “not real” and disappears when the canvas is repainted (in that area). Maybe you understand what I mean.
Anyway, I don’t know why this happens since the program somehow recognizes the mouse (even if not properly). I can just tell you that I use the class java.awt.Robot to have access to the OS’ mouse. On Mac OS X, this class uses another class apple.awt.CRobot by Apple to actually control the mouse (via JNI I guess). I neither have access to the source code of the latter class nor do I know which native function is called by it. I’m not really into native Mac programming, maybe someone else can shed light on this.
It seems odd after all that it doesn’t work in such a “standard cocoa app”. I even found a YouTube video of someone playing Warcraft III with my software on a Mac.
Uwe
Licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Germany License.