質問

Iは、位置トラック等の光学マウスを使用してロボットを有します。ロボットが移動するように基本的には、マウスを使用してXおよびY方向の変化を追跡することができます。すなわち、負のXまたは正のXをこれらの値は、別々のXとYレジスタに加算されて - マウスはまた、あなたが移動している方向を追跡します。

さて、ロボットが所定の位置に回転し、前方にのみ移動します。だから、ロボットの動きは、特定の角度で(マウスのトラッキングをピックアップ偏差はあなたがオフに向きを変えることができるかどうかが)直線に理想的です。ロボットの動きの特定のセットは次のようになります:
A:45度回転させ、3インチを移動
B:、90度回転10インチを移動
C:、-110度回転させ5インチを移動
D:10度回転させ1インチ
を移動 しかし、それぞれの時間は、マウスのXおよびマウスYレジスタは、各方向に移動させ、実際の距離を与えます。

私はDに行くから移動セットを繰り返したい場合は今、どのように私は私はすでに収集した情報を使用してこれを行うことができます。私は基本的に私はすでにそれに供給あらゆる角度と距離を合計することができます知っているが、これは各運動の受注に大きなエラーが発生した場合には不正確であると証明します。どのように私は私のマウスからの生の情報を使用することができますか?友人は私が継続的に正弦でき、マウス値を余弦と、最終的なベクトルを計算するが、私はこれがどのように動作するか本当にわからないんだけど、そのアイデアを提供します。

問題は、マウスだけで、あなたが潜在的に情報を消去されているので、回転または後方移動する相対測定値を与えることです。そうそう、私は疑問に思ってすることは、継続的にあなたがもともとそこにジグザグに移動した場合、あなたに最短経路を与えるために変更を追跡できるように、アルゴリズムを実装する方法です。

役に立ちましたか?

解決

私はあなたがする必要がある基本的なアルゴリズムは、このだと思います

currentX = currentY = 0;
heading = 0; // radians
while (true)
{
    deltas = SampleMouseDeltas();
    heading += deltas.Heading;
    currentX += Math.Cos(heading) * deltas.Distance;
    currentY += Math.Sin(heading) * deltas.Distance;
}

あなたは、これは正確でないことを、あなたの考えで正しいです。それが理由で、「推測航法」と呼ばれます。

あなたは、「X」座標に基づいてdeltas.Headingをどこで入手できます。

(式は、回転の中心からインチ(インチDELTAX)/(マウスのセンサーまでの距離)となります。また、deltas.Distanceから来ます「Y」センサー、あなたはインチにピクセルから、それを変換した後ます。

その後のステップを実行するために、あなたのような何かを行うことができます:

robot.RotateLeft();
heading = 0;
while (heading < 45 degrees)
    heading += SampleMouseDeltas.Heading;
robot.StopRotateLeft();

... etc ...

他のヒント

はなく、あなたの質問への答えが、おそらく訓話... 私は一年背中、学校のプロジェクトとして正確にロボットのこの種をやりました。それをやっている間、私はかなりのことを学んだけれどもそれは、まったくの失敗でした。 それはまったく私たちのためにうまく機能する、または他のグループのいずれかのなかった:あなたが運転したどこまで追跡するためのマウスを使用しても。マウスでカメラが原因我々はマウス階以上の数mmを持つために必要な事実に焦点が合っていたからでしょう。翌年には、同じプロジェクトをやって何のグループは、このmethidを使用していません。彼らは代わりにweelsに印を入れて、車輪が作らどのように多くの回転数を計算するために、単純なIRセンサーを使用します。

私はややこのスレッドをnecroingてる知っているが、あなたは、より正確な角度トラッキングを望んでいた場合には、二つの光学マウスが理想的です。あなたが同じ方向の動きを相殺している場合基本的に、あなたはマウスがお互いに関連したことの動きが残されることになります。そこから、それだけで正確に「ボットが変わったか遠くを決定するためにいくつかの簡単な計算になります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top