PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Roboter verbessern



tornado
25.03.2006, 19:00
Hallo, vor fast einem Jahr, hatte ich an einem Roboterwettbewerb teilgenommen und bin auf dem 2. Platz gelandet.
Dieses Jahr, wollte ich wenns geht das noch toppen. Aber es gibt dieses JAhr noch mehr Konkurenz...
Ich habe mir mal ein par Ideen gemacht was ich denn verbessern könnte...

Es gibt zwei Prüfungen:
In der einen muss der Roboter so schnell wie möglich aus dem Spielfeld kommen ohne über die Linien zu fahren. Im Spielfeld stehen gleichzeitig bis zu 5 Roboter. Nur die ersten 2 oder 3 kommen in die nächste Runde.
In dieser muss der Roboter dann so schnell wie möglich einer Linie folgen.

Letztes JAhr wurde ich 2. da ich normale Räder hatte und der Gewinner einfach eine CD genommen hatte und ihr Gummie an den Rand geklebt hatte. Dieses JAhr ist das aber verboten und alle müssen mit den selben Reifen fahren.

Ich habe mir dann gedacht, dass ich noch ein kleines Getriebe ans Servo hänge um die Reifen etwas schneller drehen zu lassen. Das würde mir einen Vorteil verschaffen (solange er nicht zu schnell ist und die Sensoren nicht mehr rechtzeitig reagieren)

Zur Strategie:
Die war sehr simpel, dadurch war mein Bot auch der erste der aus dem Spielfeld raus fand (wärend die anderen eine Runde nach der anderen dreten). Es gab sogar Roboter die so lange fuhren bis die Batterien nicht mehr mit machten.

Also, ich habe ihn so programiert, dass er geradeaus fÄhrt und anderen Bots ausweicht. Wenn er eine Linie findet dann folgt er ihr. Wenn dann noch ein anderer Roboter vor ihm steht, ist egal, Augen zu und duch.

Habt ihr Verbesserungsvorschläge fúr dein Bot oder eine bessere Strategie?
Mein Bot hatte 2 Ir Sensoren (Linienerkennung) und 2 Fühler. Ich möchte vieleicht noch einen US Sensor vorne dran machen und noch einen IR Sensor hinten.

Viele Grüsse
Tornado

tornado
26.03.2006, 11:16
Ups! Ich hatte gestern vergessen eine kleine Zweichnung des Spielfeldes hoch zu laden.

HIer ist sie. Die Roboter werden auf die 5 Punkte gestellt (Ausgangsposition).
Danach müssen sie den Ausgang finden.

Die "WÄnde" sind schwarze markierungen auf dem Boden (Klebeband)

HannoHupmann
26.03.2006, 14:11
Das mit der Linie folge mag mir so gut nicht gefallen, da du dann ein richtiges Problem bekommst wenn der Roboter auf die Linie vor dem Ausgang kommt.
Wenn du dein Roboter aufstellen darfst wie du willst dann ist es einfach, sonst wird es echt schwer.
Bei selbst aufstellen: Roboter fahre gerade aus bis du auf die Schwarze Linie triffst dann fahr rehts an der Linie entlang, so wie du das schon vor hattest.

tornado
26.03.2006, 18:53
@HannoHupmann
Genau so hatte ich das letztes Jahr gemacht. Die Startpositionen werden war ausgelost, aber hinstellen kannst du ihn selber. Er war so programiert, dass er geradeaus fährt und merkt ob er erst rechts oder links an die Linie kommt. Dann folgt er der Linie in dieser Richtung.

So war er dann schnell draussen.
Die beiden Kurven an der Linie vor dem Ausgang waren ziemlich eng, und mein Roboter einigermasen schnell. Er wäre in den Kurven geradeaus gefahren und so an die nächste (aussen-) Linie gekommen. Da hätte das PRogramm wieder von vorne angefangen.
Ein Problem wÄre dann aber halt noch immer wenn etwas schief geht und er die ganze Zeit dieser Linie vor dem Ausgang folgen würde... ;-)


