Swing jnect: Kinect ansprechen

beastofchaos

Bekanntes Mitglied
Hallo Community,
Ich beschäftige mich seit gestern mit meiner Kinect-Kamera und will meinen Körper, bzw. anfangs erstmal nur eine Hand, auf ein JPanel zeichnen lassen.

Es gibt von den Entwicklern von jnect ein Tutorial (-> RightHandTrackerTutorial), mit welchem ein Plug-In geschrieben wird, dass im Eclipse-Menü auftaucht und bei dem per "Start/Stop" die Anwendung gestartet wird. Sie sucht dann eine recht Hand und schreibt ihre Position in die Konsole rein.

Um das ganze in ein eigenes JFrame mit dem beschriebenen JPanel zu packen, habe ich die Klasse "RightHandTradcer" aus dem Tutorial kopiert und mit einem Button in dem JFrame die "Start"- und "Stop"-Methode ausführen lassen.

Hier der Code von "RightHandTracker". Ihr findet ihn auch nochmal in dem Tutorial:
Java:
import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.Notifier;
import org.jnect.bodymodel.RightHand;
import org.jnect.core.KinectManager;

public class RightHandTracker
{

	public static RightHandTracker INSTANCE = new RightHandTracker();

	private RightHandTracker()
	{}

	public void printRightHandPosition()
	{
		KinectManager.INSTANCE.startKinect();
		KinectManager.INSTANCE.startSkeletonTracking();
		final RightHand rightHand = KinectManager.INSTANCE.getSkeletonModel().getRightHand();
		rightHand.eAdapters().add(new Adapter()
		{
			@Override
			public void notifyChanged(Notification notification)
			{
				System.out.println("x: " + rightHand.getX() + "| y: " + rightHand.getY()
						+ "| z: " + rightHand.getZ());
			}

			@Override
			public Notifier getTarget()
			{
				return rightHand;
			}

			@Override
			public void setTarget(Notifier newTarget)
			{
				// TODO Auto-generated method stub
			}

			@Override
			public boolean isAdapterForType(Object type)
			{
				// TODO Auto-generated method stub
				return false;
			}
		});
	}

	public void stop()
	{
		KinectManager.INSTANCE.stopKinect();
	}
}

Der Button:
Java:
		buttonStartStop.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				if (!STARTED) {
					RightHandTracker.INSTANCE.printRightHandPosition();
					buttonStartStop.setText("Stop");
					STARTED = true;
				} else {
					RightHandTracker.INSTANCE.stop();
					buttonStartStop.setText("Start");
					STARTED = false;
				}
			}
		});

Wenn ich den Button drücke, kommt in der Konsole folgende Fehlermeldung:

Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError
at org.jnect.core.KinectManager.<clinit>(KinectManager.java:28)
at management.RightHandTracker.printRightHandPosition(RightHandTracker.java:19)
at management.Main$1.actionPerformed(Main.java:34)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
[...]
Caused by: java.lang.NullPointerException
at org.jnect.core.impl.KinectManagerImpl.setUpBodyProvider(KinectManagerImpl.java:63)
at org.jnect.core.impl.KinectManagerImpl.<init>(KinectManagerImpl.java:55)
at org.jnect.core.impl.KinectManagerImpl.<clinit>(KinectManagerImpl.java:35)
... 39 more




Ich hab das Gefühl, es geht nicht, solange ich es nicht als Plug-In in Eclipse einbinde. Wo liegt sonst das Problem? Ich kann nicht einsehen, wo das Problem beim KinectManager ist.

Grüße,
Thomas

PS:
Das Plug-In, wie es im Tutorial erklärt wird, funktioniert natürlich. Alsobloß die Frage, wie ich es davon "wegbekomme" :)
 

Marco13

Top Contributor
Etwas irritierend finde ich gerade, dass Websuchen nach
nullpointerexception KinectManagerImpl
oder
nullpointerexception setUpBodyProvider
jeweils nur GENAU EIN Ergebnis liefern (Die gute Nachricht: Du bist etwas ganz besonderes! :) :D )

Der Stacktrace ist ein bißchen dünn. Erscheint noch was hilfreicheres, wenn man
RightHandTracker.INSTANCE.printRightHandPosition();
z.B. aus der main() aufruft? Hab' mir die Lib jetzt nicht genauer angesehen, aber sie scheint ja spezifisch für Eclipse-Plugins zu sein. Ich würde mal die Holzhammermethode versuchen, und ein normales Java-Projekt erstellen, wo alle JARs aus der ZIP als "Referenced Libraries" hinzugefügt sind, aber vermutlich kann er dann irgendwelche weiteren Dependencies nicht auflösen...

EDIT: BTW, der Source Code ist ja verfügbar, ggf. kann man sich mal ansehen, was in
setUpBodyProvider(KinectManagerImpl.java:63)
eine NullPointerException verurschen kann.
 

