PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RP6 zieht nach links



Hartgas
19.07.2007, 14:04
Hallo Leute!
Ich hab gestern meinen RP6 bekommen und heute angefangen mich mit ihm zu beschäftigen. Da ich noch überhaupt keine Ahnung vom programmieren habe, hab ich versucht mich in die Beispielprogramme einzulesen. Ich habe das Programm Move5 in den Robby übertragen und ablaufen lassen. Dabei ist mir aufgefallen das der Robby, zwar nur minimal aber auf einer etwas längeren Strecke (ca. 3m) doch deutlich zur linken Seite hin fährt. Ich dachte schon daran den Motorspeed auf der linken Seite einen Punkt zu erhöhen aber das is ja nich der Sinn der Sache denk ich mal oder? Kann man das irgendwie kalibrieren? Würde mich auch interessieren ob noch jemand das gleiche Problem hat.

Viele Grüße

Hartgas

SlyD
19.07.2007, 15:48
Hallo Hartgas,

wie deutlich (in cm gemessen) weicht er denn von der gewünschten geraden Linie ab? Also der Abstand von gerader Linie die gefahren werden soll und tatsächlichem Kurs nach jeweils 1m, 2m und nach 3m.

Je nach Untergrund kann sich das immer anders verhalten.
Auf was für einem Untergrund hast Du ihn fahren lassen?
Teppich, Holz, Fliesen...? Ist der Untergrund eben?

Kleine Abweichungen sind eigentlich normal. Beim ASURO gibt es schon zig Threads zum Thema geradeaus fahren - Bots mit Differentialantrieb fahren ohne Regelung fast immer eine mehr oder wenige starke Kurve.

Beim RP6 ist das weniger akut, mit Regelung in der Library (aber für beide Motoren getrennt!) und dem Kettenantrieb klappt das meist schon ganz gut.

Das könnte man mit einer besseren Regelung optimieren. Die standard Regelung ist relativ langsam (200ms Regelungsintervall) und da kann es auf längeren Strecken schon zu kleinen Abweichungen kommen.
Da es vielen Anwendern beim ASURO sehr viel Spaß gemacht hat, sich damit zu beschäftigen, bietet die Library nur die grundlegenden Funktionen an. Die funktionieren schon ganz passabel, aber man kann die selbst noch stark verbessern! Hätte man auch direkt deutlich besser machen können, aber das hätten einige Anwender dann wahrscheinlich auch wieder nicht gut gefunden ;)

MfG,
SlyD

adrisch
19.07.2007, 17:15
Hi!

Ich hatte nur Probleme mit dem Gradeausfahren, wenn die Kette abgerutscht ist. Ist mir aber erst 4-mal passiert.

MfG,
Adrian

Hartgas
19.07.2007, 18:49
Hmm tja wieviel is das denn joa gute Frage.... also ich denk mal auf ner Geraden von 2m sind das bestimmt so ca 25-30cm die er abweicht.
Ich hab ihn bei mir im Wohnzimmer fahren lassen aufm Laminatboden natürlich eben, also daran kann es auch nich liegen.
Sagt mal wo finde ich eigentlich genau die ganzen Programmierbefehle die der RP6 benutzt?
Sorry falls das ne doofe Frage ist aber ich bin noch ganz frisch mit der ganzen programmiererei.

Gruß

Hartgas

PS Ich habs gerade ausprobiert und auf 2m sind es locker 35cm, also doch schon ne ganze Ecke.

chr-mt
19.07.2007, 18:56
Hätte man auch direkt deutlich besser machen können, aber das hätten einige Anwender dann wahrscheinlich auch wieder nicht gut gefunden
It's not a Bug, it's a Feature :)

Aber stimmt schon, wenn es nix zu verbessern gäbe, wäre es ja langweilig.

Gruß
Christopher

SlyD
19.07.2007, 20:10
@Hartgas:

