PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Asurolympics



muff
11.06.2008, 18:32
Hallo,
wir haben in der Schule den Asuro gebaut. Und nun machen wir einen Wettkampf mit folgenden Disziplienen:
1)Linienvervolgung auf Zeit
2)Distanzfahren (genau 1m)
3)Sprint (3m)
4)Vor- und Zurückfahren (kleinste Distanz zum Startpunkt gewinnt)
5)Viereck fahren (kleinste Distanz zum Startpunkt gewinnt)
6)gegen die Wand fahren (wer berührt ist raus, wer am nächsten dran ist, gewinnt)

zu 3) Sprint. Kann man den Asuro schneller fahren lassen als mit 255???
Gibt es da irgendwelche Tricks, wie man den schneller fahren lassen könnte???

vielen dank


marvin

the_Ghost666
11.06.2008, 20:24
du darfst ihn nur in Software modifizieren, richtig? Du steuerst die Motoren ja über eine H-Brücke an, dh Geschwindigkeit hängt vom PWM-Verhältnis (was mit 255 bereits maximal ist) und der Motorspannung ab.
Also am besten frische Batterien statt Akkus verwenden (5-6V Spannung am Motor) und dann natürlich so gerade wie möglich fahren lassen. Vielleicht noch Teflon an den Tischtennisball oder Silikonspray. Und natürlich möglichst wenig Gewicht mit an Board nehmen (keine Erweiterungsboards).

Ringo
11.06.2008, 21:22
Wäre es vielleicht nicht besser den PWM ganz wegzulassen, den Port als Ausgang zu deklarieren und HIGH zu machen? Ich mein selbst bei 255 ist ja noch "RestPWM" vorhanden..

Gruß
Ringo

the_Ghost666
11.06.2008, 22:53
Nein, eine Änderung würde hier nichts bringen. Es gibt keinen Rest bei PWM von 255, der Zustand wird erst berechnet und dann der Pin geschaltet, keine Änderung und der Pin wird nicht getoggelt.

muff
12.06.2008, 16:23
ich darf alles machen...

damaltor
13.06.2008, 00:38
wenn du alles machen darfst, dann verpass ihm größere räder und stärkere motoren... :P

the_Ghost666
13.06.2008, 00:53
denke auch, Spannungsregler für den Asuro, sodas der stabile 5V bekommt, kleines 7,4V Lipo Akkupack ausm Modellbau (leicht und kräftig) und die motoren gegen stärkere austauschen. Bei bedarf noch die Räder (vor allem die Oberfläche) verbessern und das Getriebe anpassen. *g* Asuro mit 2 Brushless Aussenläufern, man würde das Ding abgehen...

muff
13.06.2008, 14:52
ich habe gerade einen 7,2V 1500maH akku gefunden :D
kann ich den verwenden oder schießt mir da irgendetwas durch?

gruß

marvin

edit: hat von euch vielleicht einer quellcodes für die disziplienen?? Wäre cool, dann bräcuhte ich mich nicht so lange davorsetzen...

Danke schonmal!

marvin

the_Ghost666
13.06.2008, 15:18
jein, also es würde was durchschiessen, weil der asuro maximal 5,5V verträgt (6V akkupack + Diode). Dh du brauchst einen Spannungsregler für die Elektronik, die Endstufe der Motoren muss aber über die Akkuspannung laufen, sonst hat das ja keinen sinn. Dann sollte der Akku so klein und leicht wie möglich sein. Spezifiziert sind die normalen Asuromotoren bis 12V, aber achte auf das Drehmoment und ob die zu warm werden.

muff
13.06.2008, 15:40
jein, also es würde was durchschiessen, weil der asuro maximal 5,5V verträgt (6V akkupack + Diode). Dh du brauchst einen Spannungsregler für die Elektronik, die Endstufe der Motoren muss aber über die Akkuspannung laufen, sonst hat das ja keinen sinn. Dann sollte der Akku so klein und leicht wie möglich sein. Spezifiziert sind die normalen Asuromotoren bis 12V, aber achte auf das Drehmoment und ob die zu warm werden.gut, dann lasse ich den weg.... hat denn jemand gute quellcodes???

