-
        

Ergebnis 1 bis 4 von 4

Thema: Problem bei der Ausrichtung nach Gradzahl: rechts oder links herum drehen?

  1. #1
    Benutzer Stammmitglied Avatar von efb
    Registriert seit
    08.03.2011
    Beiträge
    47

    Problem bei der Ausrichtung nach Gradzahl: rechts oder links herum drehen?

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Also ich verzweifle hier gerade an einem eigentlich klitzekleinem Problem :

    Ich habe einen RP6 mit Kompass. Die Werte liegen äquivalent zu 0-360 Grad als 0-255 vor.

    Ich weis, in welche Richtung in Grad der RP6 zeigt und weis, wohin ich will.

    Wie aber bekomme ich jetzt heraus, ob er sich zur neuen Gradzahl um die eigene Achse links- oder rechtsherum drehen soll? Er soll sich dabei natürlich in Richtung des kleinsten Winkels richten.

    Das Problem ist der 0-Durchgang bei der Programmierung und jedesmal wenn ich denke, jetzt klappt es, macht er mit anderen Wertepaaren wieder etwas anders, als gedacht...

    Ich brauche mal einen Denkanstoß, gibt es da eine Winkelfunktion, mit der man weiterkommt ?

    Vielen Dank und viele Grüße

    Ernst

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Kandel
    Alter
    29
    Beiträge
    1.220
    Das läuft auf eine einfache Fallunterscheidung raus. Wenn die Differenz (delta) von soll- und ist-Position betragsmäßig größer als 180° ist, muss sich der Roboter um 360° - abs(delta) drehen, die Richtung ist dabei invertiert (also bei delta < 0 in positiver Richtung, bei delta > 0 in negativer Richtung).

    mfG
    Markus
    Tiny ASURO Library: Thread und sf.net Seite

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    59
    Beiträge
    2.435
    Hallo Ernst,

    Einfach zuerst die Differenz der beiden Werte bilden und zwar den kleineren vom grösseren Wert abziehen.
    Ist der Wert grösser als 128 musst du über die 0 drehen.
    Dann musst du noch feststellen ob die 0 links oder recht von Startwert liegt.

    Code:
      diff = MAX(start, end) - MIN(start,end);
      if ( diff > 128 )
        {
           if ( start > end )
             {
                //  linksrum
             }
           else
              {
                // rechtsrum
              }
        }
      else
        {
           if ( start > end )
             {
                // rechtsrum
             }
           else
              {
                // linksrum
              }
        }
    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  4. #4
    Benutzer Stammmitglied Avatar von efb
    Registriert seit
    08.03.2011
    Beiträge
    47
    Vielen Dank Euch beiden, jetzt läufts!

    ich hab´s jetzt so gemacht:

    Code:
    if ((ziel-ist)<128 && (ziel-ist)>0)
    {
    	rotate(30, RIGHT, 10,IDLE);
    }
    else
    {
    	rotate(30, LEFT, 10,IDLE);
    }

    edit:

    nun ist mir doch nach Monaten aufgefallen, das das gar nicht so funktioniert, keine Ahnung wieso mir das vorher als richtig erschienen ist...

    Also doch lieber genau das Prinzip, so wie Peter(TOO) es geschrieben hat:

    Bei mir ist Kompass der Istwert.

    Code:
                                            if (Kompass>ziel)
    					{
    					      diff=Kompass-ziel;
    					}
    					else
    					{
    					      diff=ziel-Kompass;
    					}
    					
    					
    					if ( diff > 128 )
    					{
    						if ( Kompass > ziel )
    						{
    
    							rotate(30, RIGHT, 10,IDLE);
    
    						}
    						else
    						{
    
    							rotate(30, LEFT, 10,IDLE);
    
    						}
    					}
    					else
    					{
    						if ( Kompass > ziel )
    						{
    
    							rotate(30, LEFT, 10,IDLE);
    
    						}
    						else
    						{
    
    							rotate(30, RIGHT, 10,IDLE);
    
    						}
    					}
    Geändert von efb (29.01.2015 um 19:33 Uhr)

Ähnliche Themen

  1. Odometrie Querempfindlichkeit links-rechts
    Von der_smo im Forum Asuro
    Antworten: 4
    Letzter Beitrag: 05.02.2011, 21:54
  2. links/rechts Antriebverhältnis für Kreisbogenfahrt
    Von Lurchi im Forum Software, Algorithmen und KI
    Antworten: 6
    Letzter Beitrag: 11.04.2010, 20:09
  3. Links-Rechts-Micro auf 2 Stereo Lautsprecher aufteilen
    Von BIG Muzzy im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 19.09.2007, 07:04
  4. Programmierfehler Rechts, links und vorwärtsbewegung. Hilfe!
    Von MischaMV im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 0
    Letzter Beitrag: 26.04.2006, 10:53
  5. links oder rechts rum???
    Von Sommer im Forum Software, Algorithmen und KI
    Antworten: 7
    Letzter Beitrag: 12.05.2005, 10:20

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •