PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : drehung auf der stelle [gelöst]



inka
03.01.2010, 09:40
hi allerseits,

mit folgendem programm sollte sich der RP6 eigentlich auf der stelle drehen:


#include "RP6RobotBaseLib.h"
int main(void)
{
initRobotBase();
setLEDs(0b111111);
mSleep(2500);
powerON();

while(true)
{
void task_motionControl(void);

setLEDs(0b000100);

// move(100, FWD, DIST_MM(1000), true);

// setLEDs(0b100000);

rotate(100, RIGHT, 360, true);

setLEDs(0b100000);

// move(100, FWD, DIST_MM(1000), true);

// setLEDs(0b000100);

// rotate(100, LEFT, 180, true);

mSleep(2500);
}

return 0;
}

tut er aber nicht. egal ob er eine drehung rechts, oder links ausführt, bewegt er sich auch - in fahrtrichtung gesehen - seitwärts rechts. Ist das normal?
Die werte für encoder_resolution und rotation_factor in der config.h habe ich schon angepasst, so ganz genau fährt er weder die entfernung noch der winkel, aber das ist ja ok, nur die bewegung seitwärts irritiert mich.
Die funktion task_motion_control habe ich eingefügt, weil ich es in der anleitung zu den motorfunktionen gelesen habe. Liegt es mit der seitwärtsbewegung daran, dass die motoren unterschiedlich stark sind?

Martinius11
03.01.2010, 10:17
ich hab schon mal den tipp mit der einstellung der zahnradmuffe gegebnen

inka
03.01.2010, 10:28
hi Martinius11,

er fährt bei move schon schön geradeaus, mach keinen bogen, nur wenn sich beide ketten gegeläufig (rotate, also quasi FWD, RWD) bewegen "verschiebt" er sich nach rechts...

habe beide muffen überprüft, sitzen mit wenig spiel in der gleichen entfernung zum rad...

suicide
03.01.2010, 12:14
Hi inka,

wie groß ist denn der Versatz von deinem RP6 nach der Drehung?
Ich versteh das doch richtig das der RP6 nach der 360° Drehung nicht mehr auf dem Punkt steht, auf dem er die Drehung begonnen hat oder?
Ist der Versatz bei kleineren Rotationsgeschwindigkeiten genau so groß?

Gruß
szd

Martinius11
03.01.2010, 12:22
gut dann nimm mal schmirgel papier und raue die ketten etwas auf
so das sie besseren halt haben

inka
03.01.2010, 12:35
hi szd,


wie groß ist denn der Versatz von deinem RP6 nach der Drehung?

drehung RE, speed 50, halbe spurweite
drehung RE, speed 100, ganze spurweite
drehung li entsprechend, beide male versatz nach rechts



Ich versteh das doch richtig das der RP6 nach der 360° Drehung nicht mehr auf dem Punkt steht, auf dem er die Drehung begonnen hat oder?

ja...



Ist der Versatz bei kleineren Rotationsgeschwindigkeiten genau so groß? s.o., bei kleineren geschwindigkeiten ist der versatz kleiner...

SlyD
03.01.2010, 13:00
Auf welchem Untergrund?
Das ein Kettenfahrzeug beim rotieren je nach Untergrund etwas seitwärts abdriftet ist normal - die Ketten reiben nunmal über den Boden während der Drehung.
(dazu steht auch was in der Anleitung Anhang B! Mal die verlinkten PDFs anschauen!)

Bei den move und rotate Funktionen wird langsam beschleunigt und abgebremst währenddessen könnte es kurz sein das die beiden Ketten nicht gleichschnell drehen.
Wie verhält er sich mit folgendem Code:



#include "RP6RobotBaseLib.h"
int main(void)
{
initRobotBase();
mSleep(1000);
powerON();

changeDirection(LEFT);
// changeDirection(RIGHT);
moveAtSpeed(80,80);

while(true)
{
task_RP6System();
}
return 0;
}



(einmal mit LEFT und einmal mit RIGHT testen bitte)


MfG,
SlyD


PS:
Hast Du bei der Drehgeber Einstellung die Motoren mal Rückwärts laufen lassen ("bwd" eingeben und PWM Wert auf 100 stellen) - passt die Einstellung dann noch?
Die Stellringe an den Zahnrädern mit der Encoder Scheibe müssen so sitzen wie auf der letzten Seite des Drehgeber justieren PDFs - sonst können sich die Zahnräder vom Sensor wegbewegen (da Schrägverzahnt, passiert das aber nur in einer Richtung!)

inka
03.01.2010, 13:43
hi SlyD,

untergrund: teppichboden, ca 25 maschen/cm², relaiv rauh (eben arbeitszimmer :-))

code:
RIGHT (7 drehungen): 50cm nach rechts, 25 cm nach vorne gewandert
LEFT (7 drehungen): 50cm nach rechts, 5cm nach vorne

