1
O.K.、私は何が起こっているのか把握しようとしています。私はメインループにケースステートメントを持っています(ステート6は、以下のサンプル出力のケースを参照しています)。しばらくの間、物事はうまくいく、私は単純な減算が間違った結果を与えるところで、結末の結果を取得し始めます。ゼロとして突然私のheadingDeltaプリント、明らかにそれはないが、まだロジックチェック、第四出力で減算とファブが動作していて、プログラムとして動作していません
state: 6Waypoint: 2 Location: 111.98 18.12 heading: 0.95target heading: 1.57 heading delta: 0.62small? 0
state: 6Waypoint: 2 Location: 111.98 18.12 heading: 0.95target heading: 1.57 heading delta: 0.62small? 0
state: 6Waypoint: 2 Location: 111.98 18.12 heading: 1.35target heading: 1.57 heading delta: 0.22small? 1
state: 6Waypoint: 3 Location: 142.73 47.69 heading: 0.55target heading: 0.00 heading delta: 0.00small? 0
state: 6Waypoint: 3 Location: 142.73 47.69 heading: 0.55target heading: 0.00 heading delta: 0.00small? 0
state: 6Waypoint: 3 Location: 142.73 47.69 heading: 0.55target heading: 0.00 heading delta: 0.00small? 0
:ここ
case turning:
Serial.print("state: ");
Serial.print(state);
Serial.print("Waypoint: ");
Serial.print(waypointIndex);
Serial.print(" Location: ");
Serial.print(location.x);
Serial.print(" ");
Serial.print(location.y);
Serial.print(" heading: ");
Serial.print(heading);
Serial.print("target heading: ");
Serial.print(targetHeading);
Serial.print(" heading delta: ");
headingDelta = fabs(heading-targetHeading);
Serial.print(headingDelta);
Serial.print("small? ");
Serial.print((headingDelta<0.25));
Serial.print("\n");
if (headingDelta < 0.25) {
Stop();
state = travel;
}
else {
if (turn>=0) {
Left(255,255); // turn left
}
else {
Right(255,255); // turn right
}
}
break;
出力の一部です:ここでのコードは、ですそれが小さいのかどうかは小さいとは言いません!
私は私の髪を引っ張っています。どうしたの?これは、Arduino互換のATmega328ボードであるRomeoにあります。
あなたの迅速で正確な応答に感謝します!私は間違ったアイテムの逆正接を取っていたことが分かり、NaNを生むアーティザン(0/0)を持っていました。また、atan2の機能も本当に欲しかった。 – ViennaMike