Hmm also 15 cm wären bei 2m auf jeden Fall normal gewesen. Habe ich gerade selbst nochmal mit einem der Bots die ich hier habe getestet - da waren es nach 2m etwa 10cm nach rechts.
30 bis 35 erscheint mir ein ganz kleines bisschen zu viel, kann aber auch daran liegen das ich längere Strecken meist auf Teppichboden getestet habe. Da könnte es besser klappen als auf Laminat.

--------------------------

Nur um die Encoder als Fehlerquelle auszuschließen:
Den normalen Antriebstest hast Du schon wie in der Anleitung beschrieben ausgeführt?
Falls nicht --> solltest Du auf jeden Fall noch tun (und mir die Ausgaben schicken - die langen Ausgaben des Tests bitte wenn dann nur in Code Tags ins Forum posten...)!


Kannst Du auch mal den Encoder Test vom Selbsttestprogramm für ein paar Sekunden laufen lassen?
--> Das geht so:
- Voll geladene Akkus verwenden!
- Selbsttestprogramm laden und starten
- 'x' eingeben und Enter drücken
- 'c' eingeben und Enter drücken
- WICHTIG: Den RP6 in die Hand nehmen/hochhalten so dass die Ketten NICHTS berühren! Die müssen frei laufen können! Man kann den Bot alternativ auch auf irgendwas passendes draufstellen ... (s. Anleitung Abschnitt zum ersten Test - da ist das beschrieben)
- 'x' eingeben und Enter drücken
- dann 10 Sekunden laufen lassen
- 'x' eingeben und Enter drücken

---> Dann oben im RP6Loader Menü Optionen-->Terminal Speichern wählen und das in eine neue Textdatei speichern (z.B. 'rp6test.txt' ).
Die Datei bzw. den Inhalt dann hier im Forum posten oder mir per Mail schicken.


ACHTUNG: Wie ich schon hier:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=32328
beschrieben habe ist der Test nicht sonderlich genau und zeigt oft auch "BAD" an obwohls eigentlich OK ist - aber im Mittel sollte das Tastverhältnis bei 30 bis 60% liegen.
Man sieht so zumindest einigermaßen ob die Encoder richtig eingestellt sind oder nicht.


---------------------------------------

@chr-mt:
Ich wette, wenn es besser gewesen wäre hätten sich auch einige Leute drüber beschwert ;)
Aber die RP6Lib hat schon mind. 10x soviele Features und Funktionen wie die standardmäßig beim ASURO mitgelieferte...


MfG,
SlyD


PS: Als schnelle quick & dirty Lösung könnte man in die Library natürlich manuelle Korrekturfaktoren einbauen, die einem Motor immer etwas mehr Saft geben. Haben viele Anwender bei ASURO auch probiert.

Hartgas
19.07.2007, 20:19
Also nur damit wir uns jetzt nicht falsch verstehen, ich hab leider überhaupt keinen Plan was du mit Library meinst. Ich schätze mal das wird ein Programm sein wo alle Befehle die der Robby benutzen kann auch drinstehen, lieg ich da irgendwie richtig?

