PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuro Ausweich Projekt



Toschtosch
10.10.2006, 13:45
Hiho leute,
ich häng gerad an einem projekt der schule, wo ich nicht genau weiß wie ich es angehen soll :)

also mein kleiner asuro soll in einem kreis fahren (via radius berechnung) und hindernissen ausweichen, dannach aber wieder auf die ursprüngliche kreisspur zurückkehren, so dass der angegebene radius wieder stimmt. ich weiß nicht wie ich das anstellen soll, soll er sich den gefahrenen "ausweich-weg" merken(?? geht das ??) und dannach in umgekehrter reihenfolge wieder abfahren,sodass er wieder auf alter spur ist oder wie sollte ich das angehen?

thx schon mal für antworten

mfg toschi

ps: hätte noch eine frage : Wenn ich einen radius angebe und er diesen dann im kreis fährt soll er automatisch die beiden räder so einstellen das der radius immer eingehalten wird, ist das möglich?

AVRboy
10.10.2006, 14:46
hi,

nun du kannst denn kreis ja mit schwarzen linien machen und ihn dann mit einem linien sensor auf dem kreis fahren lassen. für die hindernisse könte man zu beispiel ultraschall - oder infrarotentfernungs messer nehmen.

als kleine anregung für denn anfang.

mfg

Toschtosch
10.10.2006, 14:53
naja den kreis sollte er ja allein fahren, indem er die räder nach dem radius einstellt

ich hatte eigentlich an die sensoren vorne gedacht, das die halt das entscheidene signal geben, das er ein stück zurück setzt und drum rum fährt

mfg Toschi

backbone
10.10.2006, 16:07
Finde die Idee super. Falls das Programm mal fertig ist würde ich gerne den Source Code sehen.

Aus dem Radius lässt sich bestimmt irgendwie das verhältnis der Motorgeschwindigkeiten zueinander berechnen.

das ausweichen von gegenständen dürfte da aber etwas schwieriger sein da du dir ja merken musst wie weit rückwärts, rechts vorwärts du gefahren bist (jeweils die Geschwindigkeit mittels der Odometrie berechnen) und dann wieder zum ausganspunkt zurückfinden musst.

du wirst wahrscheinlich nur annähernd zu dem radius zurückkehren können, da ja die Sensoren des Asuros relativ ungenau sind
Es ist ja schon schwer genug die selbe strecke zweimal zu fahren ohne hindernisse:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=23754

AVRboy
10.10.2006, 18:45
aber wenn du denn radius einfach mit der rad einstellung machst dann wird das ganze nach jedem hindernis ungenauer.

wie willst du eigentlich jetzt genau die hindernise entdecken. auserdem frage ich mich wie du das mit der berechnung machen willst.

mfg
__________________________________________________ ______

bin selber anfänger

XProgrammer
01.11.2006, 16:17
ich habe mal ein programm geschrieben das vollautomatisch hindernissen ausweicht ohne sie zu berühren, und das alles mit einem original asuo!!
na ja zumidest fast original denn ich hba die ir dioden und emfänger abgelötet und dann nach vorne gereichtet allerding mit einen kompliezierten abschrimeinrichtun ich such mal das programm und posste es dann dir.

mfg XProgrammer

EDH
02.11.2006, 08:24
Der Radabstand bei asuro beträgt 10 cm.du must dir erst für jedes rad seperat die strecke ausrechnen .(Bei folgendem gehe ich davon aus, das der kreis rechtsrum gefahren wird). dann rechnest du dir die differen aus. als nächstes erechnest du, wiviel prozent, das vom rechten rad sind. diese prozent muss das linke rad mehr fahren.. Hmm, das klingt recht kompliziert, aber ungefähr so lässt sich das dann berechnen. Fragt sich jetzt nur noch, wie man das in eine formel umsetzten kann, die asuro verstehth, und wie sich das dann auch auswerten lässt dire odometrie scheiben sind nämlich eigentlich relativ ungenau. vieleicht lässt sich, einfacher machen, wenn man zu versuchszewcken pi=3 verwendet, allerdings wird der kreis dann sehre ungenau