Anhang B: habe ich gelesen, verlinkte PDF´s: meinst Du das von der "The University of Michigan"? hab ich (noch) nicht gelesen :-)

zum PS: kann ich jetzt nicht sagen, wahrscheinlich ja, weil es ja in der beschreibung stand. werde ich noch einmal machen. Es schien mir erstmal wichtiger die tests mit Deinem code zu machen, wenn man hier schon am sonntag einen spezialisten hat...

danke erstmal...

edit: encoder duty-cycle test durchgeführt, fwd wie auch bwd, 50 und 100 zeigen akzeptables tastverhältnis...
http://www.a-g-k.com/_rp_6/encoder_li_2010_01_03.jpg
http://www.a-g-k.com/_rp_6/encoder_re_2010_01_03.jpg

SlyD
03.01.2010, 14:42
50cm?!
Ein halber Meter ist wirklich NICHT normal selbst bei rauhem Teppich.

Das Kettenprofil kann natürlich leicht in den Fasern des Teppichbodens hängen bleiben (macht er ruckartige Bewegungen oder driftet er relativ konstant weg?).

Die Drehgeber sind gut eingestellt - also vielleicht ein Mechanik Problem.

Da er scheinbar immer nach rechts wegdriftet(?):
Zieh mal die Vorderräder raus und drück sie wieder zurück - die sollten etwas Spiel haben (grob 1mm) aber nicht zuviel.
Drück auch mal die Zahnräder an den Hinterrädern in richtung Chassiswand (am Rad gegenhalten).

Sind die Ketten in Ordnung oder evtl. "verzogen"?
Tausch doch mal die linke mit der rechten Kette (also vorsichtig mit Drehbewegung abziehen und auf der anderen Seite drauf) und probiers nochmal. Wenn das nichts bringt dreh eine der Ketten um (also abziehen um 180° horizontal drehen und wieder draufmachen).

MfG,
SlyD

inka
03.01.2010, 15:29
Hi SlyD,

er dreht auf dem teppichboden gleichmäßig, also driftet konstant weg...

vorder-räder:
das rechte lässt sich (mit hörbarem knacken) um ca. 0,5mm hin und her bewegen (auf der achse), das linke nicht, es läst sich nur drehen. Allerdings spüre ich keinen unterschied, beide lassen sich relativ leicht drehen. Mit kette und auch ohne.

hinterräder:
sind ja nur auf der achse draufgesteckt und werden (durch die kette?) draufgehalten. Die zahnräder liessen sich etwas in richtung hinterrad drücken, laufen aber immer noch mit ca. 0,5mm spiel zum anderen zahnrad.


die ketten sind optisch ok, der wechsel li/re mit der RIGHT code-version verringerte das wegdriften nach rechts auf ca. 45 cm. 25cm nach vorne blieben.

drehen der rechten kette (in der ebene der kette, innenseite nach aussen):

wegdriften um 50/25 cm (re/vorne), also keine verbesserung…

und nun?

SlyD
03.01.2010, 15:35
> 0,5mm spiel

Das ist OK so.


Kannst Du es mal auf einem anderen Untergrund testen?
Ein Tisch, Fliesen o.ä. ?

Was passiert wenn Du im Code
moveAtSpeed(80,80);

z.B. durch
moveAtSpeed(82,80);
oder
moveAtSpeed(80,82);
oder
moveAtSpeed(81,80);
oder
moveAtSpeed(80,81);

ersetzt?
(könnte ja sein das eine Seite eine konstante Abweichung erzeugt)

MfG,
SlyD

inka
03.01.2010, 15:51
hi SlyD,

auf die idee hätte ich schon früher kommen können. War eben auf dem laminat bei meiner tochter im kinderzimmer, drift praktisch 0!
Und ich habe mich schon gefreut endlich einen roboter zu haben, der mit dem teppichboden zurechtkommt - der asuro rutschte nämlich grundsätzlich auf seinen gummirädchen durch...

danke SlyD...

Dirk
03.01.2010, 16:04
Hallo inka,


Und ich habe mich schon gefreut endlich einen roboter zu haben, der mit dem teppichboden zurechtkommt ...
Bei mir ist das im Arbeitszimmer ähnlich. Das Wegdriften findet immer in dieselbe Richtung statt, weil der Teppichboden kurze Fasern hat, die schräg stehen. Hat man da drauf z.B. einen Teppichschutz (wie es den für Computerarbeitsplätze gibt), bewegt sich dieser Schutz immer weiter in die Richtung, die die Fasern des Teppichbodens vorgeben.
Das ist beim RP6 der selbe Effekt.

Gruß Dirk

SlyD
03.01.2010, 16:12
Hi,

OK gut hätten wir das geklärt.
Komische Teppiche habt ihr da :P

Ich habe wohl bisher nur richtungsunabhängige Teppichböden getestet ;)

Bei den Teppichen auf denen ich das getestet hatte war der Drift ziemlich gering (vielleicht 5cm).

MfG,
SlyD