beastofchaos

Bekanntes Mitglied
"printRightHandPosition()" steht im ersten Post in der Klasse "RightHandTracker". Sie startet Kinect und fuegt einen Listener hinzu, der die Position der rechten Hand ausliest und in die konsole schreibt.

Wenn ihn heute nacht an meinen pc komme, probier ich das nochmal mit nem normalen projekt aus.

Thomas

PS: Ist der Code auf ihrer Homepage. Kann den Code net aufruufn :/
 

Marco13

Top Contributor
Ieeehhh :( In https://code.google.com/a/eclipsela...rc/org/jnect/core/impl/KinectManagerImpl.java steht in Zeile 63:
Code:
Platform.getExtensionRegistry().getConfigurationElementsFor("org.jnect.core.bodyprovider");
Das ganze scheint also (soweit ich das verstehe!) wirklich nur als Plugin im RCP-Kontext funktionieren zu können :( Das wäre natürlich schlecht...
Es gibt AFAIR noch andere Bibliotheken für Java+Kinect, aber welche, und wie gut die sind, weiß ich nicht...
Vielleicht hat noch ein Eclipse/RCP-Experte eine Idee, wie man das außerhalb von Eclipse zum Laufen bringen kann... (Ein erster Gedanke wäre (ggf. mit etwas Copy+Paste aus der oben verlinkten) eine eigene KinectManagerImpl zu erstellen, aber ob das möglich ist, und wie aufwändig das ist, kann ich gerade nicht einschätzen...
 

beastofchaos

Bekanntes Mitglied
Natuerlich sind Framrwork und SDK installiert, sonst wuerde das tutorial net klappen.
Ich hab bereits iwo gelesen, dass es weitere Kinect-Java-Libs gibt (ueber OpenUI oder so hieß das).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Kinect und Eclipse AWT, Swing, JavaFX & SWT 2
T Elemente auf vorheriger Stage, nach Wechsel der Stage ansprechen AWT, Swing, JavaFX & SWT 32
D Verschieden Scenen ansprechen mit dem Scene Builder und JavaFX (Eclipse) AWT, Swing, JavaFX & SWT 16
Augenblau JavaFX Externe Schriftart über CSS ansprechen und zuweisen AWT, Swing, JavaFX & SWT 5
N JavaFX GUI Elemente einer anderen (FXML)Klasse ansprechen AWT, Swing, JavaFX & SWT 16
J Swing/AWT | Dynamisch erzeugte Objekte ansprechen AWT, Swing, JavaFX & SWT 1
M SWT Wie Objektinstanzen ansprechen? AWT, Swing, JavaFX & SWT 10
F JTabbedPane bestimmten Tab ansprechen AWT, Swing, JavaFX & SWT 13
X Fenster von außen ansprechen AWT, Swing, JavaFX & SWT 7
R JavaFX TableView - nicht ausgewählte Reihe ansprechen AWT, Swing, JavaFX & SWT 6
D OpenGL ansprechen AWT, Swing, JavaFX & SWT 2
J Anonyme Klasse - Button ansprechen - Warum muss Button final sein? AWT, Swing, JavaFX & SWT 4
D Bestimmtes JPanel innerhalb eines JTabbedPane ansprechen AWT, Swing, JavaFX & SWT 2
D Swing JList: ScrollPane auf JPanel ansprechen AWT, Swing, JavaFX & SWT 7
B LayoutManager GUI-Design: eventuelle Alternativen zum Verschachteln + Ansprechen von JPanel()? AWT, Swing, JavaFX & SWT 2
N OK-Button in JOptionPane ansprechen AWT, Swing, JavaFX & SWT 5
A Button in Tabelle ansprechen AWT, Swing, JavaFX & SWT 6
J Ansprechen untergeordneter Objekte AWT, Swing, JavaFX & SWT 6
N paintComponent für Graphics ansprechen AWT, Swing, JavaFX & SWT 2
F checkboxen auslesen/ansprechen AWT, Swing, JavaFX & SWT 1
M Objekt im ActionListener ansprechen AWT, Swing, JavaFX & SWT 3
S buttons über getSelected ansprechen AWT, Swing, JavaFX & SWT 4
A Drag'n Drop: Absender direkt ansprechen? AWT, Swing, JavaFX & SWT 2
G Bildpixel ansprechen und Farbwerte abfragen AWT, Swing, JavaFX & SWT 4
J JSplitPane Felder ansprechen AWT, Swing, JavaFX & SWT 3
F Checkboxen eines anderen Panels ansprechen AWT, Swing, JavaFX & SWT 3
L Drucker ansprechen unter Java AWT, Swing, JavaFX & SWT 6
S Swing - JFrame ansprechen AWT, Swing, JavaFX & SWT 2
M jLabel per Index ansprechen? AWT, Swing, JavaFX & SWT 8
G Unterschiedliche Textfields ansprechen AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen


Oben