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
常に、位置合わせされマージされたポイント クラウドではなく、部分的にオーバーラップしたポイント クラウドの乱雑になってしまうように見えます。
ここで何か不足していますか?変換に概念上の誤りはありますか?
前もって感謝します。