1

Kinect Facetracking を使用してロボット タレットを制御しようとしています。ユーザーが頭を動かすと、タレットは同じ方向に動きます。ユーザーの頭のヨー、ピッチ、ロールを取得でき、このデータを使用して砲塔を制御します。私の現在の試みは機能しますが、タレットを流動的に動かしません。動きは散発的で途切れ途切れです。私が求めているのは、滑らかな動きと滑らかな動きです。

したがって、私が抱えている主な問題は、データがリアルタイムで受信されているため、ユーザーが次に何をしようとしているのかを確実に予測できないことです。データの受信とコマンドの間のラグをできるだけ少なくする必要があります。

もう 1 つの問題は、Kinect からのデータが完全ではなく、時々少し変動することです。良いデータですが、何とかしないとカクカクします。

Kinect からのデータを可能な限り滑らかにするにはどうすればよいですか?

私にはいくつかのアイデアがありますが、あなたに影響を与えたり、私のように考えさせたりしたくはありません

4

1 に答える 1

1

TransformSmoothParameters ジョイント フィルタリングが多少役に立ちました。しかし、私がこれに出くわし たとき、最も顕著な変化が起こりました: . 非常に感動。とてもシンプルです。非常にうまく機能します。これはカルマン フィルターというよりも移動平均に近いと思いますが、まさに私が必要としていたものです。これが似たようなことをしようとしている人に役立つことを願っています。

        private double Q = 0.000001;
        private double R = 0.0001;
        private double P = 1, X = 0, K;

        private void measurementUpdate()
        {
            K = (P + Q) / (P + Q + R);
            P = R * (P + Q) / (R + P + Q);
        }

         public double update(double measurement)
        {
            measurementUpdate();
            double result = X + (measurement - X) * K;
            X = result;
           // Debug.WriteLine("Measurement " + result + " y: " + y);
            return result;
        }
于 2013-03-21T20:34:12.473 に答える