Wednesday, 9 April 2008

HOWTO: Get wii-mote data into Android

In the previous post I demonstrated live wii-mote data going into Google Android. Here is how to replicate this for yourself.

Overview

A C program communicates with the wii-mote over bluetooth and outputs the accelerometer readings to a file. This is then read by a patched version of the OpenIntents sensor simulator and relayed into Android.

The bits

There are four main parts you'll need to get this going:

  1. http://dalethatcher.com/android-wii/wiiacc.tar.bz2 A small home grown C app that uses the CWiid library V0.6.
  2. http://dalethatcher.com/android-wii/wiimote-sensor-simulator.jar A patched version of the OpenIntents sensor simulator program that supports input from wiiacc.
  3. http://openintents.googlecode.com/files/openintents-binary-0.1.5.zip The OpenIntents binaries, which includes the sensors demo program.
  4. http://code.google.com/android/download.html The Android emulator.

Setup

Setting up each of the parts.

wiiacc

  1. Get cwiid-0.6.00.tgz if you need to and install it.
  2. Download wiiacc.tar.bz2 and unpack it.
  3. Run bootstrap.sh and then follow the instructions in the INSTALL file to build and install it.
  4. Run the program with the output filename as an argument. I use 'wiiacc wii' in my home directory.
  5. Follow the instructions from the program and if all is well you should start to see wii accelerometer data in the output file.

Patched Sensor Simulator

  1. Download wiimote-sensor-simulator.jar or build from the source if you prefer.
  2. Run "java -jar wiimote-sensor-simulator.jar"
  3. Scroll down to the bottom of the settings window to the "Real sensor bridge" section.
  4. Enter the path to the output file in the text field (I use '/home/dale/wii') and select "Use Wii-mote accelerometer".
  5. If all is well you should see the image of the mobile phone in the top left mostly match the movement of the wii-mote. I say mostly because the wii-mote works out it's orientation by gravity which means that it doesn't measure yaw. There is a good explanation here.

OpenIntents and Android

There are some instructions on the OpenIntents wiki here. However this is the short version:

  1. Unpack android and run "tools/emulator"
  2. Unpack the open intents binary package and install the OpenGL viewer by running: android_install/tools/adb install openintents-binary-0.1.5/OpenIntents.apk android_install/tools/adb install openintents-binary-0.1.5/samples/OpenGLSensors.apk
  3. When the emulator starts launch the OpenGL Sensors program and go to the settings menu, enter the most plausible IP address found under 'Possible IP addresses'.
  4. You can then test it's working by going to the "Testing" tab and clicking connect, you should see the wii accelerometer data.
  5. For some reason I usually find at this point you'll need to come out of the OpenGL Sensors app and go back in. However once I've done this selecting 'connect' in the menu works.

19 comments:

Networx said...

hi, does this also work on a real android device or just in the simulator?

thx for your effort!

Dale said...

Sorry I don't have access to a real device best to ask the OpenIntents guys.

cdwong said...

I tried to duplicate what you did with OpenIntents and OpenGLSensors. I can install these two packages on my Android emulator or device, but they crash every time I try to run them. I think it's probably because they are of very old version--the latest opinintents binary and source files I can find and download is for Android 0.9. Are there any later solutions on this subject?

Dale said...

@cdwong Yeah looks like OpenIntents has moved on quite a bit. Unfortunately I've not had time to update this program. However as there are now Android handsets available it's probably easier to use one of those for development.

cdwong said...

I found the right Android version to use so the OpenIntents and OpenGLSensor apps won't crash: Android 1.1. So now I can run these two apps along with the Java Sensor Simulator without problem.
What I need to do now is have something like the wiiacc program that communicates with the WII device and sends its output data to a file. Instead of a WII device, what I have here is a proprietary accelerometer sensor board that I can control and have it send out data in the same format as you did with your wiiacc program. Could you explain what format you use for such data output? Or better yet, if you could, produce a sample datafile for me to try?

Dale said...

@cdwong The data format is the acceleration numbers for each axis "x,y,z\n" with a new file created for each update.

Yap Wen Jiun said...

I have problem in making "wiiacc", I don't know how to create a "configure" file.

Dale said...

@Wen_Jiun_Yap Try running the 'bootstrap.sh' file. Apologies for not putting this in the README.

mattias said...

i cant run ./configure it says that it cant fint the file.

Dale said...

@mattias see above

mattias said...

i have alredy run bootstrap.sh, i clicked on it and chose run. then i used cd to get to the extracted wiiac file then i typed in ./configure.
is there something i missed or did wrong?

Dale said...

@mattias If you run bootstrap.sh from the command line you'll probably see some errors about programs you'll need to install. This code was just a quick sketch so it's not production quality. If you're not a moderately experienced programmer then I'd suggest spending some more time learning about C and autoconf/automake.

mattias said...

./configure works but now it says
checking for cwiid_open in -lcwiid... no
configure: error: Cannot find cwiid library, do you need an --with-cwiid-dir?
any suggestions?

mattias said...

nevermind

mattias said...

This might be a stupid question but how do you start the program and connect it to the wiimote?

mattias said...

I got it

VTazdecor said...

