RadardistanzIn einer Variablen wird die Radardistanz festgelegt. Diese ist abhängig vom Arenadurchmesser – ½-Durchmesser der Bot-Fläche.
Beispiel:
Klasse 2 Bot (25cm / 10“): 90cm – 13cm = 77 cm Radardistanz
Klasse 3 Bot (30cm / 12“):120cm – 15cm =105 cm Radardistanz
Radardrehung:Da das Radar einen Öffnungswinkel von ca. 40 Grad hat, sollten Messchritte in 10 Grad bis 20 Grad erfolgen.
Gehen wir im Weiteren von 10 Grad Schritten aus:
Wir programmieren eine Schleife, die 36mal (36 x 10 Grad = 360 Grad) durchlaufen wird. Am Ende wird dieADrehrichtung des Radars umgekehrt und es wird wieder 36mal die Schleife durchlaufen.
Dies läuft solange, bis das Radar einen Impuls erhält, der innerhalb der oben festgelegten Distanz liegt.
Zu diesem Zeitpunkt wissen wir:
- Zieldistanz,
- wieviel Grad hat sich das Radar gedreht,
- hat es sich vorwärts oder rückwärts gedreht.
Nun müssen wir aus diesen Werten lediglich die Grunddaten zur Bot-Drehung erzeugen.
Grunddaten zur Bot-Drehung errechnenZielerfassung I
Gehen wir davon aus, dass sich das Radar 100 Grad vorwärts gedreht hat (rechtsherum). Hierzu addieren wir die Hälfte des Abstrahlwinkels, also 20 Grad.
Der Gegner steht also in etwa 120 Grad rechts vor uns.
Zielerfassung II
Gehen wir davon aus, dass sich das Radar 240 Grad Rückwärts (linksherum) gedreht hat. Hierzu addieren wir die Hälfte des Abstrahlwinkels, also 20 Grad.
Der Gegner steht also in etwa 260 Grad links-herum vor uns. Da der Wert über 180 Grad liegt wollen wir die Bot-Drehung minimieren und subtrahieren diesen Wert von 360 Grad und wissen nun, dass der Gegner 100 Grad rechts vor uns steht.
Ihr seht, es ist wichtig sich die letzte Drehrichtung des Radars zu merken, um Zeit bei der Bot-Drehung zu sparen.
Anmerkung: Ich habe einen Sensor, der rechts und links unterschiedliche Abstrahlwinkel hat….
Zwischenfazit: Wir wissen nun wo der Gegner relativ zu uns steht.
Die Bot-DrehungNun wird’s einfach… den Bot um die Gradzahl drehen….
Hier sind mir zwei Möglichkeiten eingefallen, wobei ich eine bisher nur umgesetzt habe.
Theoretisch: Messung durch den Gyro-SensorEs wird eine Schleife programmiert, in der der Bot so lange gedreht wird, bis die Zielrichtung (Gradzahl) knapp drüber erreicht ist bzw. fast erreicht ist. Ich habe von dieser Möglichkeit abgesehen, da mit die Möglichkeiten hierbei (was ist „fast erreicht“ oder „knapp drüber“) zu komplex waren. Hier währe dann zu entscheiden, wie ich mit „“fast“ und „knapp“ umgehe. Ignorieren oder in Drehbewegung umrechnen?
Praktisch umgesetzt: Errechnung des Radumdrehungs-Faktors.Ich will euch ja den Spaß nicht nehmen, darum hier nur so viel:
Ihr benötigt einen Faktor der Radumdrehung, d.h., wieviel Umdrehungen benötigt ihr (linkes Rad +x Umdrehungen, rechtes Rad -x Umdrehungen) um euren Bot um 10 Grad nach rechts zu drehen. Empfehlung: Testet den Wert an einer 360 Grad Wende und dann langsam nähern durch Tests mit 180 Grad und 90 Grad.
Ihr bekommt so einen ziemlich guten Wert, der eure Reifengröße und eurem Drehpunkt berücksichtigt. Dieser Faktor ist für nahezu jeden Bot anders. Bei mir beträgt der Wert 4,6 Grad Radumdrehung je 10 Grad Radardrehung.
Nun nur noch den Winkel zum Ziel aus der Radarmessung mit eurem individuellen Radumdrehungs-Faktor multiplizieren und der Bot dreht sich zum Ziel.
Mit einer solchen Logik könnt ihr die Zielsuche von der Bewegung entkoppeln und komplett parallel durchführen.
Ein letzter Hinweis: Wenn die Suche durchlaufen ist und ihr in die Bot-Drehung geht, müsst ihr das Radar wieder in Ausgangsstellung zurück drehen und die Messwerte auf 0 setzen.
Zum Schluss gestattet mir noch einen Hinweis: Ich bin hier nicht auf alle Fragen, die die Umsetzung dieser Lösung aufwirft, eingegangen. Aber das macht ja die Bot-Entwicklung aus, Versuch, Irrtum, Versuch,..... Erfolg !!
Anbei ein Programmierbeispiel (Bild ist ein Link zur Grossansicht) zur Bot-Drehung, das als erstes funktioniert hat. Aktuell sieht die Routine etwas anders aus (insbesondere ist die Drehgeschwindigkeit höher und die Logik wurde etwas angepasst, aber das Beispiel funktioniert.