gruß

marvin

damaltor
16.06.2008, 02:53
du wirst hier keine quellcodes bekommen. dafür ist das forum auch nicht da.

mach dir gedanken, wie man die probleme angehen könnte, schreibe einen quelltext und teste ihn. wenn es geht - herzlichen glückwunsch, wenn nicht, dann poste ihn hier, und die fehlermeldung bzw das was nicht funktioniert.

jackooo
16.06.2008, 12:23
1 PID Regler
Bei meinem Asuro brauchen die Motoren unterschiedlich Power für den Gleichlauf bzw. Geradeauslauf. Es ist dann relativ mühsam die richtigen Werte der
MotorSpeed(left_speed, right_speed)
Funktion für den Geradeauslauf zu finden. Darüber hinaus ändert sich dieses Verhalten mit schwächer werdender Batterie.

Das motivierte mich, hierzu einen PID Regler zu programmieren.
1.1 Konstantes Zeitintervall

Zuerst habe ich einen PID Regler implementiert für ein konstantes Zeitintervall Ta=150ms (Stellungsalgorithmus Quelle: https://www.roboternetz.de/wissen/in.....lungstechnik#PID-Regler).
//Stellungsalgorithmus für links: e = leftSpeed - l_ticks; //Vergleich l_speed = l_yalt + q0*e + q1*l_ealt + q2*l_ealt2; //Reglergleichung l_ealt2 = l_ealt; l_ealt = e; l_yalt = l_speed;
Dabei habe ich die vierer Odometriescheibe verwendet.
1.1.1 Automatisch Finden der Konstanten q0, q1 und q2

Es war mir zu mühsam die Werte für q0, q1 und q2 per Hand aus zu pingeln. Deshalb habe ich ein Programm für Asuro geschrieben, welches ihn die besten Konstanten selbst heraus finden läßt (trial and error). Als leftSpeed und rightSpeed habe ich 20 Ticks pro Sekunde vorgegeben (das ist langsam). Ich habe keinen Unterschied zwischen links und rechts gemacht. D.h. für beide Seiten habe ich erst mal die gleichen q0, q1 und q2 Werte genutzt. Jeder Fehler vom Vorgabewert (20 Ticks pro Sekunde) wurde registriert, quadriert und über die Zeit summiert. Das Programm ist damit auf der Suche nach q0, q1 und q2 mit dem kleinsten Fehlerquadrat.

Um hier (16Bit integer statt double) klar zu kommen habe ich die Werte für q0, q1 und q2 mit 100 multipliziert. Das mußte ich bei der Anwendung im Code korrigieren:
//Stellungsalgorithmus für links: e = leftSpeed - l_ticks; //Vergleich l_speed = l_yalt + (q0*e + q1*l_ealt + q2*l_ealt2)/100; //Reglergleichung l_ealt2 = l_ealt; l_ealt = e; l_yalt = l_speed;

Nach ca. 20 Minuten rumprobieren wurden schließlich folgende Werte von und für meinen Asuro gefunden:
q0=171
q1=-20
q2=-10

1.2 Variables Zeitintervall

Durch einfaches Umrechnen aus
q0=Kp+Ki*Ta+Kd/Ta
q1=-Kp-2*Kd/Ta
q2=Kd/Ta
ergibt sich dann ein PID Regler für ein variables Zeitintervall Ta.
Kp=-(q1+2*q2) Ki=(q0+q1+q2)/Ta Kd=q2*Ta
Für die q0, q1 und q2 Werte aus 1.1 ergibt sich bei Ta=150ms:
Kp=40
Ki=1 (eigentlich Ki=0.94)
Kd=-1500

Und hier die Zuweisungen von (Kp, Ki, Kd, Ta) -> (q0, q1, q2):
q0=Kp+Ki*Ta+Kd/Ta; q1=-Kp-2*Kd/Ta; q2=Kd/Ta;
Stimmts? Quelle: https://www.roboternetz.de/wissen/in.....gelungstechnik#PID-Regler

Hier ist das Programm asuroAutoPID1.zip.