m.a.r.v.i.n
02.11.2006, 09:05
Hi toschtosch,

Guck dir mal den Thread zum "Haus-des-Nikolaus" Wettbewerbs an.
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=1029

Dort gibt es auch eine Excel Tabelle von sternthaler zur Radberechnung.
https://www.roboternetz.de/phpBB2/download.php?id=6038

Gruß m.a.r.v.i.n

Toschtosch
02.11.2006, 09:20
Der Radabstand bei asuro beträgt 10 cm.du must dir erst für jedes rad seperat die strecke ausrechnen .(Bei folgendem gehe ich davon aus, das der kreis rechtsrum gefahren wird). dann rechnest du dir die differen aus. als nächstes erechnest du, wiviel prozent, das vom rechten rad sind. diese prozent muss das linke rad mehr fahren.. Hmm, das klingt recht kompliziert, aber ungefähr so lässt sich das dann berechnen. Fragt sich jetzt nur noch, wie man das in eine formel umsetzten kann, die asuro verstehth, und wie sich das dann auch auswerten lässt dire odometrie scheiben sind nämlich eigentlich relativ ungenau. vieleicht lässt sich, einfacher machen, wenn man zu versuchszewcken pi=3 verwendet, allerdings wird der kreis dann sehre ungenau

jo, rechnungen etc habe ich schon... siehe thread go() funktion
ich versuch gerad die go funktion in eine art kreis() funktion umzuschreiben, denke mal, das ich damit demnächst fertig sein werde

mfg toschtosch

EDH
02.11.2006, 09:50
Wie sol Asuro eigentlich wieder auf seinen alten weg finden, wenn er einem hinderniss ausgewichen ist. man müsste doch theoretisch eine datenbank mit allen positionsänerungen während dem ausweichen speichern, und diese dann spiegelverkehrt wieder abfahren.
oder denke ich da einfach viel zu kompliziert und es geht auch ganz einfach
mfg EDH

Osser
02.11.2006, 18:34
Also DB im ASURO ist viel zu viel Aufwand. Meines Erachtens nach ist eine simplere Vorgehensweise besser.

Mein Vorschlag: ( rein schematisch )


// INP: R, E
// OUT: --
// Fährt E Bogensegmente mit Radius R
funktion Fahre auf Radius(int R, int E){
.
.
.
}

funktion fahre kreis(int R){

[wenn Hindernis

drehe +90°
fahre 10
drehe -90°
fahre kreis( R + 10 ) // rekursion

drehe -90°
(abweisende schleife) [wenn Hindernis
drehe +90°
fahre kreis( R ) // rekursion
drehe -90°
]

fahre 10
drehe +90°

] sonst [

// Fahre auf dem Radius R, 1 Einheiten
Fahre auf Radius ( R, 1 )
]


}


"1 Einheiten" könnte z.B eine bestimte Anzahl Encoderschritte sein.

Läuft komplett auf dem Stack und findet immer zurück zum Ursprungsradius, da konzentrisch gefahren wird.


O. =;

EDH
02.11.2006, 18:48
so wie ich den code jetzt auf die schnelle interpretiere, fährt asuro bei einem hinderniss vorbei und dreht auf die alte richtung. aber er fährt nicht wieder auf seine alte spur zurück oder??
hab ich da was übersehen? :-k


hindernissen ausweichen, dannach aber wieder auf die ursprüngliche kreisspur zurückkehren

das ist ja wohl der knacküpuikt an dem ganzen.
wenn er auf ein vieleckiges hinderniss stoßen würde, würde er bei deinem code nicht einmal mehr die richtige richtung finden

mfg EDH

Toschtosch
02.11.2006, 19:19
naja diese überlegung hatte ich auch schonmal, das man einfach sagt, fahr 5sekunden gerade aus (also voher drehung) und dann das gleiche umgekehrt...

aber man weiß ja nicht wie groß das hinterniss ist, wenn es z.b. so groß ist, das es großer ist als der asuro in 5sek fährt, bringt einem das rein garnix


mfg toschtosch

stochri
02.11.2006, 21:18
Was mit Hindernis gab's schon mal, hier ein video:
http://www.youtube.com/watch?v=VLMvod0WCMA

