を抽出しモーションデータのリストからの座標
-
08-09-2020 - |
質問
私シリーズのCSVファイルのtimestamped座標(X、Y、Z mmです。池尾:そういうふうに考えているのにもっとも簡単な方法で抽出モーションデータからですか。
判断基準
の情報思エキスの概要は以下のとおりである。
- 数方向の変化
- 初期加速度の最初と最後の動き
- ...、ベアリング(角)のこれらの動き
- 平均速度な非定常
理想的には、思うようにできるcategoriseパターンの動きでボーナスポイント方を提案することができる方法を行っています。で打とうかなこのことを写真/ビデオをインターネットなどの運動座標から求人categoriseし-方法についてアドバイスを行い思いのこも歓迎いたします。
ノイズ
合併は、この朗読の汚染とノイズです。を克服するためには、それぞれが、記録がprefaced少なくとも20秒間の静けさとなりうるような"音必要があります。なんなのかどのように実装するものです。
具体的な
場合で、モーションの録音であることを、人手の中で簡単につかみます。このデータを用いて生成する磁性運動トラッカー付属手首。また、私が使っているスレッドセーフで、C#、自分達に合っていますし、数字が語agnostic.
編集
- 磁気トラッカー仕様: http://www.ascension-tech.com/realtime/RTminiBIRD500_800.php
- サンプルデータファイル: http://tdwright.co.uk/sample.csv
恵み
の恵みをう一(擬似)のコード例です。
解決
を見てみましょうよってどのようなことができるかを与えます。
免責事項:なかったんハードウェア仕様(tl;dr))
私は仕事のことでMathematicaが便利です。に関連するアルゴリズム(多くの)として提供するリンクです。
初めて観測される全ての測定値は等間隔の時間が最も便利でを簡略化するためのアプローチとアルゴリズムまたは"時間"または"ticks"(測定)当社の便宜しています。
ましょう最初のプロット位置を軸に、何が問題なのかについて
(* This is Mathematica code, don't mind, I am posting this only for
future reference *)
ListPlot[Transpose@(Take[p1[[All, 2 ;; 4]]][[1 ;;]]),
PlotRange -> All,
AxesLabel -> {Style["Ticks", Medium, Bold],
Style["Position (X,Y,Z)", Medium, Bold]}]
現在、二つの観測:
- ご移動開始周辺tick1000
- ご移動な{0,0,0}
これらの状況を踏まえ,若干の変換データを差し引いゼロ位置からク950.
ListLinePlot[
Drop[Transpose@(x - Array[Mean@(x[[1 ;; 1000]]) &, Length@x]), {}, 950],
PlotRange -> All,
AxesLabel -> {Style["Ticks", Medium, Bold],
Style["Position (X,Y,Z)", Medium, Bold]}]
どの曲線るのに十分なノイズの命を計算しconvolveで ガウスカーネル るノイズ処理も,併せて,そ:
kern = Table[Exp[-n^2/100]/Sqrt[2. Pi], {n, -10, 10}];
t = Take[p1[[All, 1]]];
x = Take[p1[[All, 2 ;; 4]]];
x1 = ListConvolve[kern, #] & /@
Drop[Transpose@(x - Array[Mean@(x[[1 ;; 1000]]) &, Length@x]), {},
950];
できますので下記を参照の角の軌跡:
現在におけるデリバティブの速度と加速を可能にします。用いたします 四次approximants 第一、第二誘導体.また、円滑なしガウスカーネルは、前:
Vel = ListConvolve[kern, #] & /@
Transpose@
Table[Table[(-x1[[axis, i + 2]] + x1[[axis, i - 2]] -
8 x1[[axis, i - 1]] +
8 x1[[axis, i + 1]])/(12 (t[[i + 1]] - t[[i]])), {axis, 1, 3}],
{i, 3, Length[x1[[1]]] - 2}];
Acc = ListConvolve[kern, #] & /@
Transpose@
Table[Table[(-x1[[axis, i + 2]] - x1[[axis, i - 2]] +
16 x1[[axis, i - 1]] + 16 x1[[axis, i + 1]] -
30 x1[[axis, i]])/(12 (t[[i + 1]] - t[[i]])^2), {axis, 1, 3}],
{i, 3, Length[x1[[1]]] - 2}];
満足頂ける事まちがいなしプロットしてい:
Show[ListLinePlot[Vel,PlotRange->All,
AxesLabel->{Style["Ticks",Medium,Bold],
Style["Velocity (X,Y,Z)",Medium,Bold]}],
ListPlot[Vel,PlotRange->All]]
Show[ListLinePlot[Acc,PlotRange->All,
AxesLabel->{Style["Ticks",Medium,Bold],
Style["Acceleation (X,Y,Z)",Medium,Bold]}],
ListPlot[Acc,PlotRange->All]]
今までの加速度と速度弾性率:
ListLinePlot[Norm /@ (Transpose@Vel),
AxesLabel -> {Style["Ticks", Medium, Bold],
Style["Speed Module", Medium, Bold]},
Filling -> Axis]
ListLinePlot[Norm /@ (Transpose@Acc),
AxesLabel -> {Style["Ticks", Medium, Bold],
Style["Acceleration Module", Medium, Bold]},
Filling -> Axis]
とを見出し、方向の速度:
Show[Graphics3D[
{Line@(Normalize/@(Transpose@Vel)),
Opacity[.7],Sphere[{0,0,0},.7]},
Epilog->Inset[Framed[Style["Heading",20],
Background->LightYellow],{Right,Bottom},{Right,Bottom}]]]
こういうのに十分なだけます。私の場合は支援を必要とする計算に特定のパラメータとします。
HTH!
編集
例えばして、保存したいを計算し、平均速度を落とさなければならなのではないです。そこで、すべて選択ポイント速度はカットオフは、例えば5を計算し平均
Mean@Select[Norm /@ (Transpose@Vel), # > 5 &]
-> 148.085
の単位と大きさによって異なりの時間単位でないとして指定します。
ごとのカット速度は"直感的".検索できる適切な価値のプロットの平均速度vsはカットオフスピード:
ListLinePlot[
Table[Mean@Select[Norm /@ (Transpose@Vel), # > h &], {h, 1, 30}],
AxesLabel -> {Style["Cutoff Speed", Medium, Bold],
Style["Mean Speed", Medium, Bold]}]
できること5が適切な値です。
他のヒント
eが解決した状態での機械には、それぞれの状態を表します。配列の動きに代表される配列は当日発送いたします。※このアプローチだける場合、方向センサーな変化に関しての動きを、そうでないする必要がありま方法の翻訳の動きを正しい向きで、計算上の配列の当日発送いたします。※
はできないAI技術は、まさにそのもので使えがあります。
のスピードを任意の座:
_________________________________
Avg Speed = /(x2-x1)^2 + (y2-y1)^2 + (z2-z1)^2
--------------------------------------
(t2-t1)
の平均速度の全体の動き、と言いて100timestamped座標、上記の方程式を計算99速度の値です。そしてすべての和を求める速度の分割数により速度(99)
の加速度の場所のひとときをする必要の速度でのひとときを。
Accel X = (x3 - 2*x + x1) / (t3 - t2)
Accel Y = (y3 - 2*y + y1) / (t3 - t2)
Accel Z = (z3 - 2*z + z1) / (t3 - t2)
注意: このすべてを想定した軸の計算:って二軸粒子運動をします。
だがとても容易になりこの場合は最初換された位置測定速度を測定します。
最初のステップ:を削除します。になっているということで、各記録はprefaced20秒間の静けさ.で、実際の測定、検索20秒間隔での位置からご利用いただけます。そして、直接測定します。
第二ステップ:計算速度を用い:(x2-x1)/(t2-t1);の斜面式です。の間隔を一致させる必要があり間隔を録音します。
計算
方向性変更:
方向に変更が発生し、加速度はゼロです。用の数値の統合に見られます。統合から0までの結果の統合がゼロであるようにします。記録です。そして、統合前時まではゼロ。まで繰り返し発しなければなりません。末のデータです。
初期加速度:
これらの斜面式、代替 v
のための x
.
平均速度:
の平均速度式の斜面式です。x1t1必要に応じて最初に読み込む、x2及びt2必要に応じて最終す。