0

(電話からの)リアルタイムの加速度計データを使用して、いくつかの基本的な動きのジェスチャーを検出しようとしています。私の問題は、一般的に「回転不変」なものが必要なことです。

つまり、ユーザーが電話を逆さまにしてジェスチャーをすると、同じ信号にはならないということです。特定の向きが与えられた場合、リアルタイムの acc データをジェスチャの特定の「テンプレート」と比較する方法を知っています。

しかし、他の方向性についてはどうですか?たとえば、ユーザーが電話を逆さまに持っている場合 (わかりました。1 つの軸を別の軸として扱うのと同じ基本的な比較を行うことができるので、これは簡単です) それとも、さらに難しく、その中間のどこかでしょうか?

ご協力いただきありがとうございます。詳細をお知らせいただければ幸いです。

4

2 に答える 2

1

加速度値が一定時間 (たとえば 1 秒間) 変化しない (または定義された範囲内にとどまる) とすぐに、ユーザーは安定した位置にいると見なして、それらの値を保存できます。値がその範囲外になった場合は、以前に保存された値を新しい値から差し引くことができます。それはあなたの問題が重力であり、「方向不変」を意味すると仮定しています...そうですか?

z 軸の加速度にピークが必要な非常に単純なケースでは、次のようになります。

x_wanted = 0
y_wanted = 0
z_wanted = 10

デバイスを 45 度傾けた、安定した位置にいるユーザー:

x_rest = 0
y_rest = sin(45) g
z_rest = -cos(45) g

次に、電話を彼に向けます。つまり、z 軸 (電話の基準) は 10 です。

x_phone = x_measured - x_rest = (0) - 0                    = 0
y_phone = y_measured - y_rest = (sin(45)*g) - sin(45)*g    = 0
x_phone = z_measured - x_rest = (-cos(45)*g + 10) - (-cos(45)*g) = 10
于 2013-08-26T00:20:14.350 に答える