問題タブ [kinematics]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - ポイントが現在楕円パスのどちらの半分にあるかを判断するにはどうすればよいですか?
これは、JavaScript で作業しているアトム アニメーションの静的フレームで、この画像をモデルにしています。
時間に基づいて軌道上の電子の位置を決定するために使用されるコードは次のとおりです。
私がやりたいのは、パスのオレンジ色の部分では核の上に電子を配置し、緑色のセグメントでは核の下に電子を配置することです。
のときthis.timer.delta() == 0
、電子は右端にあり、反時計回りに進みます。
以下の2点についてご相談をお待ちしております。
1) 電子がその軌道の左端にある時点を見つける。
2) 任意の時点で、電子が現在経路のどちらの半分を通過しているかを判断する。
理想的には、ソリューションはthis.speed
(アニメーションを高速化または低速化するための乗数) の値に関係なく機能する必要があります。
static - 力のないBox2dバウンディングボックス
現在、Cocos2d-Box2dプロジェクトは、b2Vec2を使用して、ゲームのエッジ用のバウンディングボックスを作成しています。このため、バウンディングボックスは、力の影響を受けないボディであるキネマティックボディには影響しません(つまり、ボディは通常、画面から飛び出します)。キネマティックボディを画面に接続する方法があるかどうかを確認しようとしています。そうでない場合は、誰かが画面の隅に静的なボディを備えたバウンディングボックスを作成する方法を説明してくれれば幸いです。
matlab - 既定の Simulink ライブラリ ブロックを使用した DCM から Quaternion への変換のあいまいさ
方向余弦行列から四元数への変換が必要なシステムをシミュレートしています。simulink で利用可能なデフォルトの DCM から Quaternion への変換ブロックを使用します。ただし、シミュレーションのいくつかのポイントで、出力クォータニオン コンポーネントの符号が反転します。
残念ながら、プロット画像を添付できません。
これは数学的には正しいのですが、私はスムーズな変化を望んでいます。これを回避し、四元数の滑らかな曲線を作成する方法について何か考えはありますか?
更新 1: http://tinypic.com/view.php?pic=33dayap&s=6
上はシミュレートされたプロットです。最初のプロットは出力クォータニオンです。2 番目のプロットは方向余弦行列です。ご覧のように、DCM コンポーネントはスムーズに変化しますが、クォータニオンの符号が急激に変化します。
java - デルタロボットの直接運動学を正しく計算するには?
デルタ ロボットの簡単なシミュレーションをまとめようとしています。フォワード キネマティクス (ダイレクト キネマティクス) を使用して、3 つの角度を渡して空間内のエンド エフェクタの位置を計算したいと考えています。
私はTrossen Robotics Forum の Delta Robot Tutorialから始めましたが、ほとんどの数学は理解できますが、すべてではありません。順運動学の最後の部分で、3 つの球体が交差する点を計算しようとすると、わかりません。私は一般的に球座標を見てきましたが、(E(x、y、z)に向かって)回転するために使用される2つの角度を見つけることができませんでした。球の方程式を解いているように見えますが、ここで迷ってしまいます。
デルタ ロボットはパラレル ロボットです (つまり、ベースとエンド エフェクタ (ヘッド) は常に平行のままです)。ベースとエンド エフェクタは正三角形で、脚は (通常) 三角形の辺の中央に配置されます。
デルタロボットのベース側面には マークが付いていf
ます。デルタロボットのエフェクタの側面には マークが付いていe
ます。脚の上部がマークされrf
、下側がマークされre
ます。
原点 (O) は底辺三角形の中心にあります。サーボ モーターは、基本三角形の辺 (F1、F2、F3) の中央にあります。ジョイントには J1、J2、J3 のマークが付いています。下肢はポイント E1、E2、E3 でエンド エフェクタに結合し、E はエンド エフェクタの三角形の中心です。
ポイント F1、F2、F3 および J1、J2、J3 を簡単に計算できます。私が問題を抱えているのはE1、E2、E3です。re
説明から、ポイント J1 が少し内側 (エンド エフェクタの中央値の半分) に移動して J1' になり、半径(下肢の長さ)を持つ球の中心になることがわかります。すべてのジョイントに対してこれを行うと、3 つの球が同じ場所で交差することになります: E(x,y,z)。球方程式を解くと、E(x,y,z) が得られます。
説明された式もあります:
しかし、これは私が迷子になるところです。私の数学の能力は素晴らしいものではありません。数学にあまり詳しくない私たちのために、誰かがそれらをより簡単な方法で説明してもらえますか?
提供されているサンプル コードも使用しました (WebGL 対応のブラウザーを使用している場合)ここで実行できます。クリック アンド ドラッグしてシーンを回転させます。3 つの角度を制御するには、q/Q、w/W、e/E を使用して角度を増減します。
完全なコード リスト:
問題は、視覚化するときに下部の長さが変化することです (印刷されたメッセージ 0 でわかるように、そうすべきではないため、さらに混乱が生じます。
Java/Processing で提供された C コードを使用しましたが、プログラミング言語はそれほど重要ではありません。
[spektreによる編集]
この写真を追加する必要がありました(教訓的な理由で)。
- 並べられたナンセンスは、運動学の能力を把握するための最良の方法ではありません
- 私が理解しているように、モーターのベースは上の三角形の平面のこの画像にあります
- ツールは下の三角形の平面にあります
c# - Kinect の体の向きの検出
人が Kinect を向いているのか、背中を見せているのか、どうすればわかりますか?
Microsoft Kinect SDK v1.7 を使用しています。
c# - Kinect SDK - 角度の回転を度単位で変換する
私は Kinect 開発にかなり慣れていないので、Kinect ジョイントの回転を可能にするコンポーネントを構築しようとしています。これの目的は、キャプチャしたスケルトン データを手動で「修正」することです。キャプチャ後、スケルトンがジャンプし始めます。
らせんツールキットを使用して、Kinect スケルトンを 3D 空間に表示しています。任意の時点でスケルトン ストリームを一時停止し、BoneRotations オブジェクトに保持されている AbsoluteRotation と HierarchicalRotation のマトリックス値を確認できます。
X 軸、Y 軸、Z 軸を表す 3 つのスライダーを作成しました。最小/最大値を、操作するボーンの自然な動きに関連する値に設定しました (たとえば、Y 軸では、肩は約 40 度を超えて動きません)。肩 (右) の関節を例にとると、3D 空間でボーンの位置を変更できるように、各軸に回転を適用できるようにしたいと考えています。この種のアクションに関連する用語は順運動学だと思います。
私の質問は次のとおりです。
a) Kinect SDK は、関節の絶対的な階層マトリックスを提供します。操作するにはどれを見ればよいですか?
b) 四元数が与えて、行列が与えないものは何ですか?
c) 4x4 マトリックス情報を取得して、X 軸、Y 軸、Z 軸の角度 (度またはラジアン) を見つけるにはどうすればよいですか?
d) 次のような計算を使用して 3x3 行列を乗算して変換する方法を見てきました。
Kinect SDK によって提供される 4x4 マトリックスを変換するにはどうすればよいですか?
より具体的には、各軸のスライダーを使用できるように、各軸の 4x4 マトリックスを変換できますか? では、X 軸に 10 度の回転を適用するにはどうすればよいでしょうか。次のように、3x3 マトリックスで回転が行われるのを見てきました。
事前に助けてくれてありがとう!
java - ユーザー入力に基づく運動方程式の計算 (より短い方法?)
私は現在、物理学における単純な運動方程式の残りの変数を計算するプログラムを書いています。4/6 の変数が必要で、残りの 2 つの変数の結果を計算できます。現状では、どの変数が入力されたかどうかを検出するためにブール型の配列を使用しています。それぞれのケースを比較し、その変数を解くために 3 つの式のいずれかを書き直す必要があります。これは、ばかげた量の肥大化したコードで終わっています。
これは、私のコード内の方程式の 1 つの例です。
私が使用している3つの方程式は次のとおりです。
Vf = Vi + a(tf - ti)
Xf = Xi + Vi(tf - ti) + (1/2)a(tf - ti)2
Vf2 - Vi2 = 2a(Xf - Xi)
これを短縮する方法、または実装を容易にする方法はありますか? 配列リストを使用すると何とか機能しますか?