Heute ist mir eingefallen:
Was wäre denn wenn ich zwei kleine Lichtschranken und ein Rädchen an beide Räder baue (Wie so ein Encoderrad oder wie die Teile heissen).
Könnte der Roboter so nicht eine Karte zeichnen (er markiert die PUnkte wo er schon war und wo gleichzeitig die Linie auf dem Boden war). Die Karte würde wohl mit zwei von diesen Encoderrädern nicht perfekt werden, aber es würde doch reichen.

So wüsste der Roboter ob er schon mal an dieser Stelle war (das wáre doch gut wenn er an die LInie vom Ausgang langfährt).
Wenn der Bot noch rumkurven wÚrde, wüsste er auch schon wo er nicht mehr hin muss, da dort ja eine Linie ist.
Wie erstellt man so eine Karte?
Man braucht doch eine "Matrix" mit x und y ...
Kann man die in einen PIC speichern? Also ich meine, dass er Roboter wärend der Fahrt ja in die Matrize reinschreiben muss.
Hat jemand einen Tip?

tornado
28.03.2006, 16:05
Hat denn keiner mehr einen Tîp für mich?? :-(

NumberFive
31.03.2006, 07:19
Das mit der Karte möchte ich so ähnlich machen nur halt das die Karte durch die sharps (Enfernungsmesser unter stützt werden soll).

ehrlich gesagt wo war das problem bei deiner strategie ich sehe es im moment nicht .

Gruß

HannoHupmann
31.03.2006, 07:43
Also mit Karte kenn ich mich nicht aus wie man das macht, aber du kannst natürlich mit ner x,y-Map arbeiten. Den Algorithmus entweder selber überlegen oder schauen ob es hier nicht doch schon einen gibt.

Wie lange braucht der schnellste Roboter eigentlich bis er draussen ist?

Was bestimmt auch schnell geht ist, mit ner Kamera drauf, die das Spielfeld überblicken kann (oder zuminderst da halbe) und dann mit hilfe dieser (müsste recht leicht gehen weil es sich deutlich abhebt) die Schwarzen linien erkennt. Jetzt brauchst nur noch nen Algorithmus der sagt: Fahr durch die Lücke der äußeren Linien, überfahre nicht die äußere Linie.
Damit solltest du die Möglichkeit haben direkt rausfahren zu können.
Weis aber nicht ob ne Camera (kann ja ne billige S/W sein, wir wollen ja nicht viel unterscheiden nur Hell und Dunkler streifen). Nur der Algo ist dann nimmer so leicht.

Mfg Hanno Hupmann

tornado
31.03.2006, 16:14
Ja, das mit der Kamera ist glaube ich die besste Lösung, aber ich kenne mich damit noch nicht sogut aus (überhaubt nicht) nächtes Jahr würde cih das aber schon gerne machen.

Das mit der x, y Map ist glaube ich im Moment das beste, aber wie mache ich das?
Encoder rad oder Gabel-Ir-Lichtschranke OK, aber dann? Wie kann der Roboter die Map beschreiben? und lesen?

Das Problem bei der Strategie war nur, das er unter Umständen immer an der einen Trennlienie rumfährt, und so nie raus kommt.
Die Befürchtung ist jetzt wahr geworden...
Heute habe cih eine mail mit den Bedingungen für den Wettbewerb bekommen. Dieses Jahr wird noch ein kleinerere Kreis im grossen Kreis sein, so das wenn der Roboter einfach einer linie folgt (wie letztes Jahr) kann es sein das er halt genau dieser Linie folgt...
Ausserdem kann man den Roboter nicht mehr selber ins Spielfeld setzen, das macht jetzt die Konkurenz!!! Die stellen den auf wie sie gerade lustig sind.
Einfacher wird das nicht ;-)

Wäre nett wenn mir jemand sagen könnte wie man das mit der Map macht (also eine lehre map beschreiben).
Muss ich dafür eine Matrize [900][900] oder sowas in der Art machen?
Viele Grüsse
Tornado

Andun
31.03.2006, 18:29
Also cih würde das jetzt mal rein intuitiv so machen:

