PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mein Asuro kann einfach nicht alles gleichzeitig ... Ideen?



Andun
03.01.2008, 21:52
Hi

Ich überforde meinen Kleinen schon wieder... Es hat mich heute über 2h gekostet bis ich drauf kam, dass er überfordert ist und ich ihm nicht eine blöde Aufgaben stelle.

Die Idee: Fahre gerade aus bis ich ne Taste drücke und gib mir dann die gefahrene Strecke anhand der Odometrie Werte aus.

Der Code sa in etwa so aus:


EncoderInit()
fahre!
while(1)
taster=Pollswitch;
if(taster) break;
bremse!
Gib encoder[0] aus

Ja, eigentlcih ja ein ziemlich idiotensicheres Programm, aber nach 2m fahren kamen Werte von etwa 10 bis 15 heraus und damit ist eine vernünftige Korrektion der Fahreigenschaften nicht machbar.

Es hat mich 2h gekostet mit vielen kleinen Nebenversuchen drauf zu kommen, dass ich ja mit den ständigen Aufrufen von PollSwitch den ADC-Konverter blockiere und die eigentliche selbstständig im FreeRun Modus laufenden Konvertierungen unterdrücke.

Problem klar?

Des Problems kurze Lösung: Ich lass mir die Encoder-Werte nach 2,5s ausgeben. -> Werte um 480 für encoder[0] bei Tempo 200 in der Luft frei drehend.

Problem langfristig: Ich hab das ganze gebraucht, da ich meinen Asuro einen Parcour nach oben schicke, auf welchem er manchmal anecken kann. Per Tastendruck hab ich das schon abgefangen, aber leider kommt es immer wieder vor, dass er sich so verhakt, dass er sich nicht mehr bewegt, aber auch kein Taster gedrückt ist.
Idee -> Da auch meistens ein Rad dabei blockiert, lässt sich das über die Odometrie erkennen.

Ja, und wie werte ich nun die Odometrie aus während ich ständig auf die Tasten schaue? Hier kommt ihr ins Spiel!!!

Meine Überlegung:
Ich baue in die while(1) eine weitere if(Gettime()>zeit+xyz) ein, so dass ich bei yxz Millisekunden schaue ob eine Taste gedrückt wurde. Dann wird wieder zeit = Gettime() gesetzt und die Schleife läuft weiter.

Sonst läuft er ohne was zu tun durch die while-Schleife durch und darf encoden für die Odometrie.

Irgendwie ist mir nicht sooo wohl bei dem Gedanken, dass der Ausro irgendwas rammt und es erst ein paar Schleifendurchläuft später merkt. Oder meint ihr, dass das "harte" Erkennen von Hindernissen durch die Taster dann eh schon seinen Schaden angerichtet hat und der Asuro steht?

Was habt ihr für Vorschläge für dieses Problem? Wie kann der Asuro alles gleichzeitig schaffen?

Danke

Andun

--- Da ich selbst nicht's passendes über die SuFu gefunden hab, hier mal ein paar Tags, damit man diesen Thread später vielleicht mal besser findet:
Asuro gleichzeitig Odometrie Autoencode encode Tasten PollSwitch[/code]

radbruch
03.01.2008, 22:41
Hallo Andun

Mit der aktuellen Lib und ihren Funktionen kenne ich mich nicht aus, weil ich sie nicht verwende.

Aber die Kollisionserkennung über die Räder kenne ich, und wenn ich zufällig die Nadel im Threadhaufen gefunden habe, ist es dies hier:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=23163

Noch aus vor 2.7er-Lib-Zeiten. Sehr genial was der hochverehrte stochri (https://www.roboternetz.de/phpBB2/profile.php?mode=viewprofile&u=12063) da abgeliefert hat.

Gruß

mic

stochri
04.01.2008, 07:03
Hallo radbruch,


Sehr genial was der hochverehrte stochri da abgeliefert hat.

Sehr vielen Dank für die Lorbeeren O:)

Du hast recht, in diesem Thread habe ich die Methode verwendet. Es hat mich gewundert, dass niemand später das Verfahren mal eingesetzt hat. Im ASURO-Forum taucht ja immer wieder mal die Frage nach einem Kollisionserkennungsprogramm auf und jeder trifft auf das Problem mit den Tastern.

Gruß,
stochri

radbruch
04.01.2008, 08:11
Hallo stochri


Sehr vielen Dank für die Lorbeeren
Als ich vor einem Jahr auch asuro-Neuling war, habt ihr mir u.a. in diesem Thread gezeigt, was der Kleine so alles kann. Das hat mich schwer beeindruckt, ich bin deshalb schon lange dein "Fan":
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=246982#246982

Viele gute Ideen und interessante Lösungsansätze gehen einfach in der Flut der Beiträge verloren. Wenn nicht ab und zu jemand daran erinnert (und es auch wiederfindet) würde das alles im großen RN-Nirwana verschwinden.

Gruß

mic

Andun
04.01.2008, 11:52
Hi

Um nochmal kurz zu meinem Problem zurück zu kommen.... :D

Die verlinkten Threads sind gut, speziell der mit dem "geheimen" Programm von stochri. So etwas will ja genau auch realisieren.

Die Frage ist nun ja aber: Wie kann ich trotzdem noch sinnvoll die Taster abfragen? Es kommt mir ja auch gar nicht darauf an, fest zustellen welcher Taster gedrückt wurde, sondern erstmal ob überhaupt.

Vielleicht einfach nur den Zustand des Ports pollen?

Was meint ihr?

mfg
Andun

damaltor
04.01.2008, 20:17
das kannst du machen. oder du nutzt die interruptsfunktionen der neuen lib. oder du pollst mit pollswitch halt mehrfach...

auch hardware modifikationen haben sich bewährt. meine werte sind zu 99.99% passend, seit ich den kondensator dort weggelassen habe (C6? C7? ich glaube C6).