HILFE 8-[ ich bitte um Info!!!

Ich werd den Test jetzt mal anschmeissen und dir dann die Ergebnisse schicken, dauert aber nen Moment. Ich weiss zwar nicht ob es was damit zu tun hat aber ich hab im Moment normale aber ganz frische Batterien im Robby drin.

Gruß

Hartgas

RP6 Robot Base Selftest

################################################## ###################
### ATTENTION!!! DANGER!!! WARNING!!!
Make sure that the RP6 CAN __NOT__ MOVE!
The caterpillar tracks should NOT touch the ground!
(hold it in your hands for example...)
THE RP6 WILL START MOVING IN TEST 8! YOU CAN DAMAGE IT IF YOU DO NOT
MAKE SURE THAT IT CAN __NOT__ MOVE!
Make sure both crawler tracks are FREE RUNNING! DO NOT BLOCK THEM!
################################################## ###################

Please enter "x" to continue!

# x

################################################## ###################
######### RP6 Robot Base Selftest #########
######### HOME VERSION v. 1.0 - 09.04.2007 #########
################################################## ###################
##### Main Menu ######### Advanced Menu #####
# # #
# 0 - Run ALL Selftests (0-8) # s - Move at speed Test #
# 1 - PowerOn Test # d - Move distance Test #
# 2 - LED Test # c - Encoder Duty-Cycle Test #
# 3 - Voltage Sensor Test # #
# 4 - Bumper Test # #
# 5 - Light Sensor Test # #
# 6 - ACS (and RC5 receive) Test # #
# 7 - IRCOMM/RC5 Test # System voltage is: #
# 8 - Motors and Encoders Test # 09.15V #
# # #
################################################## ###################
# Please enter your choice (1-8, s, d, c)! #
################################################## ###################

# c

################################################## ###################
################################################## ###################

Encoder Duty Cycle test

################################################## ###################
### ATTENTION!!! DANGER!!! WARNING!!!
Make sure that the RP6 can __NOT__ move!
The caterpillar tracks should __NOT__ touch the ground!
(hold it in your hands for example...)
THE RP6 CAN START MOVING VERY FAST! YOU CAN DAMAGE IT IF YOU DO NOT
MAKE SURE THAT IT CAN __NOT__ MOVE!
################################################## ###################

Speed regulation is disabled - the motors just get constant
Power - this allows you to adjust the small potis on the Encoders
to set the duty cycle properly.
Optimal is a value of 50% - but if it jumps up and down between
30% and 75% this is also OK.
A few "BAD!!!" messages (maybe 2 each 5 seconds) are normal and
nothing to worry about.
If there are more error messages - you need to adjust the potis a bit
more to make it work!

Enter "x" and hit return when you are ready!

# x
Duty Cycle + LEFT: 40% -> OK || Duty Cycle + RIGHT: 44% OK | VL:57 | VR:50
Duty Cycle + LEFT: 41% -> OK || Duty Cycle + RIGHT: 42% OK | VL:94 | VR:76
Duty Cycle + LEFT: 37% -> OK || Duty Cycle + RIGHT: 49% OK | VL:92 | VR:79
Duty Cycle + LEFT: 42% -> OK || Duty Cycle + RIGHT: 38% OK | VL:92 | VR:81
Duty Cycle + LEFT: 41% -> OK || Duty Cycle + RIGHT: 21% BAD ! | VL:88 | VR:78
Duty Cycle + LEFT: 36% -> OK || Duty Cycle + RIGHT: 38% OK | VL:89 | VR:82
Duty Cycle + LEFT: 44% -> OK || Duty Cycle + RIGHT: 54% OK | VL:89 | VR:84
Duty Cycle + LEFT: 38% -> OK || Duty Cycle + RIGHT: 37% OK | VL:93 | VR:87
Duty Cycle + LEFT: 40% -> OK || Duty Cycle + RIGHT: 35% OK | VL:94 | VR:85
Duty Cycle + LEFT: 41% -> OK || Duty Cycle + RIGHT: 35% OK | VL:94 | VR:81
Duty Cycle + LEFT: 37% -> OK || Duty Cycle + RIGHT: 45% OK | VL:94 | VR:80
Duty Cycle + LEFT: 43% -> OK || Duty Cycle + RIGHT: 62% OK | VL:92 | VR:78
Duty Cycle + LEFT: 40% -> OK || Duty Cycle + RIGHT: 36% OK | VL:91 | VR:81
Duty Cycle + LEFT: 38% -> OK || Duty Cycle + RIGHT: 36% OK | VL:91 | VR:80
Duty Cycle + LEFT: 39% -> OK || Duty Cycle + RIGHT: 39% OK | VL:91 | VR:85
Duty Cycle + LEFT: 40% -> OK || Duty Cycle + RIGHT: 13% BAD ! | VL:94 | VR:84
Duty Cycle + LEFT: 41% -> OK || Duty Cycle + RIGHT: 26% BAD ! | VL:93 | VR:86
Duty Cycle + LEFT: 43% -> OK || Duty Cycle + RIGHT: 43% OK | VL:93 | VR:81
Duty Cycle + LEFT: 35% -> OK || Duty Cycle + RIGHT: 37% OK | VL:93 | VR:80
Duty Cycle + LEFT: 39% -> OK || Duty Cycle + RIGHT: 11% BAD ! | VL:92 | VR:81
Duty Cycle + LEFT: 38% -> OK || Duty Cycle + RIGHT: 43% OK | VL:92 | VR:79
Duty Cycle + LEFT: 42% -> OK || Duty Cycle + RIGHT: 53% OK | VL:89 | VR:82
Duty Cycle + LEFT: 39% -> OK || Duty Cycle + RIGHT: 43% OK | VL:90 | VR:81
Duty Cycle + LEFT: 41% -> OK || Duty Cycle + RIGHT: 21% BAD ! | VL:89 | VR:81
Duty Cycle + LEFT: 40% -> OK || Duty Cycle + RIGHT: 46% OK | VL:92 | VR:85
Duty Cycle + LEFT: 40% -> OK || Duty Cycle + RIGHT: 43% OK | VL:92 | VR:83
Duty Cycle + LEFT: 37% -> OK || Duty Cycle + RIGHT: 32% OK | VL:95 | VR:80
Duty Cycle + LEFT: 38% -> OK || Duty Cycle + RIGHT: 35% OK | VL:93 | VR:82
Duty Cycle + LEFT: 37% -> OK || Duty Cycle + RIGHT: 40% OK | VL:93 | VR:79
Duty Cycle + LEFT: 42% -> OK || Duty Cycle + RIGHT: 46% OK | VL:88 | VR:81
Duty Cycle + LEFT: 38% -> OK || Duty Cycle + RIGHT: 43% OK | VL:87 | VR:82
Duty Cycle + LEFT: 38% -> OK || Duty Cycle + RIGHT: 55% OK | VL:89 | VR:79
Duty Cycle + LEFT: 42% -> OK || Duty Cycle + RIGHT: 27% BAD ! | VL:92 | VR:84
Duty Cycle + LEFT: 38% -> OK || Duty Cycle + RIGHT: 44% OK | VL:93 | VR:85
Duty Cycle + LEFT: 40% -> OK || Duty Cycle + RIGHT: 35% OK | VL:95 | VR:87
Duty Cycle + LEFT: 42% -> OK || Duty Cycle + RIGHT: 44% OK | VL:94 | VR:81
Duty Cycle + LEFT: 43% -> OK || Duty Cycle + RIGHT: 41% OK | VL:92 | VR:80
Duty Cycle + LEFT: 40% -> OK || Duty Cycle + RIGHT: 35% OK | VL:90 | VR:80
Duty Cycle + LEFT: 40% -> OK || Duty Cycle + RIGHT: 26% BAD ! | VL:90 | VR:81
Duty Cycle + LEFT: 40% -> OK || Duty Cycle + RIGHT: 45% OK | VL:90 | VR:83

[RP6BOOT]

[READY]

SlyD
19.07.2007, 21:25
Ok also im Test sieht es tatsächlich so aus, als wäre der rechte Encoder ein ganz kleines bisschen schlechter eingestellt wie der linke. Kann durchaus daran liegen - wenn ein paar Schritte verloren gehen, würde der rechte Motor ja schneller drehen....
Aber das Programm ist wie gesagt nicht besonders genau und testet das nur ganz grob.

Ich schreibe gerade ein besseres Programm zum Testen der Encoder - aber das dauert noch etwas bis das fertig ist.

Das Einstellen der Encoder ist nicht ganz so einfach. Also erstmal andere Dinge probieren bevor Du Dich da dran machst.
Evtl. kann ich Dir nächste Woche auch eine Vorabversion des besseren Programms zukommen lassen. Aber das kann ich noch nicht genau sagen...


Die anderen Programme funktionieren natürlich trotzdem alle, auch wenn der Bot leicht nach links zieht! Also kannst Du die anderen Beispielprogramme natürlich trotzdem ganz normal ausprobieren bis wir das Problem gelöst haben.





ich hab leider überhaupt keinen Plan was du mit Library meinst. Ich schätze mal das wird ein Programm sein wo alle Befehle die der Robby benutzen kann auch drinstehen, lieg ich da irgendwie richtig?


Naja so in etwa - da sind die "Funktionen" definiert die Du für den RP6 verwenden kannst. Also z.B. move oder setLEDs usw..
Das steht aber auch alles in der Anleitung im Softwareteil.

Ich wollte da eben schon was zu sagen aber die eine Antwort war erstmal lang genug ;)