Du brauchst eine recht genaue Auflösung der Radencoder. Also du musst relativ genau wissen wo du bist. Dann würde ich wie gesagt eine solche Mateize anlegen. Wie viel Werte, das heißt also acuh welceh Auflösung, muss ermittelt werden.

Dann würde ich für jeden Wert, der ja einen Ort repränsentiert, in dem Moment wo ich mich auf ihm befinde abspeichern in welcher Richtung du gerade einer Linie folgst.

Falls du dann nämlich später wieder auf dem selben Punkt mit gleicher(oder entgegengesetzer) Ausrichtung bist, weißt du: Hier war ich schon.

Andun

NumberFive
01.04.2006, 09:45
Ein feste Map grösse geht einegleich nicht da du nie weißt wie groß das Spielfeld mal wird. das Zweite ist die Daten menge.

Da ich die bediengung für den wettbewerb nicht kenne kann ich die Techinschen möglickeiten auch nicht ein schätzen. was ich mal versuchen will ist zu beschreiben wie ich bei mir die Karte/Map vor habe.

Meine Idee:

meine Welt ist ein Schachbrett mit der Auflösung von 5 x5 cm. ein schachbrett feld hat drei zustände befahrbar,belegt,Unbekannt. Zur besseren darstellung und verständis stelle ich mir das immer mit drei Farben vor Grün,Rot, schwarz.

Das feld wo ich hin gefahren bin markiere ich grün beziehungsweis was ich mit den Sharps ein sehen kann. Durch die Rad encoder weiß ich wie weit ich gefahren bin und auf welchem Feld ich stehe. In deimen fall weiß du wenn du auf ein grünen Feld bist das du hier schon mal warst.

da du nur die Infomation brauchst das du da schon mal warst reicht dir ein Array mit Kordinaten also Pos[MAX_SpielFeld][2].
MAX_Spielfeld ergibt sich durch max(Breite,Länge) / 5cm.
Dann kannst du mit Pos[wert][0] = XPos und Pos[wert][1] = Ypos dir die Postion merken wo du schon mal warst. wert wird immer eins nach oben gezählt wenn du geschrieben hast. Pass auf XPos und YPos können negativ werden da du ja nicht weiß wo der Robi steht. und bei start gehst du einfach von 0,0 aus.

Ich hoffe das hilft dir ein stück weiter und du kannst den gedanken folgen.

Gruß

tornado
01.04.2006, 20:09
Danke fÚr eure hilfe.
Ich werde das erst mal am computer mit zwei selbstgebauten radencodern versuchen. wenn das klapt versuche ich es dann mal am roboter.

ich habe aber noch ein par fragen:

1. du teils das komplette spielfeld in kleine portionen a 5x5cm.Habe
ich das richtig verstaden? das wÚrde mich glaube cih schon
weiterbringen.
2. ein radencoder weis doch nur ob sich ein rad dreht, aber nicht ob
nach vorne oder hinten?
3. brauceh ich einen sharp sensor?
ich dacht, dass cih mit zwei normalen ir sensoren, einen rechts den anderen links, gucke ob da eine linie ist. (die sensoren gucken auf den boden). was macht ein sharp ir? das selbe, oder kann der nach vorne "gucken" (wie eine kamera?).
kann der also zum beispiel sehen das da eine schwarze linie von links kommt und eine kurve macht die nach vorne geht, und das das spielfeld links frei ist, usw.?

Superhirn
01.04.2006, 21:45
ich gib dir einen Tip, wie du die Servos schneller machst:

Einfach 10V statt 5V zur versorung nehmen. Dann sind sie mit CD-reifen Urschnell. Zuschnell. Voriges jahr machte ich das so bei der Robotchallenge.

Die Servos (Graupner Stanadartservos kugelgelagert. hab sie noch von meinen modellfliegern daheim gehabt) drehen aber nach einer zeit unterschiedlich schnell leider. Deshalb würd ich mit radencoder das ganze ausgleichen versuchen sonst hast ein problem und kannst nicht mehr so gut navigieren. Für mich hats auf jeden fall für den 1.platz gereicht. war auch der schnellste im labyrinth. videos auf www.robotchallenge.at