aus diesem Thread:
https://www.roboternetz.de/phpBB2/viewtopic.php?t=10806

Gruss,
stochri

Toschtosch
02.11.2006, 21:32
hi storchi,
bei mir geht der youtube link nicht

werd morgen in der berufsschule mal deinen thread durcharbeiten :D

mfg toschtosch

stochri
02.11.2006, 21:37
Bis jetzt habe ich noch nie etwas auf Youtube hochgeladen. Die scheinen immer eine Weile zu brauchen. Jetzt geht es aber.

Gruss,
stochri

Toschtosch
02.11.2006, 21:42
ahh stimmt, jetzt geht es...

cooles movie :D
das ausweichen, hast du das mit festen werten gemacht? also z.b. fahr 2sek nach rechts, dann 2sek gerade aus, dann 2sek nach links ? weil wenn er erstmal wieder die linie hat, is das ja nich so schwer ihn wieder "richtig" fahren zu lassen

mfg toschtosch

Toschtosch
02.11.2006, 21:45
bzw was mir beim 2. mal angucken auffällt, war bringen dir diese kleinen "pfeile" wo er immer die dose hinschieben soll?
bzw hast du auch einen festen wert, den er fahren soll, oder wie weiß er wann er aufhören muss/soll

mfg

Osser
02.11.2006, 21:53
zu EDH's Frage:

Der Algo wird solange ausweichen bis kein Hindernis mehr in Fahrtrichtung (also die Bogenrichtung) vorhanden ist. Danach kehrt er immer auf den ursprünglichen Radius zurück. Es werden sehr wohl auch vieleckige Objekte umfahren und beim abbau der Rekursion wird immer der Urzustand (in dem Fall der Ursprungsradius) wiederhergestellt.


zu Toschtosch's Anmerkung

Die Wegstrecke kontrollierst du einfach mit dem inkrementierenden Faktor, hier einfach mal als 10 angenommen für Radius und Bogenmass. Der Faktor muss natürlich der Kapazität der Sensorik angepasst werden. Kann dein Sensor z.B. alles innerhalb 5cm dedektieren, gilt für den Inkrementor

0 < incrementor < sensor range (z.B. 5cm)

Eine Fahrzeitregulierung (5sec) bringt, wie Du richtig bemerkst, natürlich gar nichts und wird deshalb auch nicht verwendet. Die Werte die im Schema stehen sollen natürlich schritten der Odosensorik entsprechen und nicht etwa einer Zeit.

stochri
03.11.2006, 16:45
bzw was mir beim 2. mal angucken auffällt, war bringen dir diese kleinen "pfeile" wo er immer die dose hinschieben soll?
bzw hast du auch einen festen wert, den er fahren soll, oder wie weiß er wann er aufhören muss/soll

Der entgültige Algorithmus des Wettberwerbs 1.2 ist so geschrieben, dass der ASURO einer Linie folgt bis er auf einen Widerstand trift, so dass seine Drehzahl sinkt. Der ASURO bemerkt die Verringerung der Drehzahl und beginnt das Hindernis zu umfahren und von der anderen Seite zu schieben. Er hat sich gemerkt, an welcher Stelle er auf das Hindernis gestoßen ist und schiebt das Hindernis genau um diese Strecke auf seinen eigenen Startpunkt zurück.
Die Ausführung von waste war optisch etwas schöner, weil er das Hindernis in einem Kreisbogen umfahren hat, anstatt wie ich einem Rechteck.

Toschtosch
03.11.2006, 16:48
hattest du deinen quell code auch veröffentlicht? finde nur den von waste

mfg

stochri
03.11.2006, 16:55
Der muss irgendwo in dem Thread oder in einem Link von dort weg zu finden sein. Die Regeln des Wettbewerbs waren, dass der Quellcode veröffentlicht wird. Die Leute sollen ja was daraus lernen können.

stochri
03.11.2006, 17:00
Der Code ist auf Seite 3 des Threads
https://www.roboternetz.de/phpBB2/viewtopic.php?t=10806
zu finden.

Toschtosch
03.11.2006, 17:00
kk, dann schau ich da heut abend nochmal