-         

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 34

Thema: Probleme mit Odometrie

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    17.02.2007
    Alter
    30
    Beiträge
    49

    Probleme mit Odometrie

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hi,
    ich habe ein Problem mit der Auswertung der Odometriesensorik.
    Die Sensoren gehen doch auf einen AD Wandler!? und nehmen Spannungswerte zwischen 0 und 1024 an wobe 0 [Ein] und 1 [Aus] darstellt.
    Ich wollte den Asuro dazu bringen, dass er wenn er gegen ein Hinderniss prallt den Rückwärtsgang einlegt und einen vorher definierten Kurvenradius fährt. Bsp. Asuro fährt frontal auf eine Wand (also K3 und K4) aktiv. Nun ist z.B. im Program eine 90 Grad Kurve vorgesehen. Jetzt soll er sich parallel zur wand (also 90 Grad zum Aufprallwinkel) ausrichten und weiterfahren.

    Leider scheitere ich schon bei der Auswertung der Sensoren.
    Um die Odometrie zu Testen fährt mein Roboter einfach gerade aus.
    Jetzt soll er mir bei jedem Hell-. Dunkelwechsel des linken Rades die Status LED umschalten und beim rechten Rad die FrontLED An und Aus.

    Allerdings geht lediglich die StatusLED auf Rot.
    Code:
    #include "asuro.h"
    
    // Bit 0 ( 1) -> K6 rechts außen
    // Bit 0 ( 2) -> K5 rechts mitte
    // Bit 0 ( 4) -> K4 rechts innen
    // Bit 0 ( 8) -> K3 links  innen
    // Bit 0 (16) -> K2 links  mitte
    // Bit 0 (32) -> K1 links  außen
    
    int main(void)
    {
    
    
    
    
    
    int zaehler;   			  //ausweichzeit nach kollision
    
    unsigned int data [2];  //Array erstellen mit 2 speicherzellen für Odometriedaten
    						  //data [0] links T11
    						  //data [1] rechts T12  
    						  
       Init();
       while(1)
       {
       
    //-----------------------------------------------   
       
        if (PollSwitch() >= 1)
          {
             if(PollSwitch()==1)
            {
               if(PollSwitch()==1)
             {
    
    		StatusLED (RED);
             MotorDir(RWD,RWD);
             MotorSpeed(0,200);
                         
              for(zaehler=0; zaehler < 500; zaehler++)
                 {       
                   Sleep(255);
                  }  			 
          }}}   
    
    //----------------------------------------------- 
    if (PollSwitch() >= 2)
          {
             if(PollSwitch()==2)
            {
               if(PollSwitch()==2)
             {
    
             StatusLED (YELLOW);
             MotorDir(RWD,RWD);
             MotorSpeed(0,100);
                         
              for(zaehler=0; zaehler < 500; zaehler++)
                 {       
                   Sleep(255);
                  }
          }}}  
    //----------------------------------------------- 	  
    	  
    	  if (PollSwitch() >= 4)
          {
             if(PollSwitch()==4)
            {
               if(PollSwitch()==4)
             {
    
             StatusLED (GREEN);
             MotorDir(RWD,RWD);
             MotorSpeed(100,0);
                         
              for(zaehler=0; zaehler < 500; zaehler++)
                 {       
                   Sleep(255);
                  }
          }}}  
    //----------------------------------------------- 	  
    	  
    	  if (PollSwitch() >= 8)
          {
             if(PollSwitch()==8)
            {
               if(PollSwitch()==8)
             {
    
             StatusLED (GREEN);
             MotorDir(RWD,RWD);
             MotorSpeed(200,0);
                         
              for(zaehler=0; zaehler < 500; zaehler++)
                 {       
                   Sleep(255);
                  }
          }}}  
    //----------------------------------------------- 	  
    	  
    	  if (PollSwitch() >= 16)
          {
             if(PollSwitch()==16)
            {
               if(PollSwitch()==16)
             {
    
             StatusLED (YELLOW);
             MotorDir(RWD,RWD);
             MotorSpeed(100,0);
                         
              for(zaehler=0; zaehler < 500; zaehler++)
                 {       
                   Sleep(255);
                  }
          }}}  
    //----------------------------------------------- 	  
    	  
    	  if (PollSwitch() >= 32)
          {
             if(PollSwitch()==32)
            {
               if(PollSwitch()==32)
             {
    
             StatusLED (RED);
             MotorDir(RWD,RWD);
             MotorSpeed(100,0);
                         
              for(zaehler=0; zaehler < 500; zaehler++)
                 {       
                   Sleep(255);
                  }
          }}}  
    //----------------------------------------------- 
    
    
    
          else
          {
             MotorDir(FWD,FWD);
             MotorSpeed(100,100);
    		 
    		 StatusLED(RED);
    		 BackLED(OFF,OFF);
    		 
    		 OdometrieData(data);
    				 
              if(data [0] < 512){ 
    			 StatusLED(YELLOW);
    			 StatusLED(OFF);}
    			 
    		  if(data [0] > 512){ 
    			 StatusLED(GREEN);
    			 StatusLED(OFF);}			 
    			  
    		  if(data [1] < 512) 
                 FrontLED(ON);
    			 
    		  if(data [1] > 512) 
    			 FrontLED(OFF); 
       }}
    	   return 0;
    }
    Allerdings gibts es auch sonst Effekte die ich mir nicht erklären kann.
    Bsp. im Programm wird die StatusLED anstat von Gelb zu Grün von Rot zu Grün gewechselt. Und plötzlich geht nix mehr. Genauso wenn ich am am Anfang des Programmes die Status LED auf Rot setze. Warum ?
    Außerdem glimmen die BackLED´s immer mit. Liegt wahrscheinlich an der Verschaltung!
    Und wenn jemand gerade dabei ist meine fragen zu beantworten!
    Wie kann ich die AD Wandlerwerte der Odometrie per IR an das Hyperterminal senden? Ich würde einfach gerne sehen welche Werte der AD Wandler so ausgibt!
    Auch wenn mir gerade noch etliche fragen einfallen belasse ich es erstmals dabei.

    Ich bin jedem dankbar der mir hielft.

    Gruß

    Simon

  2. #2
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.912
    der adc nimmt werte von 0 bis 1023 an, wobei 0=Masse und 1024=Referenzspannung (bei der odometrie: =VCC).

    0 und 1 als ein und aus hat was mit infrarot zu tun.
    kleinschreibung ist cool!

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    30.10.2007
    Ort
    Meensen
    Alter
    28
    Beiträge
    77
    ich beschäftige mich auch gerade mit den odometriesensoren und habe ein kleines programm geschrieben das mir den wert ausgeben soll. funktioniert aber nicht richtig.

    Code:
    #include <stdlib.h>
    #include "asuro.h" 
    #define taste (!(PINC & (1<<PC4))) // Tastenabfrage 
    #define keine_taste (PINC & (1<<PC4))
    
    int main(void){ 
      Init();
      int a=1;
      MotorDir(FWD,FWD);
      MotorSpeed(120,120);
      while(a=1){
        unsigned int data[2]; //Speicher bereitstellen
        OdometrieData(data);
        SerWrite(data[0],20);
      }
    }
    gibt im hyperterminal folgendes aus:

    Code:
     5&_X/4EBuHN1N"r'(C"dbX0/bXICRgB &_Xd;A9r h              i m!\I5-
    '!7AFRX"=!U@Dd0\!Y@ \)xY1#gB &_uHN1N"r'(CH@t    !hZ0p1                         J
    '!7AF@HE5[*t#SUQ5"=!U@Dd0&_X/4EB@ L'@Q,[P. &_X/4E'(C"d;A9rJ;EgBxY1#[tbiL       5
    `~,\%@)@tL      !hZ0p-[x@/4EB \.Y@ \)xY(C"d;A9r h/4EB Y1#[tbA DI(YB'Aq)v 0(t(&_X
    `~, h@ LEB ,[P. Qd;A9r hHUQ'!7AFR%@)@"e!Sa@t    !hZ0/4EB \.p-[x@)1B            J
    ;EgB &_X;A9r h@(1bKF            i                                              J
    `~,\%@)@#SUQ, &_X/4LU   5"=
                               %Eh8Lt       !hZ0p-[x;A9r h@)@"e<t   !hZ0p-[x;i
                                                                              %EhZ0p
    '!7;iAq)uHN1N"rHN1N"r'(C"d(YB'Aq)ugB &_X &_X/4EB L'@!BiLt       !hZ0p-1x
         %                                                                         J
    ;EEh8LH                                                                        '
    (C"d;A9r )@"e<D@gB &_X/0/bXICRv#[tbX0/EB \.     !hZ0p-[x@)1     5"=!U@DdF:Xo@dB"
    '!7AF!hZ0p-[x@)1B DI(YB'Aq)B'Aq)uHN1N"!7AFR} L'@!BiL@ L'@BiL    5"h8LH         :
    Xo@dB"I(YB'Aq)AFR}AFR}!7AFR}AFR}AFR}!7AFR

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    17.02.2007
    Alter
    30
    Beiträge
    49
    Hallo damaltor,

    mit 0 und 1 meinte das min bzw. max.
    Sorry ist bissl doof erklärt.
    Ich habe mir gerade die ADC Werte ausgeben lassen.
    Allerdings na ja ohne erfolg.
    Ich habe das Programm von:
    http://www.roboternetz.de/phpBB2/zei...suro+odometrie
    genutzt. Also das zum Auslesen der Ordometrie.
    Eigentlich sollte das Ergebniss im Hyperterminal so aussehen:
    LoggingOdometers V1.0 (2006-05-21, Arexx-Henk)
    Code:
    Left Odometer
    
    +00154
    +00154     
    +00156     
    +00177     
    +00183     
    +00201     
    +00204     
    +00207     
    +00198     
    +00186     
    +00169     
    +00160   
    +00158
    +00167
    +00178
    +00184
    +00198
    +00206     
    +00198     
    +00183     
    +00172     
    +00157     
    +00149     
    +00156
    +00161
    +00179
    +00190
    +00204
    +00206
    +00201   
    +00189     
    +00182     
    +00162     
    +00155     
    +00158     
    +00168   
    +00179     
    +00187
    +00202
    +00206
    +00200
    +00186
    +00175
    +00157     
    +00152     
    +00152     
    +00160     
    +00176     
    +00184     
    +00196
    +00201     
    +00203
    +00194
    +00185
    +00171
    +00163
    +00147
    +00159     
    +00163     
    +00184     
    +00195     
    +00206     
    +00207     
    +00203
    +00192     
    +00184
    +00161
    +00159
    +00150
    +00161
    +00169
    +00183     
    +00197     
    +00204     
    +00207     
    +00200     
    +00191     
    +00179
    +00158   
    +00155
    +00155
    +00158
    +00176
    +00179
    +00194     
    +00207     
    +00203     
    +00190     
    +00178         
    +00183
    +00198
    +00206
    +00206
    +00197     
    +00183     
    +00170     
    +00151     
    +00159     
    +00157     
    +00172     
    +00179     
    +00193
    +00205
    +00204
    +00195
    +00184
    +00171
    +00159
    +00145
    +00157
    +00159     
    +00182     
    +00189     
    +00199     
    +00201     
    +00202     
    +00191     
    +00182     
    +00165
    +00160
    +00147
    +00159
    +00168
    +00185
    +00199     
    +00206     
    +00206     
    +00201     
    +00190     
    +00182     
    +00163
    +00152
    +00155
    +00163     
    +00177     
    +00185
    +00201
    +00204
    +00205
    +00196
    +00183
    +00171
    +00155
    +00154
    +00150     
    +00167     
    +00171     
    +00184     
    +00199     
    +00206     
    +00201     
    +00190     
    +00179 
    +00159
    +00156
    +00143
    +00163
    +00171
    +00188     
    +00200     
    +00206     
    +00201     
    +00190   
    +00169
    +00186     
    +00199     
    +00206     
    +00200     
    +00193     
    +00177
    +00171
    +00146
    +00151
    +00153
    +00173
    +00183     
    +00195     
    +00200     
    +00201     
    +00195     
    +00186     
    +00174
    +00156
    +00150
    +00148
    +00169
    +00179
    +00195
    +00205
    +00206
    +00204
    +00195
    +00180     
    +00170     
    +00152     
    +00150     
    +00153     
    +00164     
    +00186     
    +00197     
    +00206     
    +00204     
    +00200     
    +00188
    +00177
    +00166 
    +00147     
    +00154     
    +00155
    +00175
    +00176
    +00197
    +00203
    +00205
    +00190
    +00180
    +00159   
    +00156     
    +00142     
    +00156     
    +00169     
    +00182     
    +00199     
    +00205     
    +00203     
    +00195
    +00184
    +00160
    +00158
    +00150
    +00162
    +00173     
    +00182     
    +00199     
    +00204     
    +00205     
    +00192     
    
       
    
    Right Odometer
    
    +00213
    +00193
    +00171     
    +00161     
    +00149     
    +00140     
    +00147     
    +00166
    +00183
    +00192
    +00196
    +00217
    +00201
    +00184     
    +00166     
    +00145     
    +00141     
    +00149     
    +00166     
    +00179 
    +00198
    +00208
    +00207
    +00197
    +00180
    +00160     
    +00143     
    +00141     
    +00156     
    +00172     
    +00188
    +00206
    +00213
    +00210
    +00200
    +00169
    +00150   
    +00138     
    +00138     
    +00147     
    +00167     
    +00181     
    +00197   
    +00204
    +00199
    +00199
    +00186
    +00167 
    +00147     
    +00134     
    +00136     
    +00152     
    +00171
    +00180
    +00199
    +00210
    +00209
    +00198
    +00179
    +00164     
    +00146     
    +00135     
    +00139     
    +00153     
    +00175     
    +00188
    +00210
    +00215
    +00215
    +00198
    +00173     
    +00157     
    +00139     
    +00131     
    +00138     
    +00192
    +00213
    +00203
    +00184     
    +00166     
    +00147     
    +00138     
    +00143     
    +00160     
    +00178
    +00195
    +00207
    +00209
    +00199
    +00182
    +00167     
    +00150     
    +00139     
    +00145     
    +00167     
    +00184     
    +00200   
    +00211
    +00211
    +00204
    +00173
    +00153
    +00139
    +00140     
    +00147     
    +00163     
    +00180     
    +00195     
    +00203     
    +00201
    +00196
    +00187
    +00169
    +00152
    +00140
    +00140     
    +00145     
    +00157     
    +00175     
    +00193     
    +00208     
    +00208
    +00200
    +00183
    +00164
    +00148
    +00133
    +00131 
    +00142     
    +00162     
    +00179     
    +00199     
    +00215     
    +00216     
    +00207
    +00184
    +00163
    +00148
    +00136
    +00137
    +00154     
    +00172     
    +00185     
    +00193     
    +00200     
    +00216     
    +00195     
    +00177     
    +00156     
    +00139         
    +00203
    +00207
    +00202
    +00187     
    +00169     
    +00152     
    +00139     
    +00138     
    +00153     
    +00174
    +00191
    +00208
    +00212
    +00209
    +00193
    +00168     
    +00152     
    +00144     
    +00146     
    +00156     
    +00172     
    +00186
    +00199
    +00204
    +00199
    +00199
    +00185
    +00169
    +00149     
    +00136     
    +00135     
    +00150     
    +00172     
    +00182     
    +00200
    +00211
    +00210
    +00196
    +00173
    +00156
    +00137     
    +00129     
    +00136     
    +00152     
    +00171     
    +00188     
    +00209
    +00214
    +00214
    +00195
    +00172
    +00160
    +00147   
    +00139     
    +00144     
    +00162     
    +00180     
    +00193     
    +00195     
    +00215
    +00208
    +00190
    +00172
    +00156
    +00140
    +00138     
    +00153     
    +00172     
    +00192     
    +00206     
    +00209     
    +00199     
    +00183     
    +00166     
    +00146   
    +00212
    +00212
    +00205
    +00177
    +00154
    +00135
    +00137
    +00150
    +00161
    +00174
    +00191
    +00202
    +00201
    
    Left min/max, right min/max values
    
    +00142
    +00207
    
    +00129
    +00217
    (oder ähnlich)

    bei mir kommt lediglich

    LoggingOdometers V1.0 (2006-05-21, Arexx-Henk)

    Wenn du dir den else Teil des Programmes anschaust (ganz unten der obere Code ist irrelevant) siehst du das ich die Werte auf > bzw< 512 abfragen lasse. Aber das geht nicht.[/code]

  5. #5
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.912
    Habe deinen beitrag mal mit dem code-button etwas übersichtlicher gemacht... =)
    dein Problem bei dem Programm von Weiti ist, dass nicht die zahl gesendet wird, sondern der ascii character. die zahl 32 wird zB nicht als "3" und "2" gesendet, sondern als ascii 32. das ist das leerzeichen =)
    kleinschreibung ist cool!

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    17.02.2007
    Alter
    30
    Beiträge
    49
    Hi damaltor,

    ich habe das Programm von Arexx-Henk benutzt http://www.roboternetz.de/phpBB2/download.php?id=11451
    (ganzes Thema unter:
    http://www.roboternetz.de/phpBB2/zei...suro+odometrie)

    ja ich habe vorhin vergessen die Ausgabe also code zu posten
    wusste aber nicht wie ichs korrigiere.
    Langsam werde ich kirre es will net gehn

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    30.10.2007
    Ort
    Meensen
    Alter
    28
    Beiträge
    77
    oh gott *rot werd* das habe ich sogar vorher in nem c tutorial gelesen, das man damit nur ascii ausgibt, und habs trotzdem falsch gemacht.

    ich habe jetzt das programm aus der anderen diskusion laufen lassen und bekomme folgendes ergebnis:

    Code:
    Left min/max, right min/max values
    
    +00013
    +00184
    
    +00252
    +00255
    
    -Finished-
    folglich ist mein rechter odometer kaputt!?

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    12.09.2007
    Alter
    23
    Beiträge
    98
    oder es ist ein übertragungsfehler!? Hast du es noch einmal durch laufen lassen?

    mfg liggi
    Lieber am Asuro rumschrauben als alles andere.
    Meine Homepage

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    23.08.2007
    Beiträge
    61
    Flashe einfach nochmal den Selbsttest. Dann kannst du sehen, ob die Odometrie funzt oder nicht. Gruß farratt

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    30.10.2007
    Ort
    Meensen
    Alter
    28
    Beiträge
    77
    woran erkenne ich denn ob der odometrie test erfolgreich war?

    Hyperterminal:

    Code:
    -- ASURO Testing --
    LED Test
    Line Test
    Switch Test
    Odometrie Test
    Motor Test
    TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
    TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
    TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
    -- ASURO Testing --
    LED Test
    Line Test
    Switch Test
    Odometrie Test
    Motor Test
    im zweiten motortest hängt er sich auf, evtl weil das rad nicht ganz drann ist. (bekommt gleich nen eigenen thread)

Seite 1 von 4 123 ... LetzteLetzte

Berechtigungen

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