Du kannst 2 radencoder je rad so platzieren, dass sie die richtung auch ausgeben können. google hilft dir dabei.

sharp würd ich empfehlen. ist einfach das beste was ich bis jetzt hatte.

was ist die homepage deines wettbewerbes?

NumberFive
02.04.2006, 09:04
Ja ich teile die ganze welt in 5x5 cm. Später möchte ich dann noch eben einfügen also in 5 cm Höhe und in 10 cm und 15 cm höhe. den es gibt ja hindernisse die man über fahren kann.

sicher weiß der Rad encoder nicht in welche richtung das rad sich dreht obwohl es auch welche gibt die das können. aber du weiß es doch den du schickts ja den strom drauf oder nicht ?

Die Scharps die ich meine sind enfernungs mess sensoren auf IR basis das nutz dir aber nur was um andere Roboter zu erkennen und / oder wenn das Labyrint wände hat. aber so wie ich dich verstanden habe hat euer labyrint keine wände.

der gedanke ist folgender wenn der Sharp nach vorne 30 cm misst dann kann man auch diese felder sofort grün markieren und das in die Karte eintragen. Aber wie gesagt das nützt nur was wenn du wände hast an denen du dich oritieren kannst.

Das Problem bei diesem Verfahren ist halt nur der Speicher den man braucht. und den Speed bei der suche durchs Array das ist bei mir halt nicht so ein problem habe einen ganzen PC dabei.

Auch auf eine fehler bei den System will ich dich auf merksam machen.
Das ganze taugt nix mehr wenn ein rad mal durch gedreht hat warum auch immer.

Gruß

tornado
02.04.2006, 14:22
ICh habe mir die Antworten mal ausgedruckt und in ruhe durchgelesen.

eine sache verstehe ich doch nicht. numerfive, ich kann deinem code doch nicht ganz folgen,
aber die idee mit dem spielfeld teilen gefällt mir.


POS[MAX_Spielfeld][2]
POS [wert][0] und POS [wert][1]


wiso nicht einfach POS[breite/5][lÄnge/5]
POS [x][y]
wenn die position 0.0 frei (f) ist, dann POS [0][0] = 'f' oder
mit einer Zahl--> POS [0][0] = 1
usw.


ich würde gerne wissen ob das so auch geht, oder ob die andere art besser ist.

um schon mal anzufangen will ich erstmal versuchen, dass sich der roboter auf einer matrize
bewegt.das heisst, wie du schon sagtest, fängt er bei den koordinaten 0,0 an.

Wie kann ich messen in welche richtung er fährt und wo er gerade ist?

wenn beide räder gleich schnell drehen, fährt er als nÄchstes entweder auf 0,1 oder auf 0,-1
sobald das encoder rad x umdrehungen gezählt (je nach reifengrösse) hat weis ich, dass ich schon 5cm gefahren bin und so
im nächsten kästchen bin.

Wie kann ich aber eine seitliche bewegung messen. Also das recht rad dreht schneller als das linke. dadurch würde der bot
nach links fahren. wie messe ich jetzt ob der von 0,1 auf -1,1 oder -1, 2 gefahren ist?
ich glaube ich muss dann mal googlen

bevor ich das mit der kartenzeichnung in angriff nehme, will cih erstmal nur zeichnen wo der
roboter gerade lang gefahren ist. dann wird der rest glaube ich auch einfacher.

ach ja, und noch etwas, der roboter ist ja grÖsser als 5cm. seine sensoren werden immer auf zwei verschiedenen feldern
stehen. ist das ein problem bei der berechnung?

richtig numberfive, wände gibt es nicht, es sind nur markierungen am boden

das spielfeld ist ungefáht 2x2m meinst du, dass da der speicher reicht bei 5x5cm?

hier der link zur internetseite:
http://www.dcomg.upv.es/~chernan/gandibot/

NumberFive
05.04.2006, 07:02
Anbei mal eine Vorab ansicht des Textes andem ich zur Zeit arbeite vielleicht kann ich den mit deiner Hilfe Kompletieren.

Vortext:

Die Idee zu einem Kartenmodell im Roboter