Mỗi công ty doanh nghiệp tại các sản phẩm nội thất văn phòng của mình nên chọn mua mẫu bàn ghế làm việc như thế nào. Nên viêchjChọn mua mẫu ghế văn phòng cho công ty doanh nghiệp
Ghê làm việc tại văn phòng công ty luôn có những ưu điểm khác nhau tùy thuộc vào nhiêu yếu tố khác nhau cho nên việc Chọn mua mẫu ghế văn phòng làm việc như thế nào
Mỗi loại sản phẩm nội thất văn phòng đều có những ưu điểm khác nhau tùy thuộc vào nhiều yếu tố. Cùng tìm hiểuNhững ưu điểm ghế văn phòng làm việc
Chọn mua những mẫu ghế như thế nào giúp cho văn phòng và nhân viên tại công ty. Vậy việcCần nên chọn mua mẫu ghế văn phòng làm việc nào
Khi chọn mua mẫu ghế văn phòng làm viẹc tại công ty bạn nên quan tâm tớiTiêu chí chọn ghế văn phòng
Việc chọn mua mẫu ghế văn phòng làm việc tại công ty văn phòng bạn nên dựa theoNhững tiêu chí của ghế văn phòng

VTazdecor said...

Như chúng ta đã biết công việc tại văn phòng luôn gắn liền với chiếc bàn làm việc nhân viên cho nên việc chọn mua mẫu bàn làm việc nào cho phù hợp với nhu cầu khả năng sử dụng của nhân viên tại văn phòng luon được các nhà quản lý quan tâm tới chính vì thế cho nên đối với mẫu mã thì bàn văn phòng có những tiêu chuẩn như thế nào để chọn lựa cùng chúng tôi tìm hiểu qua chia sẻ sau:
- Đầu tiên phải nói đến diện tích: Bàn văn phòng tiêu chuẩn có kích thước mặt bàn là 1.2m x 60cm và chiêù cao chuẩn là 75cm tuy nhiên tuỳ theo diện tích văn phòng mà chúng ta có thể linh động kích thước nhưng phải đảm bảo kích thuớ tối thiểu
- Kế đến là chỗ để máy tính: Bàn phải đáp dứng được cả không gian cho việt để máy bàn và Laptop
- Không gian để chân: Một chiếc bàn thoải mái phải có không gian để chân phù hợp giúp người ngồi có thể cảm thấy thoải mái
- Không gian chứa đồ: Không phải lúc nào bạn cũng mang tài liệu, hay những vật dụng tại công ty về nhà và vì thế cần phải có không gian để cất chúng.
Trên là một trong các tiêu chuẩn chủ đạo khi có nhu cầu chọn mua bàn làm việc dành cho văn phòng nhằm mang lại cho bạn sự lựa chọn đứng đắn trong khi trên thị trường nội thất văn phòng có nhiều đa số sản phẩm nội thất nhiều mẫu mã, kích thước, chất liệu, màu sắc...khiến bạn khó có thể chọn được mẫu bàn đúng với mục đích và nhu cầu sử dụng.

An Binh said...

Sự lựa chọn kích thước bàn làm việc gỗ phù hợp không những tạo cảm giác thoải mái, thư thái cho người dùng khi làm việc mà còn là động lực tạo sự hứng khởi cho mỗi cá nhân.
Hãy cùng tôi tham khảo hướng dẫn dưới đây để chọn được một kích thước bàn làm việc Hòa Phát tiêu chuẩn cho từng không gian và từng đối tượng sử dụng:
Kích thước bàn làm việc theo vóc dáng người sử dụng:
Khi ngồi làm việc, tư thế của mỗi người được xác định bởi sự tham gia của cơ lưng, cổ, cơ bụng. Tư thế ngồi thoải mái nhất khi phần thân kể cả cổ và vai được để thẳng tự nhiên, cột sống không ưỡn quá, không cúi hay vặn để tránh những chấn thương không đáng có, hay sự tê mỏi trong thời gian dài ngồi làm việc.
Tư thế ngồi đối với sức khỏe và kết quả công việc của nhân viên sẽ được thể hiện rõ rệt qua sự nghiên cứu của nội thất Hòa Phát và đưa ra công thức giúp xác định kích thước bàn văn phòng giá rẻ tphcm phù hợp. Bộ bàn ghế có kích thước phù hợp là chiều cao ghế ngồi bằng 0,27 chiều cao người ngồi; chiều cao bàn làm việc bằng 0,46 chiều cao người ngồi.
Ngoài ra, những dòng sản phẩm bàn làm việc có thể căn chỉnh độ cao, phù hợp với nhiều vóc dáng người sử dụng cũng là sự lựa chọn tối ưu hơn cho nhiều người sử dụng có vóc dáng khác nhau.
Kích thước phù hợp không gian văn phòng
Để chọn bàn làm việc cũng như là ghế văn phòng hòa phát thì việc đầu tiên bạn nên tìm hiểu kích thước không gian văn phòng để chọn được mẫu bàn phù hợp với văn phòng không chiếm quá nhiều diện tích cũng như đi lại dễ dàng hơn. Ngoài ra thì việc lựa chọn sản phẩm nội thất văn phòng giá rẻ tphcm sao cho phù hợp với bàn và ghế có sự hài hòa lẫn nhau tạo nên không gian làm việc hiện đại và thoải mái cho nhân viên có thể thể hiện hết công suất trong công việc mà không bị căng thẳng trong công việc.