2016-05-19 5 views
0

私は2つのセンサーを持っています:上腕と手のひらに、それぞれが私にグローバルな3d空間での位置の四元数(オイラー角)を与えます。どのように前腕の位置を見つけることができますか? たとえば、私は問題を解決するためにこの値が必要です: 私は手をテーブルに置き、上腕(翼のように)を動かすと、プログラムは上腕と一緒に手を動かすと考えています。腕と手の角度に基づく前腕姿勢の予測

+2

これは、(スタックオーバーフローのために広すぎる)かなり広いが、それは逆運動学の問題のように聞こえます。おそらく、IKソルバーの背後にある理論を読んでみてください(自分で実装するには少しの計算が必要なので、Unityで動作する既存のものを調べる価値があります)。 – Serlite

+0

ありがとう!私はそれを受け入れるでしょう – KhanSuleyman

+0

確かに、私は束にそれを拡張し、答えとしてそれを追加しました。がんばろう! – Serlite

答えて

1

あなたが記述する状況はinverse kinematicsのように聞こえます。実際には、これは、自由端の所望の位置(エンドエフェクタ)に基づいて四肢(または他の関節オブジェクト)の中間関節の必要な角度(および延長位置)を決定する方法です。

この難しい数学的な質問に自分で取り組むのではなく、Unity's own inverse kinematicsの実装を見てみてください。ただし、ゲーム内のオブジェクトをAnimatorに適用できない場合は、これは実現不可能です。

あなた自身でソリューションをコーディングすることもできます。この問題に対する一般的な解決法を作成することは、数学的には非常に複雑です。しかし、手と上腕の実際の角度と位置付けについて、いくつかの追加情報があります。前腕の長さと上腕の長さのどちらかを指定した場合(これを数学的に導き出すこともできます!)、あなたの目的に合った軽い線形代数が必要です(センサの読みが正しい場合)。

前腕の長さFLを指定する場合、上腕の方向ベクトルに沿って手からの距離FLである交点(エルボー)を見つける必要があります。また、上腕長ULを指定した場合は、上腕の方向ベクトルを(上腕の中央にあるので)上に移動するだけで、肘の位置を取得することができます。

どちらの場合でも、肘の位置を取得したら、前腕の位置と角度を取得するのは簡単です。ここでは、問題の可視化のための図です:

enter image description here

+0

あなたの答えをありがとう!私は腕の長さを知らない。これは私が解決する必要がある問題の1つです。 – KhanSuleyman

+1

@KhanSuleyman長さを見積もることはできませんが、不可能ではない場合はもう少し複雑です。なぜなら、同じ長さを数学的に導くことを提案しているのです腕と前腕の長さの比(ここに挙げるもの(http://hypertextbook.com/facts/2006/bodyproportions.shtml))。この比に基づいて、与えられた比率と与えられた角度を満たす2つの腕の長さの式を解くだけでよいのです。 (これは少し重いので、線形代数の読み方が必要な場合もあります) – Serlite

+0

あなたの答えは非常に貴重です。また、機械学習(または深い学習)メソッドを使用したいと思っていますが、それについてどう思いますか? – KhanSuleyman

関連する問題