Die Welt wird zu einem Schachbrett und wir teilen sie in Quadrate auf.
Die Größe der Quadrate ist eigentlich egal, aber sie ist ein Kompromiß zwischen Speicherbedarf und Genauigkeit. Je kleiner, desto genauer, aber desto mehr Speicher wird benötigt. Hier spielt die Robotergröße und der verwendete Controller und/oder PC eine Rolle.

In meiner Berechnung und den Beispielen gehe ich von 5 cm Quadraten aus.
Die von mir in C programmierten Berechnungen/Darstellungen sind so zu verstehen:

Spielfeld 2 x 2m = 40 x 40 Quadrate = 1600 Werte.

Die Zahl 40 paßt in 1 Byte (0 bis 255 oder alternativ definiert –127 bis +127)
Also reicht das für jeden Punkt auf der Karte selbst wenn der Roboter sehr ungünstig aufgestellt wird.

Beispiel:

http://www.i-do-more.de/mine-robo/images/RoboterSpielFelder.jpg

Wie man in dem oberen Bild sieht, ist die Koordinate immer vom Startpunkt des Roboters abhängig. Daraus ergeben sich folgende Vorgaben:

Die Speicherstruktur muß so groß sein, das die Zahlenwerte sowohl in den positiven, wie auch in den negativen Bereich des Arrays passen. Warum? Wir wissen ja nicht, wo der Roboter startet.

Problem: Da wir nicht wissen wo wir sind, können wir das Array nicht füllen, wenn wir es wie ein Koordinaten-System anlegen. In einer Array-Karte [40][40] finden wir den Punkt ja nicht.
Also definieren wir die Karte anders:
Karte[1600][2]
Jetzt können wir die Karte von jedem Punkt ausgehend füllen.
Der Nachteil ist aber, das der Speicherbedarf so eben mal auf das doppelte ansteigt: satte 3200 Byte für die Karte[1600][2], im Gegensatz zu den 1600 Byte bei der Karte[40][40]

Noch ein Nachteil unserer definition der Karte uns Fehlt die Information über den Punkt. Wir können nur durch das suchen die Aussage treffen das wir schon mal dort waren.

Also müßte die Karte[1600][3] definiert werden, um dieselbe Leistungsfähigkeit zu erhalten. Das wären aber dann schon 4800 Bytes = 4,7 Kbytes.

Aus diesem Dilemma weiß ich zur Zeit auch keinen Ausweg.


Ich finde ein paar Zeilen Code sagen mehr als tausend Worte:




int g_nLastEntry = 0;
BYTE g_Karte[1600][3];


bool WritePos(BYTE X,BYTE Y)
{
for(int pos=0;pos< g_nLastEntry;pos++)
{
if((X = g_Karte[pos][0]) &&(Y = g_Karte[pos][1]))
{
return true;
}
}
g_Karte[g_nLastEntry][0] = X;
g_Karte[g_nLastEntry][1] = Y;
g_Karte[g_nLastEntry][2] = 1;
return false;
}

main()
{
//Fahren
//Poserrechen
if(WritePos)
{
//Hier waren wir schon mal
}
}




Wie kommen wir auf X und Y:

Wir wissen die Drehrichtung des Rades (vorwärts/rückwärts) und welches Rad wie viele Schritte macht (mit Steppern oder mit Rad-Decodern).

Ist in der Zeit (t) die Anzahl der Tick's (Rad-Decoderimpulse oder Schritte des Steppers)
gleich, bewegt der Roboter sich geradeaus. Wenn die Anzahl der Tick's, die 5 cm entsprechen erreicht sind, rechnen wir X+1 oder X-1 jenachdem ob vorwärts oder rückwärts gefahren wird.

Beispiel:
Ein Rad mit dem Durchmesser von 5 cm hat einen Umfang von 15,70 cm. Bei einem Rad-Decoder mit der Teilung 256 entspricht das dann 0,061 cm pro Tick. Dann sollten 82 Tick's ca. 5 cm sein.
Wir brauchen also ein Rad welches den Takt angibt, entweder das Linke oder das Rechte. Je nach Lust und Laune.

Jetzt wird es kompliziert: Die Kurve:

http://www.i-do-more.de/mine-robo/images/Kurve.jpg

Wir gehen von einem Rad-Abstand von 15 cm aus.
Wenn ein Rad steht, ergibt das einen Kreisumfang (Wendekreis) von 94 cm.
Wenn die Räder sich gegenläufig drehen (Drehpunkt liegt dann zwischen den Rädern), haben wir einen Kreisumfang von 47 cm.

Fall 1: Ein Rad steht

Nur das rechte Rad dreht sich um 30 Tick's nach vorne. Das entspricht einer Bewegung auf dem großen Kreis um 1,83 cm.
Also:
Länge Kreisbogen : b = pi* d *(Alpha/360) gesucht wird Alpha
b = 1,83 cm
d= 94 cm
Alpha = ?

b*360
-------- = Alpha
d*pi

Richtig ?

*Ende*

Verstehst du das ?
Das mit der Kurve zu berechen wird nichte ienfach aber ich hoffe das ich es trotzdem irgendwann erklären kann und ich mich nicht ganz täusche

Superhirn
05.04.2006, 13:25
Die kreisbogenformel und Alpha stimmen. aber ich muss dich loben. ist eine gute idee das kartenmodell.

tornado
08.04.2006, 15:07
Ich habe da im Internet noch ein PDF gefunden, auf dem das mit den koordinaten erklärt wird.
wenn ihr wollt schreibe cih die formeln dieses wochenende mal ab und poste die.

dort berechneten sie die position so:
es wird gemessen in welchem winkel der roboter zum spielfeld steht.
danach misst man um wie viel grad sich der roboter gedreht hat, und welche strecke er zurückgelegt hat. so ensteht dann der neue punkt.

die karte in der grÓsse zu erstellen, ist das fúr nen normalesn pic zu gross?
ich glaube fúr den wettbewerb von diesem jahr werde ich etwas anderes machen, aber das mit der karte, und die idee das in kästien zu teilen, das will ich am computer machen. ein halt etwas grösserer roboter. der vorteil ist halt, dass er viel speicherplatz hat.

tornado
08.04.2006, 15:51
Das pdf was ich gefunden habe, mÜsste man sich ganz durchlesen, es nützt glaube ich nicht viel, wenn ich nur einen Teil abschreibe.
googled mal nach einer Datei die Dms.pdf heisst.
oder nach dynamik mobiler systeme. Es handelt sich um einen interressanten text über dieses tema, mit formeln und bildern.

Als, die karte in kleine felder zu teilen ist gut, aber wenn du gerade fährst, einfach x+1 zu rechnen, ist am anfang gut, aber wenn der roboter schon etwas gefahren ist, und auch öffter die richtung gewechselt hat, wird das immer ungenauer.
es ist etwas anderes ob du ganz gerade über ein feld fÁhrst, oder schräg (der weg wird lÄnger).

ich habe mal dein bild kopiert um zu zeigen was ich meine...

in dem pdf wird erklÄrt, wie man das richtig macht.
als erstes werden koordinaten vom spielfeld gemacht und danach weitere koordinaten um zu wissen wie der roboter zum spielfeld steht...

ich glaube so kann man fehler und ungenauigkeit vermeiden

NumberFive
10.04.2006, 06:38
Deswegen ja die gedanken mit der Kurve und klar ist natürlich auch das die Diagonale größer ist als die 5 cm. deswegen muss man ja auch die winkel änderung berücksichtigen.

Mein Versuch und die Gedanken beziehen sich immer darauf das man eben halt nicht die Möglichkeit hat von aussen zu gucken. was vielleicht im Wettbewerb zwar geht aber nicht im "normalen" leben.

Satz vom letzten wettbewerb "meinst du deine Freudin findet es doll wenn man über all in der wohnung cameras auf gestellt sind ?".

Gruß

tornado
11.04.2006, 21:30
*g* der Spruch mit der Freundin war gut

tornado
12.04.2006, 15:57
Um meinen Roboter zu verbessern, abgesehen von der Kartenerstellung, habe ich Heute ein par Zahnräder rausgesucht und noch mit den guten alten Legotechnik Zahnrädern verbunden. Das Ergebnis ist ein schönes Getriebe was den Roboter schneller macht.

