PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ENCODER_RESOLUTION



Stratege993
26.12.2007, 19:24
Also ich habe mal getestet, ob mein Robby auch 1 Meter fähr wenn er 1 Meter fahren soll. Habe mir ein kleines Programm geschrieben um es zu testen:

#include "RP6RobotBaseLib.h"

int main(void)
{
initRobotBase();
powerON();
move (160, FWD, 4000, true);
return 0;
}
Am Ende ist er blos 95 cm gefahren. Nun habe ich in die Anleitung geschaut und unter Anhang unter B das Kalibrieren des Encoder gefunden. Nun habe ich auch ausgerechnet was man brauch bei mir ca. 0.227. Jetzt wollte ich die RP6Config.h editieren die gibts aber leidern net unter RP6Lib\RP6base stattesen unter RP6Lib\RP6common. OK, ist ja blos ein kleiner fehler.
Nun habe ich sie geöffnet und da kann man bei 4 Zeilen hintereinander einen Wert für ENCODER_RESOLUTION angeben. Ich habe einfach den genommen wo keine "\\" davor waren. Nun habe ich mein Programm neu kompeliert und neu hochgeladen und trotzdem fährt er kein Stück anders immer noch den selben Wert.
Kann mit jemand helfen?
stratege993

Stratege993
26.12.2007, 19:26
Jetzt habe ich mal alle 4 Werte auf 0.5 gesätzt und trotzdem keine auswirkung. Was mach ich falsch?
Stratege993

Dirk
26.12.2007, 19:32
... nach jeder Änderung der RP6Config.h nicht vergessen, das Testprog neu zu kompilieren!

Gruß Dirk

roboterheld
26.12.2007, 19:34
........ nach jeder Änderung der RP6Config.h nicht vergessen, das Testprog neu zu kompilieren!......

der witz ist gut.

Dirk
26.12.2007, 20:50
der witz ist gut.

Naja, das war hier schon Ernst.

Manchmal hat da auch ein "Make clean" Wunder bewirkt.

Gruß Dirk

SlyD
26.12.2007, 21:09
Hallo Stratege993,

bei "move (160, FWD, 4000, true);" bewegt sich der RP6 4000 Encoderschritte vorwärts.
Die Umrechnung über die ENCODER_RESOLUTION
Werte in der Datei RP6config.h läuft dann aber über ein zusätzliches Makro.
Damit sich etwas ändert, musst Du den Aufruf oben so machen:

move (160, FWD, DIST_MM(1000), true);

So werden die 1000mm in Encoder Zählschritte umgerechnet. Du kannst auch den von Dir berechneten Wert direkt verwenden - also z.B. anstelle der 4000 halt 4100 oder so versuchen.

Die Makros sind ja zwei Zeilen tiefer in derselben Datei definiert:


#define DIST_MM(__DST__) (uint16_t)(__DST__/ENCODER_RESOLUTION)
#define DIST_CM(__DST__) (uint16_t)(__DST__/(ENCODER_RESOLUTION/10))
#define DIST_M(__DST__) (uint16_t)(__DST__/(ENCODER_RESOLUTION/1000))


DIST_MM steht für Distanz in MilliMetern, DIST_CM für Zentimeter und DIST_M für Meter.


Die Zeilen die mit "//" anfangen sind natürlich auskommentiert, werden vom Compiler also nicht beachtet. Sind nur Beispielwerte.
(lieber mal den C Crashkurs ansehen)

MfG,
SlyD

Stratege993
26.12.2007, 23:08
Hier die einzelnen Antworten:

Dirk: Also das mit dem neu Kompilieren habe ich immer bedacht.

SlyD: Das man nicht die Zählstücke sondern die Strecke angeben muss, habe ich leider nicht bedacht, ich dachte der Roboter rechnet mit der Strecke und nicht mit den Zählstrecken (war natürlich ein Falschdenken).

SlyD: Das dies bloß Kommentare sind, war mir klar, aber etwas verwirrend waren sie, weil sie vor und nach der Eingabezeile standen. Wusste leider noch nicht das auch diese Config-datei in C geschrieben ist.

Mfg,
Stratege993

P.s.: Jetzt fährt er endlicht die richtige Strecke.

Dirk
28.12.2007, 15:47
Leute,

weil wir gerade beim Kalibrieren sind:

Welche Funktion hat eigentlich der ROTATION_FACTOR, den man ja auch in RP6Config.h anpassen kann?

Bei meinen Tests ändert sich wenig, wenn ich da zwischen 620 und 750 probiere.
Oder ist das zu wenig?

Gruß Dirk

carlitoco
28.12.2007, 16:18
@alle komisch finde ich, das ich bei der vorwärts/rückwärts - Fahrt mit speed 100 keine probleme habe ... aber ab 160 verzieht der RP6 dann die Spur, undzwar ordentlich... einfach alles nochmal nachkalibrieren oder was ist zu tun?
manchmal , wenn das eine getriebe plözlich schneller beschleunigt, ev wegen hindernis, schreit es recht laut, so als ob die Zahnräder zu sehr vibrieren hat da jemand eine idee wie ich das weg bekomme?

danke"

-andi_007-
30.01.2008, 10:53
Hi! mein encoder funkt auch nicht !
Jezda wollte ich den selftest machen und der geht nich wenn ich ihn drauflade und dan start drücke leuchtet nur das led ( SL6 und SL5 ) am anfang habe ich gedacht das der akku zu schwach ist aber ich habe ihn aufgeladen und der hat jezda 8.34 Volt und trozdem macht er immer noch das selbe wie voher angeschrieben!
Was soll ich machen ? früher hat der selftest ja immer funktioniert!

carlitoco
30.01.2008, 11:34
Such mal hier im forum ... https://www.roboternetz.de/phpBB2/viewtopic.php?t=35174

es gibt schon einige Einträge, die sich auf das Thema beziehen ... ich hatte auch meine probleme mit den encodern...

hier pdf .. http://www.arexx.com/rp6/downloads/RP6_ENCODER_DE_20071219.zip