Was ich zur RP6Library gesagt habe, war eher eine allgemeine Überlegung und nicht direkt auf Deine Frage bezogen!
Hmm - wenn ichs mir recht überlege, wäre es evtl. besser wenn Du die Programmierfragen in einem anderen Thread stellst - z.B. einfach hier dranhängen:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=32142




----------------

> ganz frische Batterien

>> System voltage is:
>> 09.15V

Die Spannung ist daher natürlich auch signifikant höher als bei Akkus
(da sinds normalerweise nur bis maximal 8.5V).

Daran sollte es zwar nicht liegen - aber optimal sind nur Akkus.


MfG,
SlyD

Hartgas
19.07.2007, 21:45
Jau vielen Dank du hast mir echt schon viel weiter geholfen! O:)
Find ich echt klasse das du dir soviel Mühe mit dem neuen Testprogramm machst.
Dann werd ich mich erstmal weiter mit der Programmierung befassen und viele hoffentlich einigermassen "fehlerfreie" Test ablaufen lassen. Ich werd mir demnächst auch mal n paar Akkus zulegen damit das nich so ins Geld geht mit den Batterien.

Vielen Dank und Grüße

Hartgas

ehenkes
23.07.2007, 00:16
Wie ist beim RP6 die Odometrie genau gelöst? Wird bei jedem Tick ein Interrupt ausgelöst, wird gepollt oder wird ein anderes Verfahren eingesetzt?

