15

Github のソースから OpenNI と Sensor をビルドし、Nite をインストールしました。2.6.39 カーネルと異なるバージョンの Java を使用した Debian でこれをテストし、Lubuntu 11.04 と OpenNI 不安定型および avin2 センサーを使用した別のコンピューターでテストしました - 同じ結果です。ビルド済みのバイナリでもテストしました。

C++ と .NET の UserTracker サンプルは機能しますが、UserTracker.java が実行されてシルエットが検出され、キャリブレーション ポーズを作成すると JVM がクラッシュします。これは、クラッシュ前の出力です。

New user 1
Pose Psi detected for 1

コードをいじってみましたが、原因となっているコードが見つかりません - でクラッシュしませんPoseDetectedObserver.update

問題の例へのリンクは次のとおりです: https://github.com/OpenNI/OpenNI/blob/master/Samples/UserTracker.java/org/OpenNI/Samples/UserTracker/UserTracker.java

他の誰かがこの問題に遭遇したことがありますか、または何が間違っている可能性がありますか?

編集:SamplesConfig.xml でのログ記録を有効にしました。Java サンプルは起動時にこれらの警告を出力しますが、C++ および .NET サンプルには最後の警告のみが出力されます。これがログで見つかった唯一の違いです。

  125 INFO       OpenNI version is 1.3.2 (Build 3)-Linux-x86 (Jul 28 2011 03:43:14)
  141 INFO       Filter Info - minimum severity: WARNING, masks: ALL
 2482 WARNING    Failed loading lib: /usr/lib/libXnVFeatures_1_3_0.so: undefined symbol: xnOSStrFormat

 2489 WARNING    Failed to load '/usr/lib/libXnVFeatures_1_3_0.so' - missing dependencies?
 4080 WARNING    Failed loading lib: /usr/lib/libXnVHandGenerator_1_3_0.so: undefined symbol: xnOSStrFormat

 4087 WARNING    Failed to load '/usr/lib/libXnVHandGenerator_1_3_0.so' - missing dependencies?
 7581 WARNING    Open named event: failed to open key file (2) - event might not exist...

edit2: 賞金を設定しました。Lubuntu 11.04 上の OpenNI、NITE、および avin2 の SensorKinect の最新の不安定バージョンからの詳細なログ ファイルとダンプを以下に示します: http://pastebin.com/anG18agp http://pastebin.com/ mAkf0G6M

4

1 に答える 1

6

OpenNI の Java ラッパー クラスにエラーがあります。

org_OpenNI_NativeMethods.cpp の読み取りは次のとおりです。

void XN_CALLBACK_TYPE PoseDetectionHandler(XnNodeHandle hNode, const XnChar* strPose, XnUserID user, void* pCookie)
{
    CallbackCookie* pCallback = (CallbackCookie*)pCookie;
    JNIEnvSupplier supplier;
    jstring jPose = supplier.GetEnv()->NewStringUTF(strPose);
    supplier.GetEnv()->CallVoidMethod(pCallback->obj, pCallback->mid, jPose, user);
    supplier.GetEnv()->ReleaseStringUTFChars(jPose, strPose);
}

しかし、newStringUTF で割り当てられた文字列を releaseStringUTF にすることは想定されていません...したがって、クラッシュします..例については、こちらを参照してください: newstringutf-string.html

ソースコードを取得... リリース行のコメントを外します.. OpenNI.jni.dll をビルドすると、usetracker.java が実行されます!

敬具、デビッド

于 2011-08-11T16:08:58.297 に答える