3

オドメトリーを使用してその位置を推測する差動駆動ロボットがあります。

私は標準的な方程式を使用しています:

WheelBase = 35.5cm;
WheelRadius = 5cm;
WheelCircumference = (WheelRadius * 2 * Math.PI);
WheelCircumferencePerEncoderClick = WheelCircumference / 360;

DistanceLeft = WheelCircumferencePerEncoderClick * EncoderCountLeft
DistanceRight = WheelCircumferencePerEncoderClick * EncoderCountRight

DistanceTravelled = (DistanceRight + DistanceLeft) / 2
AngleChange (Theta) = (DistanceRight - DistanceLeft) / WheelBase

私の (DIY) シャーシには、わずかな特徴として、ホイール ベース (35.5cm) 全体でホイールの位置がずれており、左のホイールは 6.39mm です (私はハードウェアの人ではなくソフトウェアの人です!)右の車輪よりも「前方」です。(車輪はロボットの真ん中です。)

正しい値を得るために数式に追加しなければならないものを計算する方法がわかりません。その場で曲がらない限り、ロボットにはあまり影響しません。私の値はかなりずれています。これはそれを引き起こします。

私が最初に考えたのは、ホイールの位置をグリッド上にプロットし、それらの位置の線の傾きを計算し、それを使用して乗算することでした...何か。

私は正しい軌道に乗っていますか?誰か手を貸してくれませんか?私はこのエラーを調べましたが、ほとんどの人はそれを無視しているようです (彼らはプロのシャーシを使用しているため)。

4

2 に答える 2

1

次のように、AngleChanged の式を修正する必要があります。

L と R を、それぞれ左右の車輪が 1 ティックで移動した距離とします。
B は公称ホイールベースの長さを表します (歪んだものの長さではありません)。
E は左車輪の誤差を表します。つまり、左車輪が理想的な位置から前方にずれている距離です。
1 ティックでのホイールベースの角度の変化である θ を見つけようとします。

まず、歪んだホイールベースと理想的なホイールベースの間の角度を (事前に) 計算します。

φ = 逆正接 (E / B)。

いくつかの基本的なジオメトリを使用して (必要に応じて詳細を投稿できます)、次のようにシータを計算できます。

σ = arctan( ( E+ L - R) / B )
θ = φ - σ

E=0 の場合、これは以前の実装に還元され、E -> +inf. として直感的に理解できる結果が得られるため、式は正しいようです。

注:
σ (シグマ) の計算では、計算上醜い逆正接をなくしたいと思うでしょう。このような状況では、小さな x に対して近似値arctan(x) = xを使用するのが一般的です (実際、前の式で使用しました)。
ここでの問題は、量 (LR)/B が非常に小さい可能性が高い一方で、誤差追加 E/B が許容できないほど大きくなる可能性があることです。arctan を省略して sigma = (E+LR)/B を使用するだけでシグマの計算を試すことができますが、より適切な近似が必要な場合は、0 付近の arctan(a+x) に対して 1 次テイラー級数を使用する必要があります。

arctan(a+x) = arctan(a) + x/(1 + a^2)

シグマの計算に適用すると、近似は次のようになります。

σ = arctan(E / B) + (L - R) / (B + E^2 / B)

arctan(E / B) はすでに φ として事前に計算されていることに注意してください。これは、シグマのより優れた近似値であり、シータのより正確な計算が得られるはずです。

于 2010-09-02T04:20:17.387 に答える
0

私がこれを正しく読んでいる場合、問題は、左の車輪が右の車輪よりも前にあるため、異なる速度で回転すると、滑らずに転がることができないということです. 回転率の差が大きくなればなるほど、問題は悪化します。これがおそらく、回転が反対のときに「10 セント硬貨を回す」ときに発生する理由です。

それを解決する方法は、関連する問題を検討することだと思います: 2 つの車輪は正しく配置されていますが、両方とも少し左に傾いています (これは、車輪間の対角線を「ホイールベース」と考えて、まさにあなたがいる状況です) )。次に、動きは 2 つの成分に分けることができます。1 つは通常の動作をする主要な前後成分であり、もう 1 つは角度の変化を引き起こさず、車輪の回転の合計のみに依存する小さな横成分です。

意味のある数学を思い付くことができるかどうか見てみましょう...

于 2010-09-01T21:27:17.830 に答える