adrisch
23.07.2007, 12:18
Ich glaub alle 200ms wird die Odometrie abgerufen...

MfG,
Adrian

SlyD
23.07.2007, 12:27
@ehenkes:
Die Encoder Ticks werden über zwei externe Interrupteingänge gezählt.

Und wie adrisch schon sagt, wird die Drehzahl von der Library alle 200ms aktualisiert und dann die Regelungsroutinen aufgerufen.
Der Messwert entspricht also "Encoder Ticks pro 200ms".

MfG,
SlyD

ehenkes
23.07.2007, 18:27
Vielen Dank für die Information! Ich war etwas erstaunt über die hohe Abweichung, denn Nibo fährt hier mit geringerer Abweichung.

SlyD
23.07.2007, 19:55
@ehenkes:
Die Abweichung von Hartgas ist nicht normal!
Habe ich doch schon gesagt!

Das hat nichts mit den Encodern zu tun, wenn die richtig eingestellt sind.


Bei meinem Testbot sinds etwa 10cm nach *etwa* 2m...
Was aber eher an der noch nicht optimalen Regelung liegt!

Man müsste die Regelung noch beschleunigen (z.B. 100ms Interval anstatt der 200ms), die Radgeschwindigkeiten aneinander angleichen und statt von reinen I-Reglern (=sehr langsam), schnellere PI oder PID Regler draus bauen.

---> das kann also noch stark per Software verbessert werden!

MfG,
SlyD


PS:
Du vergleichst sowieso nach wie vor Äpfel mit Birnen. Du kannst einen Differentialantrieb mit zwei Rädern nicht mit einem Raupenantrieb vergleichen!

radbruch
23.07.2007, 20:04
Bei meinem Testbot sinds etwa 10cm nach *etwa* 2m...
Bei meinem 05T07 sind es ca. 10cm auf 3m nach rechts. Auf glatten Fliesen mit dem Demo5. Da die Motoren völlig unabhängig von einander nur drehzahlgeregelt werden, halte ich das auch für normal.

ehenkes
23.07.2007, 20:09
10 cm auf 3 m ist OK.