Jetzt überlege ich noch das hintere Rad, so eins wie es unter vielen Möbeln gibt, gegen ein anderes umzutaruschen. Vieleicht durch einen Tichtennisball.
wo ich gerade die alte Legokiste rausgesucht habe, vieleicht finde ich da ja auch noch was brauchbares.

NumberFive
13.04.2006, 06:11
Bassiert dein Robi auf dem RCX ?

Wenn ja mit was hast du Programmiert ?

Gruß

tornado
13.04.2006, 10:32
RCX???
Was ist das?
Mein Roboter wird mit einem PIC gesteuert und hat normale Servos.
Programiert habe ich in C++.
gruss

Kampfratte
13.04.2006, 11:13
hmmm von mir ein kleiner tim, wegen der drehung: also als erstes würde ich es mit nem kompass versuchen, somit weißt du immer in welchem winkel zu deinem netz er steht... des weitern würde ich vorschlagen (vll. erst mal nur zum testen) er darf entweder gerade aus fahren oder sich auf der stelle drehen... das erleichtert das ganze erst mal. habe ich das richtig verstanden, du darfst die linien nicht überfahren, als wären sie mauern? sonst hätte ich vorgeschlagen, du färst das komplette feld ab und machst so eine karte... naja ein weiteres problem ist, wenn du keinen kompass hast und keinen bezug zu deinem punkt, was machst du, wenn du gerammt wurdest? woher weißt dann, auf welchem feld du jetzt stehst...
weiterer Trick: wenn du deinen gegner setzen kannst, hast du eventuell glück, weil dann setzt du ihn direkt rückwärts gegen den ausgang. Da er sehr warscheinlich vorwärtsfährt, ist er somit "am weitesten" vom ausgang weg... falls jemand anderes auf diese idee kommt, würde ich vorschlagen, dass du deinen bot so einstellst, dass er hinten auch einen sensor hat und am anfang erst mal rückwärts fährt, bis er an eine linie kommt... und dann von dort aus erst mal anfängt zu kartografieren... du könntest auch mit einem distanzsensor auf nem server erst mal alle abstände zu allen seiten kartografieren... das heißt, du hättest den umriss der "welt" und die gegner musst du irgendwie rausfiltern es sein den du lässt al überraschung den sensor erst mal auf 30cm oder so hochfahren und scannst in einer höhe von 30cm... noch ne idee ist es entweder eine optische maus unten an dem bot an zu bringen um bewegungen fest zu stellen einer hat geschwindigkeiten von 1m/s mit einer optischen maus feststellen können, so könntest du die bewegung ohne radencoder und mühseliges umrechnen rausbekommen. was auch geht, wenn du fit bist mit dem optischen mäusen und ein bischen was von optik verstehst, dann würde ich einen optischen sensor und einen entferungssensor koppeln. Dann würde ich erst mal mithilfe des kompasses mich richtung norden drehen (oder süden oder wie auch immer du willst) und dann danfangen in dem der bot direkt vor seine füße guckt, die entferung misst die optik für die maus anpasst und dann mit der maus schaut, was da is, dann schaut er stück für stück weiter nach vorne, ich glaube ein meter oder so ist gut möglich wobei bei der entsprechenden optik die "gescannte" fläche der maus dann ca 3cm groß wird, ich weiß ja nicht, wie dick die linien werden, ich hoffe mal, dass das ganze ich eben ist, sonst wirds nochmal komplizierter...

naja ein paar anregungen, viel glück...

NumberFive
14.04.2006, 07:03
RCX Ist ein Baustein von lego den man Programmieren kann. War so zu sagen mein erster Microcontroller.

Sie eigendlich exsterne Interligenzen beim wettbewerb erlaubt ?

Zum Thema kompass:
ICh kenne nur Leute die die wieder raus geschmissen haben da das Magnetfeld der Erde viel zu schwach ist als das Magnetfeld der Elektromotoren. Aber vielleicht hast du ja einen Tipp den ich nicht kenne.

