Hallo Ulli,
ich würde den Sollwinkel vom Istwinkel abziehen
(z.B. 360-45=315 oder 180-45= 135)
und dann vergleichen ob das Ergebnis gößer oder kleiner 180 Grad ist.
(z.B. If Erg > 180 then rechtsrum if Erg < 180 then linksrum)
Gruß
m.artmann
Hi Leute,
hab da ein kleines Problem.
Ich hab einen Zielwinkel wo mein Robby hin soll und einen Istwinkel vom Kompass. jetzt will ich Ihn aber nicht immer in eine Richtung drehen lassen bis er dahin schaut wo er hin soll sondern auf den kürzesten weg.
Bsp.1 Soll = 45° / Ist = 360° dann soll er rechts rum
Bsp.2 Soll = 45° / Ist = 180° dann soll er links rum
naja und so weiter...
So nu wie machma denn das steh mal wieder bissl auf´m Schlauch
By Ulli
Hallo Ulli,
ich würde den Sollwinkel vom Istwinkel abziehen
(z.B. 360-45=315 oder 180-45= 135)
und dann vergleichen ob das Ergebnis gößer oder kleiner 180 Grad ist.
(z.B. If Erg > 180 then rechtsrum if Erg < 180 then linksrum)
Gruß
m.artmann
Hallo Ulli,
wenn ich Deine Bsp. richtig interpretiere möchtest Du Richtung NordOst = 45° fahren -d.h im Bsp.1 schaut Dein Robby Richtung Norden =0 bzw. 360° und im Bsp.2 Richtung Süden =180°.
Wenn Du nun die ganze Sache in Quadranten aufteilst d.h. 0-90/180° positive Quadranten und 180-270/359° negative Qudranten dann sollte es doch relativ einfach sei die Drehrichtung zu bestimmen.
Gruß Hartmut
Hallo,
das ist schon ein guter Ansatz.
Was passiert aber wenn der Istwinkel größer ist als der Sollwinkel, z.B. Istwinkel 350° und Sollwinkel 10° ?ich würde den Sollwinkel vom Istwinkel abziehen
(z.B. 360-45=315 oder 180-45= 135)
und dann vergleichen ob das Ergebnis gößer oder kleiner 180 Grad ist.
(z.B. If Erg > 180 then rechtsrum if Erg < 180 then linksrum)
Dann wäre ds Ergebnis -340°.
Man braucht also auch noch eine Berechnung für negative Differenzen.
Evtl. geht es so wie im Struktogramm im Anhang.
Viele Grüße
Michael
Hallo Ulli,
das Struktogramm ist schon OK.
Der Vorteil der Aufteilung in Quadranten ist jedoch das Du die Vorzeichen automatisch erhälst. Für das oben genannte Beispiel wäre es dann -350° auf +10° = (360-350)+10 = 20° also rechtsrum.
Gruß Hartmut
Hi,
dann würd ich nach ein paar Rechnungen sagen:
X = (360 - Istwert) + Sollwert
if X > 180 = links drehen
if X < 180 or > 360 = rechts drehen
probiert es mal aus
By Ulli
Hi,
warum so kompliziert? Verwende doch die abs(...)-Funktion (Betrag):
X = abs(Istwer - Sollwert);
if X != 0 then
begin
if X > 180 then ...
if X <= 180 then ...
end;
H$
FUUUUUUUUUUUUUUUUUUU
Lesezeichen