Archiv verlassen und diese Seite im Standarddesign anzeigen : links oder rechts rum???
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
m.artmann
11.04.2005, 11:20
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
Hessibaby
11.04.2005, 11:28
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
schmic20
11.04.2005, 11:48
Hallo,
das ist schon ein guter Ansatz.
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)
Was passiert aber wenn der Istwinkel größer ist als der Sollwinkel, z.B. Istwinkel 350° und Sollwinkel 10° ?
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
Hessibaby
11.04.2005, 12:04
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;
:D
H$
FUUUUUUUUUUUUUUUUUUU
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.