問題タブ [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.
python - 順方向/逆運動学の計算 2-DOF python
プログラムは、次の式を使用して順運動学でエンドエフェクタのポイントを計算します。
x = d1cos(a1) + d2cos(a1+a2)
y = d1sin(a1) + d2sin(a1+a2)
ここd1
で、 は最初のジョイントd2
の長さ、 は 2 番目のジョイントの長さ、 はa1
最初のジョイントa2
の角度、 は 2 番目のジョイントの角度です。
この式で逆運動学を計算します
したがって、フォワード キネマティクスに必要な入力を入力することで、エンド エフェクタのポイントを取得する必要があります。インバース キネマティクスのフォワード キネマティクスで見つかったポイントと同じ入力を入力することで、入力した角度をフォワード キネマティクスの入力として取得する必要があります。しかし、私はそれらを取り戻しません。ここに私のコードがあります、
問題は、三角関数が導入されたときだと思います。それらのパラメーターはラジアンであると想定されており、答えは度です。どこかで私は2つを混同しています。どこにあるのかわかりません。ありがとう
python - Pythonを使用した経時的な位置のボール落下プロット
高さ h から落下するボールのシミュレーションをプロットし、運動方程式 y = y_0 を使用して経時的な位置のグラフを作成するコードを作成しようとしています。私のコードは次のとおりです。
matplotlib.pylab import show, xlabel, ylabel, scatter, plot from numpy import empty
ただし、グラフが曲線のように見えるはずのときに、グラフの各隅に 3 つのドットが 1 つずつプロットされ、どの変数も変化していないため、グラフは毎回変化してはなりません。
algorithm - 運動方程式の Matlab への変換
おそらくこれはプログラミングの問題ではなく、数学の問題です。しかし、ここに行きます。
車両のモーターで動くジェット コースターを作っていると想像してください。車両には、このモーターを使用して達成できる固定力値があります。ジェット コースターのセクションで、私のお気に入りのビデオ ゲームの 1 つである Rollercoaster Tycoon のようなハーフ ループを横断したいとします。
ハーフ ループを 1 周すると、自分の速度がどのくらいになるか、1 周するのにどれくらいの時間がかかるかわかりません。ただし、エンジンの加速度、質量、および重力による加速度に基づいて、ハーフ ループに沿った任意のポイントで可能な最大加速度が何であるかを把握できます。この議論を数値でごちゃごちゃにするのはやめましょう。代わりに、加速度と位置の曲線が利用可能であると仮定します。次のようになります。
加速度対位置曲線と初期速度の関数として、速度の式を導き出すことに成功しました。運動方程式から
位置の関数として速度を導き出すことができます。v = sqrt(2 * [a=f(p) wrt位置の積分])
MATLAB では、次のようにして取得できます。
実際には、次のコードを使用してトラックに沿ったすべてのポイントの速度を取得しています (acc と pos は、上にプロットされた加速度と位置の配列です)。
今、私はジレンマに達しています。加速度、速度、位置がありますが、今は時間が必要です。私の計算は正しいと思います。私は a/v/p を持っているので、時間を含む運動方程式を選択し、それを並べ替えて時間を取得するのと同じくらい簡単なはずです (トラックに沿ったすべての位置で時間を取得したいので、a/v/ をプロットできます)。 p を時間の関数として)。
これは、次のいずれかから選択できることを意味するはずです。
式 1 は 2 次式です。他の 2 つはもっと単純に見えます。式 2 は有望に見えます。それを試してみましょう。
これを Matlab に変換すると、次のようになるはずです。
しかし、これまでの私のテストでは、これは間違った結果をもたらします! 私は数学とアルゴリズムの両方に困惑しています。しかし、この場所は単にアルゴリズムに関する質問に答えるだけだと思います. 私の式がどのように間違っているかわかりません。間違って Matlab に変換していますか?
python - デカルト座標をハンド フレームからワールド フレームに変換する: ROS & Baxter (python)
だから私はbaxterロボットで作業し、ROSワークスペースを使用しています。バクスターのアームにはカメラが取り付けられており、そこから特定のオブジェクトの x、y、z 座標を、ハンド フレームを基準にして読み取ることができます。
オブジェクトが検出されたら、その x、y、z 座標が必要ですが、ロボットのメイン フレームから、手からロボット フレームに変換する必要があります。それを行う方法を理解するのに苦労しています。DHマトリックスを使用することになっていることは知っていますが、どのように進めるべきかを誰かが説明してくれませんか?
vb.net - Visual Basic プログラムでの COM ポートのタイムアウトとラグ
私は、ロボット アームを含む遠隔制御アプリケーションに取り組んでいます。ウェブページから (mySQL 経由で) 受信した座標を受け取り、その座標をモーター ステップに変換し、シリアル コマンドを使用してロボットに出力する VB.net プログラムを作成しました。
ロボット (MICROBOT TeachMover) のマニュアルには、シリアル コマンドがロボットに送信されるたびに、ロボットは操作の成功または失敗を示す文字 (0、1、または 2) を返すと記載されています。マニュアルには、この「ハンドシェイク」文字をプログラムで受信する必要があると記載されています。
プログラムを実行すると、ロボット アームが意図したとおりに動作しません。ロボットがまったく動かない長い初期ラグがあり、その後、最終的に正の x 方向に移動します。その後、再び完全に動かなくなります。COM ポートがタイムアウトしたという例外を継続的に受け取ります。これは、ハンドシェイク文字が正しく読み取られていないことを示しています。シリアル コマンドが正しく送信されていることはわかっています (フォームの読み込み中にグリッパーを閉じるコマンドを使用してこれをテストしました) が、タイムアウトに設定した秒数に関係なく、シリアル受信コマンドは常にタイムアウト例外で終了します。現在のコードを以下に含めました。私はシリアル通信についてよく知らないので、私の誤解を指摘していただけると助かります。
VB.net コード:
(ReceiveSerialData サブルーチンは、私が最初に実装したものでした。私が試した両方のアプローチの例として、コメント アウトしてプログラムに残しました。)
私はすでに独自にテストしているので、mySQL から座標を取得するのに遅延がないことを知っています。ただし、これがシリアル通信の遅延に寄与している可能性があるかどうかはわかりません。
シリアル通信コードの信頼性と速度を向上させる方法についてアドバイスや提案があれば、ぜひお寄せください。ハンドシェイク プロパティを使用する必要があるかどうかも疑問でしたが、TeachMover アームは標準インターフェイス信号 (DTR、CTS、RTS など) を使用しないとマニュアルに記載されているため、まだ試していません。これがソフトウェアまたはハードウェアの問題であるかどうか。
ありがとう、ゴピカ
更新: いくつかの変更を加え、シリアル通信をテストしています。とりあえずタイムアウトを無限に変更しました。また、ハンドシェイク プロパティと RTSEnable/DTREnable を設定しようとしましたが、プログラムはまだ TeachMover からハンドシェイクを受信しておらず、無限に待機しています。
c++ - 航空機を飛ばすために3Dワールドマトリックスを変換する方法は?
directX で簡単なフライト ゲームをプログラミングしています。航空機をモデリングし、ゲームに正常にインポートしました。入力コントローラーの作成に成功しました。左、右、上、下の旋回を成功させました。
飛行中の航空機のロール、ピッチ、ヨー軸を維持する 3 つのベクトルを計画しました。
ベクトルの初期状態は次のとおりです。
これが私のアルゴリズムです。まず、マウスの位置によって回転角度が設定されます (角度は -0.5f < 角度 < 0.5f に制限されます)。次に、航空機の軸を維持する単位ベクトルの周りに回転行列を作成します。回転は R 行列です。その後、航空機の軸を維持する新しい単位ベクトルを計算します。最後に、flightDirection のコンポーネントを変換行列に追加して、航空機の新しい位置を取得します。
私の問題は、アルゴリズムが意図したとおりに機能しないことです。計算が間違っていて、マウスを動かした後、機体が間違ったランダムな方向に飛行します。
このアルゴリズムを修正する方法を教えてください。または、3D 空間でオブジェクトを移動する方法の例のリンクを教えてください。
よろしく、 アントゥン
python - 3D キネマティクスを操作するための Python ライブラリ
私はキネマティクスの分野に不慣れで、3D キネマティクスの開始を容易にする Python ライブラリを探しています。これまでに見つけた唯一のライブラリはthLibですが、他には何もありません。間違ったキーワードを使用しているのか、それとも python なのかよくわかりません。
私の目標は、加速度計、ジャイロスコープ、磁力計からのデータを使用して四元数を計算し、空間内で位置を決め、その物体の動きを分析することです。おすすめはありますか?
unity3d - 加速度計慣性センサーによるモーショントラッキング
加速度計で手の追跡をしようとしています。それが良いアイデアなのか、それとも光学追跡システムの方が優れているのかはわかりません。特に、手の甲には加速度計が取り付けられており、3D 空間での手の位置を取得したいと考えています。unity3dで手の動きを見せたいです。今、私は運動方程式を使用しています:
ここで、(x,y,z) は位置座標、(vx,vy,vz) は速度成分、ax、ay および az は加速度計から読み取った加速度成分で、定数 9.81 を掛けて m/s/ に変換します。秒。
しかし、このアプローチでは良い結果が得られません。誰かが加速度計を使って手の動きを追跡する方法を提案できますか? ありがとうございました。