gerammt wurdest? bei einem Wettbewerb ist das wohl eher nicht erlaubt ich kann mir das nicht vorstellen. oder ist der kreis ein Kampf area ?

Gruß

Superhirn
14.04.2006, 08:33
gerammt wurdest? bei einem Wettbewerb ist das wohl eher nicht erlaubt ich kann mir das nicht vorstellen. oder ist der kreis ein Kampf area ?

Gruß
rammen ist glaub ich nicht so schlimm. mein Roboter hat sich bei der Robtchallenge06(in Wien) bei einem anderen eingehakt und wir sind zusammen herumgefahren. Es ist jedoch auch so, dass das dsa erst Puckcollect bei der rc war und somit keiner richtig die aufgabe erfüllte.

Die RC war in Wien. www.robotchallenge.at

NumberFive
14.04.2006, 08:39
Also mit meinem drüfte ich eure nicht schubsen das wird teuer für mich *g*

Wir sollten uns an gewöhnen bei rc immer wo das zu zuschreiben es geb nämlich zwei.

Gruß

Kampfratte
16.04.2006, 02:43
ja ich meine wegen dem rammen, es kann ja mal passieren, dass ein roboter auf sowas nicht achtet oder ihr eure ausweichroutinen genau spiegelverkehrt angewandt habt, das heißt, wenn sich eure roboter gegenüberstehen und deiner nach rechts und der andere nach links fährt, dann kann schon passieren, dass ihr euch rammt und dann die ganze koordination über den haufen fliegt und die raster nimmer passen...

Superhirn
16.04.2006, 08:05
Hi,

dass dich wer rammt, kann auf jeden fall passieren. Das ist so. du könntest aber eine Kugel am boden rollen lassen, woe du die geschwindigkeit in JEDE richtung messen kanst un dir so die position errechnen kanst. Die Kugel muss sich natürlich frei in jede richtung bewegen lassen. Ein Hupfball wäre gut, denn der hat gute bodenhaftung und genug gewicht.

NumberFive
17.04.2006, 07:25
was ist den bitte ein "Hupfball" ?

Superhirn
17.04.2006, 07:56
was ist den bitte ein "Hupfball" ?
Ähm. ich dachte ihr kennt dsa Wort. Ein Ball aus Gummi,so groß wie ein Tischtennisball. Und der Hüpft/Springt ganz gut. Hupf ist gaub ich etwas kärnterisch #-o

NumberFive
17.04.2006, 08:28
du meins einen flummi ?

Gruß

Superhirn
17.04.2006, 08:35
ich glaub dass nennt man so.
http://www.ergofit.at/images/Hupfball-gelb.gif
http://images.google.com/images?q=tbn:DGYnpAXKO7sWsM:www.swissmania.ch/images/969-084.jpg

tornado
17.04.2006, 12:00
@kampfratte du hast mir gerade Anregungen fúr meinen nächsten Roboter gegeben. danke

fúr diesen Wettbewerb kann ich den Sharpsensor nicht benutzen da es ja keine Wände gibt, es sind nur Markierrungen am Boden die nicht überfahren werden dúrfen.

Was du sagst mit rúckwärts fahren bis man an eine Linie kommt... ja, ich hatte mir schon vorgestellt, dass wenn der Roboter startet er erstmal eine 90 - 180 Grad Drehung hinlegt.

Das Problem bei einer Positionsbestimmung wie dieser die ihr da nennt ist wenn der Roboter aus irgenteinen Grund hochgehoben und dann woanders wieder hingesetzt wird. Es könnte sein, dass sich roboter verhaken und der Schiedsrichter sie trennt, oder das ein Roboter rausgeschubst wird. Da das verboten ist, könnte es sein das der "geschubste" Roboter wieder reingesetzt wird...
ich glaube, dass man Positionsbestimmung wenn sie so "primitiv" gemacht wird fúr Wettbewerbe vergessen kann.

Das welche ausserdem mit den Kompasmodulen probleme hatten, habe ich hier auch schon öffter gelesen, ist also leider auch keine sehr gute Lösung fúr einen Wettbewerb (zumindest bei einem kleinen Roboter wie meinem).