問題タブ [google-project-tango]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
google-project-tango - Google Tango: 深度とカラー フレームの整列
Google Tango タブレットを使用して、(同期) 深度/カラー フレーム ペアを調整したいと思います。両方のフレームの解像度が同じであると仮定すると、深度フレームの各ピクセルがカラー フレームの同じピクセルに対応します。つまり、 、レチノトピックマッピングを達成したいと思います。これは、最新の C API (ヒルベルト リリース バージョン 1.6) を使用してどのように実現できますか? これに関するヘルプは大歓迎です。
unity3d - Tango シーンを離れると Unity3D がクラッシュする
Motion Tracking
、Area Learning
、およびを使用するシーンを離れて、標準の Tango プレハブWebcamTexture
を使用しないメニュー シーンに移動すると、アプリケーションがクラッシュします。Camera
Tango
プレハブを使用してシーンを離れるときに呼び出さなければならないメソッドはありますか? クラッシュが発生している理由は何ですか?
google-project-tango - エリア記述ファイル (ADF) はどのようなものですか?
私は Google Tango Tablet を使い始めています。うまくいけば、スキャンした領域から (基本的な) 2D / 3D マップを作成できます。しかし、最初に、可能な限り時間効率を高める計画を作成するために、Tango (センサー/API) についてできるだけ多くのことを読みたいと思います。
領域を学習する機能は非常に興味深い概念であることにすぐに気付きましたが、いわゆる領域記述ファイル (ADF) と呼ばれるものについて何も見つけることができませんでした。
ADF ファイルは地理的に参照できること、メタデータと一意の UUID が含まれていることを知っています。さらに、基本的な機能は知っていますが、それだけです。
モジュールの一部では、ADF ファイルは「マップ」と呼ばれ、他の部分では単に「説明」と呼ばれます。
では、これらのファイルはどのように見えるのでしょうか? それらはすでに基本的な (GRID) (2D) マップですか、それとも単なる説明ですか? すでに ADF ファイルを抽出した人がいることを知っているので、どんな助けも大歓迎です!
google-project-tango - Jacobi Google Tango API で onFrameAvailable() を使用する
質問: Tango Java ( Jacobi ) APIonFrameAvailable()
コールバック を使用して、Tango のカラー カメラ イメージ バッファを取得する方法を知っている人はいますか?
バックグラウンド:
タンゴの背景にビデオを表示する拡張現実アプリケーションがあります。この例に従って、Java API (Jacobi) を使用してビデオ オーバーレイの例を作成しました。私のアプリケーションは正常に動作し、ビデオはバックグラウンドで適切にレンダリングされます。
アプリケーションの一部として、ユーザーがボタンを押したときにビデオ バックバッファーのコピーを保存したいと考えています。したがって、カメラの RGB データにアクセスする必要があります。
Jacobi のリリース ノートによると、カメラの RGB データにアクセスする必要があるクラスは、新しいonFrameAvailable()
メソッドを に実装する必要がありOnTangoUpdateListener
ます。私はこれを行いましたが、実際にピクセルを取得するためのハンドルや引数が表示されません:
Java API
示されているように、onFrameAvailable
引数は 1 つだけで、ビューを生成するカメラの ID を指定する整数です。これを、イメージ バッファへのアクセスを提供する C ライブラリ コールバックと比較してください。
C API
私は、Java メソッドが C API 呼び出しのバッファー オブジェクトに似たものを持っていることを期待していました。
私が試したこと
クラスを拡張してTangoCameraPreview
そこに画像を保存しようとしましたが、黒い背景しか得られません。
私が向かっているところ
デバイスをルート化する準備をしてから、onFrameAvailable
メソッドを使用して次のいずれかの外部ルート プロセスを開始します。
ルートハックを回避する方法を見つけられることを願っています。
前もって感謝します!
google-project-tango - Tango 画像フレームのタイミングの問題
深度データ、画像データ、およびポーズ データを同時に取得しようとすると、Tango が画像フレームをドロップしているように見えます。
深度と画像フレームをキャプチャして、ポーズ データと同期しようとしています。C point-cloud-jni-example を使用して、ポイント クラウド データをメモリ バッファーにダンプしてからファイルにダンプするコードを追加しました。onFrameAvailable() のコールバックを追加し、画像データをバッファにコピーしてからファイルにコピーしました。画像データは 30 Hz で深度データは ~5 Hz であるため、最新の画像が最新の深度フレームとかなり密接に一致することを素朴に期待していました。タイムスタンプはあまり近くありませんでした。場合によっては、100 ミリ秒以上異なっていました。そこで、onXYZijAvailable()、onFrameAvailable()、および onPoseAvailable() コールバックと対応するデータ タイムスタンプのタイミングを調査し始めました。
各コールバックに logcat ダンプを追加し、システム時間 (std::chrono::system_clock::now()) と返されたデータ (深度、画像、ポーズ) の TangoSystem タイムスタンプを出力しました。これの一部は、タイムスタンプの差分を正確に計算する方法で説明されていますか? .
ここでポーズのタイミングです。sys time は、コールバックが実行されたときの現在のクロック時間です。ポーズのタイムスタンプは、実際のポーズ構造体からのものです。
ポーズごとの対応する違いをここに示します。ポーズのタイミングは、記録されたタイムスタンプに基づいて 33 ミリ秒と安定しています。おそらくアプリケーションの負荷が原因で、コールバック時間はかなり異なります。
ここでは、いくつかの深度タイミングと対応する違いを示します。タイムスタンプは約 0.2 秒で非常に安定しています。
ここにいくつかの画像のタイミングがあります。「---」と記された行は問題のあるフレームです。
上記のリストに対応する時差は次のとおりです。
4 フレームごとに、イメージ時間に大きな遅延 (約 100 ミリ秒) があることに注意してください。これに、同じまたはほぼ同じタイムスタンプを持つ 2 つのフレームが続きます。連続する 2 つの画像のタイムスタンプが同じ場合でも、新しいフレームを示すためにコールバックが発生します。その結果、ビデオの 5 フレームごとに欠落しています。これは、深度と画像データを一致させようとするアプリケーションにとって悪臭を放ちます。
コードから余分な処理を取り除きました。コールバックで発生する唯一のことは、データが静的バッファーにコピーされることです。ポイント クラウドのレンダリングは、通常のレンダリング スレッドで引き続き実行されます。
それで、何が得られますか?Tango デバイスは、同時に実行されている深度、画像、およびポーズのコールバックをすべて処理できませんか? onFrameAvailable() の代わりに UpdateTexture() を使用する必要がありますか?
android - Project Tango: 座標系間の変換と点群の結合
XYZij データ (ドキュメントによると、カメラ空間にデータを格納する) でサンプリングおよび格納された点群をワールド座標系に変換して、それらをマージできるようにしようとしています。Tango リスナーに使用するフレーム ペアにはCOORDINATE_FRAME_START_OF_SERVICE
、ベース フレームとCOORDINATE_FRAME_DEVICE
ターゲット フレームがあります。
これは私が変換を実装する方法です:
asから回転クォータニオンを取得し、
TangoPoseData.getRotationAsFloats()
asq_r
からポイント位置を取得XYZij
しp
ます。次の回転を適用します。ここ
q_mult
で、 は 2 つの四元数のハミルトン積を計算するヘルパー メソッドです (別の数学ライブラリに対してこの方法を検証しました)。p_transformed = q_mult(q_mult(q_r, p), q_r_conjugated);
から取得した翻訳を に追加し
TangoPoseData.getTranslationAsFloats()
ますp_transformed
。
しかし、最終的には、ポイントはp_transformed
常に、位置合わせされマージされたポイント クラウドではなく、部分的にオーバーラップしたポイント クラウドの乱雑になってしまうように見えます。
ここで何か不足していますか?変換に概念上の誤りはありますか?
前もって感謝します。
google-project-tango - Tango 深度テストがうまくいかない
タンゴ タブレットの深度センサーがプロジェクトで期待どおりに機能していないことがわかりました。次に、 https://developers.google.com/project-tango/hardware/depth-testの指示に従って深度テストを行い、画面内の点群の右上の領域 (長方形の約 1/4) を見つけました常に他よりも近く、エラーでいっぱいです。さまざまな照明でテストし、いくつかのきれいな床面積もテストしましたが、その面積で同様のエラーが見つかりました. では、深度センサーの何が問題になっているのでしょうか?
どうもありがとう!
シユアン・チェン