From 07cec0cb4ecdb47efaef74026e00d8c2cb6ad5a3 Mon Sep 17 00:00:00 2001 From: Rik Veenboer Date: Tue, 15 Feb 2011 19:12:02 +0000 Subject: [PATCH] Getracht de acceleratie normalisatie van wiigee te benaderen. Dit lukt redelijk, maar niet goed genoeg om zonder de filters te hoeven tunen direct goede herkenning te krijgen. --- java/header.bat | 2 + java/native/WiiUseJ.dll | Bin 14848 -> 14848 bytes java/src/pm/device/wiimote/WiimoteDevice.java | 16 ++++---- .../src/pm/device/wiimote/WiimoteService.java | 3 +- .../device/wiimote/gesture/GestureDevice.java | 1 + java/src/wiiusej/WiiUseApi.java | 1 + java/src/wiiusej/WiiUseApiManager.java | 9 +++++ java/src/wiiusej/Wiimote.java | 4 ++ java/src/wiiusej/values/Acceleration.java | 33 ++++++++++++++++ java/src/wiiusej/values/Calibration.java | 36 ++++++++++++++++++ java/src/wiiusej/values/RawAcceleration.java | 2 +- 11 files changed, 97 insertions(+), 10 deletions(-) create mode 100644 java/header.bat create mode 100644 java/src/wiiusej/values/Acceleration.java create mode 100644 java/src/wiiusej/values/Calibration.java diff --git a/java/header.bat b/java/header.bat new file mode 100644 index 0000000..ff77e28 --- /dev/null +++ b/java/header.bat @@ -0,0 +1,2 @@ +javah -classpath bin wiiusej.WiiUseApi +pause \ No newline at end of file diff --git a/java/native/WiiUseJ.dll b/java/native/WiiUseJ.dll index a7a3a684c76677d290eccab45d3227b663b10a0f..abf3690f3866ac80c68e4ef5f55c1d9fe4bfa801 100644 GIT binary patch delta 59 zcmZoDX(*ZSfywgN#7}-qmIa%g7%#~Jd7H)L?=cCknr4yE!=LZf=lp%M-v3>@I5)E@ N$+Lr`)iiGj008Tc7vlf` delta 59 zcmZoDX(*ZSfk|uQ#7}-qT+y4I7%#~Jd7H)L?=cCkTfDB() wiimoteList; protected Wiimote[] wiimoteArray; @@ -75,7 +75,6 @@ public class WiimoteService extends WiiUseApiManager implements WiimoteListener public void onStatusEvent(StatusEvent event) { if (event.isConnected()) { - } } diff --git a/java/src/pm/device/wiimote/gesture/GestureDevice.java b/java/src/pm/device/wiimote/gesture/GestureDevice.java index c6e322e..81b9d63 100644 --- a/java/src/pm/device/wiimote/gesture/GestureDevice.java +++ b/java/src/pm/device/wiimote/gesture/GestureDevice.java @@ -28,6 +28,7 @@ public class GestureDevice extends Device /*implements AccelerationListener */{ } public void add(double[] vector) { + //System.out.printf("%f %f %f\n", vector[0], vector[1], vector[2]); fireAccelerationEvent(vector); } diff --git a/java/src/wiiusej/WiiUseApi.java b/java/src/wiiusej/WiiUseApi.java index 428f522..4e35a42 100644 --- a/java/src/wiiusej/WiiUseApi.java +++ b/java/src/wiiusej/WiiUseApi.java @@ -348,4 +348,5 @@ public class WiiUseApi { */ native void specialPoll(EventsGatherer gath); + native short[] getCalibration(int id); } diff --git a/java/src/wiiusej/WiiUseApiManager.java b/java/src/wiiusej/WiiUseApiManager.java index 05797c5..b3f4a63 100644 --- a/java/src/wiiusej/WiiUseApiManager.java +++ b/java/src/wiiusej/WiiUseApiManager.java @@ -21,6 +21,8 @@ import java.util.concurrent.atomic.AtomicBoolean; import javax.swing.event.EventListenerList; +import wiiusej.values.Calibration; +import wiiusej.values.RawAcceleration; import wiiusej.wiiusejevents.utils.EventsGatherer; import wiiusej.wiiusejevents.utils.WiiUseApiListener; import wiiusej.wiiusejevents.wiiuseapievents.WiiUseApiEvent; @@ -661,4 +663,11 @@ public class WiiUseApiManager extends Thread { shutdown(); } + public Calibration getCalibration(int id) { + short[] data = wiiuse.getCalibration(id); + return new Calibration( + new RawAcceleration(data[0], data[1], data[2]), + new RawAcceleration(data[3], data[4], data[5])); + } + } diff --git a/java/src/wiiusej/Wiimote.java b/java/src/wiiusej/Wiimote.java index aabb0f0..3b992c4 100644 --- a/java/src/wiiusej/Wiimote.java +++ b/java/src/wiiusej/Wiimote.java @@ -18,6 +18,7 @@ package wiiusej; import javax.swing.event.EventListenerList; +import wiiusej.values.Calibration; import wiiusej.wiiusejevents.utils.WiiUseApiListener; import wiiusej.wiiusejevents.utils.WiimoteListener; import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent; @@ -492,4 +493,7 @@ public class Wiimote implements WiiUseApiListener { return "Wiimote with ID : " + id; } + public Calibration getCalibration() { + return manager.getCalibration(id); + } } diff --git a/java/src/wiiusej/values/Acceleration.java b/java/src/wiiusej/values/Acceleration.java new file mode 100644 index 0000000..68a7d14 --- /dev/null +++ b/java/src/wiiusej/values/Acceleration.java @@ -0,0 +1,33 @@ +package wiiusej.values; + +public class Acceleration { + protected double x; + protected double y; + protected double z; + + public Acceleration(double x, double y, double z) { + this.x = x; + this.y = y; + this.z = z; + } + + public double getX() { + return x; + } + + public double getY() { + return y; + } + + public double getZ() { + return y; + } + + public double[] toArray() { + return new double[] {getX(), getY(), getZ()}; + } + + public String toString() { + return "Acceleration : (" + x + ", " + y + ", " + z + ")"; + } +} diff --git a/java/src/wiiusej/values/Calibration.java b/java/src/wiiusej/values/Calibration.java new file mode 100644 index 0000000..eaa55ce --- /dev/null +++ b/java/src/wiiusej/values/Calibration.java @@ -0,0 +1,36 @@ +package wiiusej.values; + +public class Calibration { + protected RawAcceleration zeroAcceleration; + protected RawAcceleration gAcceleration; + protected RawAcceleration differenceAcceleration; + + public Calibration(RawAcceleration zeroAcceleration, RawAcceleration gAcceleration) { + this.zeroAcceleration = zeroAcceleration; + this.gAcceleration = gAcceleration; + differenceAcceleration = new RawAcceleration( + (short) (zeroAcceleration.getX() - gAcceleration.getX()), + (short) (zeroAcceleration.getY() - gAcceleration.getY()), + (short) (zeroAcceleration.getZ() - gAcceleration.getZ())); + System.out.println(zeroAcceleration); + System.out.println(gAcceleration); + System.out.println(differenceAcceleration); + System.out.println("<"); + //System.exit(0); + } + + public RawAcceleration getZeroAcceleration() { + return zeroAcceleration; + } + + public RawAcceleration getGAcceleration() { + return gAcceleration; + } + + public Acceleration getAcceleration(RawAcceleration rawAcceleration) { + return new Acceleration( + (rawAcceleration.getX() - zeroAcceleration.getX()),// / (double) gAcceleration.getX(), + (rawAcceleration.getY() - zeroAcceleration.getY()),// / (double) gAcceleration.getY(), + (rawAcceleration.getZ() - zeroAcceleration.getZ()));// / (double) gAcceleration.getZ()); + } +} diff --git a/java/src/wiiusej/values/RawAcceleration.java b/java/src/wiiusej/values/RawAcceleration.java index 83f9578..f38fac6 100644 --- a/java/src/wiiusej/values/RawAcceleration.java +++ b/java/src/wiiusej/values/RawAcceleration.java @@ -75,7 +75,7 @@ public class RawAcceleration { @Override public String toString() { - return "Raw acceleration : (" + x + ", " + y + "," + z + ")"; + return "Raw acceleration : (" + x + ", " + y + ", " + z + ")"; } }