PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : links oder rechts rum???



Sommer
11.04.2005, 10:42
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

Sommer
11.04.2005, 14:13
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

26.04.2005, 11:18
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;

12.05.2005, 10:20
:D
H$

FUUUUUUUUUUUUUUUUUUU