PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Roboter für Robocup



aqualuk
06.01.2008, 22:06
Hallo

Ich hätte mal eine Frage zum RobocupJunior an die die schon teilgenommen haben:

Und zwar wie macht ihr des mit der Koordination.

Für den Winkel habe ich mir schon was ausgedacht was keinen Kompasssensor benötigt.
Die X-Koordinate ist ja durch eine Graustufung gegeben und lässt sich einfach mit einem Helligkeitssensor bestimmen.
Nur wie bekomme ich die Y-Koordinaten ohne tausende Ultraschallsensoren verwenden zu müssen.


Da der Robocupjunior ja auch schon für Kinder unter 15 ist kann es ja nicht sein, dass da so kompliziert ist.
Da muss es doch irgend einen Trick geben.

Könnt ihr mir helfen?

Mit freundlichen Grüßen
Lukas Probst

robo.fr
07.01.2008, 09:21
Da der Robocupjunior ja auch schon für Kinder unter 15 ist kann es ja nicht sein, dass da so kompliziert ist.

Kinder unter 15 sind manchmal aber schon ganz schön schlau :Ostern

Andun
07.01.2008, 10:30
Wenn du den Winkel kennst, dann musst dir halt Abstandssensoren an die Seite bauen und den nehmen, der eher deinem Winkel senkrecht zur Wand entspricht.

Wenns auch "älter" werden darf, dann kannst du dir den genauen Wert trigonometrisch ja errechnen. Das sollte ja sehr einfach mit dem Sinussatz machbar sein.

mfg
Andun

aqualuk
07.01.2008, 11:18
Ja das mit Trigenometrie ist mir klar.

Ich hatte eine Idee: 4 US-Sensoren immer 90° versetzt mit jeweils einem Trichter von 90°. 360° statt 180° damit ich immer in beide Richtungen testen kann falls der Gegnerische Feldspieler genau neben mir steht und er als Wand erkannt wird. Mit Hilfe des Cosinus hat man dann immer den Abstand zu beiden Seitenwänden. Formeln sind schon lange vorhanden.

Aber ich möchte mit NXT arbeiten und so bräuchte ich pro Roboter 2 NXT, weil einer ja schon für die 4 US-Sensoren draufgeht.

Außerdem wird dadurch eine enorm komplizierte Bluetoothkommunikation nötig.

Und ich kann mir nicht vorstellen, dass das nicht einfacher geht

Superhirn
07.01.2008, 12:52
hi!

weis eigendlich jemand aus erfahrung wie gut ein kompass bei so einem wettbewerb funktioniert?

lg

Andun
07.01.2008, 15:02
Also ich weiß es nicht aus Erfahrung, aber aus genügend Quellen: schlecht.

Bei großen Wettbewerben sind immer haufenweise Kameras, Handys, Laptops, WLANS, BT-Handys, stählerne Messehalledecken und Wände, Starkstromleitungen in der Wand ... ... ...

Also die Liste lässt sich noch weiter fortführen, aber generell sind die Systeme immer sehr stark beansprucht.

mfg
Andun

aqualuk
07.01.2008, 15:10
Zu meinem Problem hat keiner irgend ne tolle Idee?

Superhirn
07.01.2008, 15:57
positionsbestimmung mit den 4 US sensoren ist wohl auch gut. doch wenn man den gegner als wand erkennt, wie soll man dann entscheiden ob man den gegner oder die wan erkannt hat?

was ist eure meineung zu beschleunigungssensoren zusätzlich. man könnte ihre ergebnisse solange sie mit den wandmessungen ähnlich sind synchronisieren und wenn mal die wand was falsches sagt hat man einen behilfswert der ja auch ca 30s-1min stimmen müsste.

aqualuk: lego nxt sind da wohl etwas überfordert ^^ für solche sachen. ich denke du schaffst es sicher einen AVR (zb atmega32) in bascon zu programmieren.
du hast dann viel schnellere codeausführung, weniger kosten...
ich selbst werde avrs auf meinem soccer robo haben.

lg

robo junior
07.01.2008, 16:06
Hi,

hab bis jetzt noch keine richtig tolle Idee beim Robocup gesehen um dieses Problem zu lösen.
Die Beste Möglichkeit ist in meinen Augen der Ultraschallsensor (4, bzw 6 rund um den Roboter). Mit diesen Daten kannst du dann einigermaßen berechnen wo du bist. (die Daten von den Ultraschallsensoren sind aber auch nicht wirklich super, Störungen hast du, da ja noch 3 andere ROboter auf dem Feld sind und nicht nur Banden, außerdem streut der Ultraschallsensor ja seitlich, was dann nah an den Banden auch sehr stört.)
Mit den Bodensensoren und der Grauskala würde ich mal noch ein paar Testmessungen machen. Die Werte waren bei mir auch nicht super (CNY70) und nur zur groben Orientierung geeignet.
Alles in allem würde ich also die Ultraschallensoren benutzen, wobei das natürlich auch ein wenig Rechenaufwand ist.
Benutzt du den NXT? Hat der nicht einen I²C Bus? (kenn mich da nicht so aus) da müssten doch genug Ultraschallsensoren dran gehen und die Trig. Funktionen sollten mit einem ARM ja auch gehen (oder seh ich da was falsch?)
Der Kompass hängt ziemlich von den örtlichen Gegebenheiten ab. Meiner hat letztes Jahr in Magdeburg und Hannover recht gut funktioniert. (Wobei andere Teams auch hier größere Probleme hatten) In Atlanta nicht ganz so toll.
Eine weitere möglichkeit wäre eine stabile Odometrie (Radencoder), was aber bei der Spielweise mittlerweile etwas schwierig werden dürfte (geschoben werden etc.) (gibt's eigentlich mittlerweile neue Regeln? da sollte sich doch angeblich mal was tun?)
Außerdem könnte man eine optische Maus benutzen um den zurückgelegten weg zu ermitteln. (wie genau das ist weiß ich allerdings nicht. wurde von einem Team mal ausprobiert wegen dem ruckeln der Omniräder (unterschiedlicher abstand zum Boden) aber wieder verworfen. ausprobieren könnte man es ja mal, vor allem wenn man mit einem 2-Rad Roboter fährt.

aqualuk
07.01.2008, 18:36
Ich habe vergessen etwas wichtiges zu erwähnen.
Ich programmiere nicht mit der grafischen Standardlegosoftware sondern mit einer alternativen Programmiersprache. Und zwar NXC.

Und unter dieser Programmiersprache sind ein paar Trigonometrieformeln kein Problem. So viel Rechenpower hat er alle mal. Trigenometrieformeln gingen sogar schon beim RCX (Vorgänger vom NXT).

Franzel
09.01.2008, 17:53
mit dem maussensor kommt schon das problem, das man nicht erkennt,ob der roboter sich dreht, also bräuchtest du da schon mindestens 2 und so. rad encodierung kann man vorallem bei einem omni-bot vergessen, da man zwar eigtl nicht mehr schieben darf, aber es doch immer wieder vorkommt, und höchstens beim torschuss gepfiffen wird. wie iwll man bei einem wettbewerb für schüler auch verhindern ,das sich die roboter berühren??? das mit der x-koordinate aus dem bodenwert, kannste eigtl auch vergessn ,weil die unterschiede viel zu gering sind um das zu erkennen. nun wie machen das die leute vom robocup? gerade bei den kleinen primaries(unter 15jährige) spielt mindestens 50% ohne orientierung(einfach auf den ball kloppen und hoffen, das er mal ins richtige tor geht...). dann benutzen viele einen ungenauen erdmagnetfeldsensor(4-8 richtungen), man lässt ein 2-rädrigen roboter ienfach immer irchtung gegnerische hälfte spielen, keien genauen schüsse, höchsten eins bisschen schräg... und dann gibt es noch richtig gute, die mit genauen kompass , und um den sinnvoll einzusetzen braucht man dann ah mehrere ultras(mindestens 2), oder sharpsensoren. jetzt, zu deinem nxt, ich sitze im mom darüber, den cmps03 an den nxt anzuschließen, bis jetzt leider noch erfolgreich, aber den könntest du schonmal einsetzen, und über eine porterweiterung könnte man dann noch genügend ultras anschließen. oder du müsste auch einfach nur richtung gegnerische seite kloppen. das funktioniert bei primary zumindest bei einem sonst einigermaßen guten bot übermäßig gut. in secondary, könnte man damit auch schon recht weit kommen ,aber wohl nicht mehr deutschermeister werden.

aqualuk
09.01.2008, 18:03
Kompasssensoren sind mir zu anfällig. Ich habe ein bessere Methode zum erfassen der Ausrichtung. Die ist jedoch noch nicht weit ausgetestet und wird hier nicht verraten. Hat lange gedauert drauf zu kommen und da könnte unser großer Vorteil beim Wettbewerb werden. Verrate ich also frühestens nach dem Wettbewerb (hoffe das ist ok).

Ich werde es jetzt mit 4 US-Sensoren machen und für den Torwart nur 1 US-Sensor verwenden.

Das mit dem einfach drauf fahren hatte ich auch schon vermutet. Ist aber nicht meine Art. Der Erdmagnetfeldsensor soll die Ausrichtung angeben?

robo junior
09.01.2008, 18:06
@Franzel für einen 2-Rad Roboter kann man ohne Probleme einen Maussensor nehmen (siehe Ct-Bot) darf eben nur nicht auf der Drehachse sitzen und erfordert somit etwas Rechenleistung, wahrscheinlich am besten einen eigenen uC für den Sensor.
beim Omnibot hast du Recht (wobei man das ja durch den Kompass rausrechnen könnte, wie genau das dann wird will ich aber nicht wissen)

Franzel
09.01.2008, 18:10
stimmt, soweit denke ich immer nicht...
1^sensor= der kommt in die mitte ;-)
Allerdingz wäre das trotzdem glaube ich sehr aufwendig, da sich der roboter ja, naja, vllt 50% des spiels dreht(ball-suche/torsuche...) und das dann auszurechnen wäre glaube ich eine riesensache, und zudem müsste da der roboter bei anpfiff nicht auch immer an der gleichen stelle stehen??? oder steh ich grad wieder auf der leitung?

aqualuk
09.01.2008, 18:15
Ja, genau das ist das Problem.

Wenn der Roboter nicht verschoben werden würde, würde ich vielleicht mit Rotationssensoren an den beiden Motoren arbeiten.

robo.fr
09.01.2008, 18:58
Hallo Zusammen,

so wie ich in diesem Thread sehe, scheint ihr schon einige Ahnung mit den Wettbewerben zu haben. Mich würde interessieren, wie ihr programmiert.
Damit meine ich nicht unbedingt, welche Programmiersprache ihr verwendet.
Gibt es ein Standard-Roboter Betriebsystem mit Standard-Routinen für die Sensorabfrage, die Bewegungsmuster, die Positionsbestimmung und ähnliches? Wird ein Multitasking Betriebssystem verwendet?

Gruß,
robo

aqualuk
09.01.2008, 20:41
Die Sprache die ich verwende kann Multitasking.

Es sind schon einige Funktionen zum Ansprechen der Sensoren und Motoren und dem Display vorhanden.

Z.B.:
OnFwd(OUT_A,70); Lässt den Motor am Ausgang A mit 70% der Maximalleistung vorwärts drehen


Funktionen zum gesteuerten Bewegen und zur Positionsbestimmung musst du natürlich selber programmieren.

Genau das ist ja die Aufgabe beim Robocup.

Franzel
09.01.2008, 22:09
@ aqualuk:
klingt mir sehr danach wie wenn du nxc mit bricx programmierst.;-) hab ich recht?

aqualuk
09.01.2008, 22:30
nxc ja
bricx nein

bin Linuxuser
Ich programmier in einem normalen Editor (atm "gedit") und hab meine eigenen kleinen Scripts (hat nicht so lange gedauert die zu schreiben) die das kompilieren und übertragen durch hotkeys zulassen.

robo.fr
10.01.2008, 07:22
Die Sprache die ich verwende kann Multitasking.

Willst Du uns die Sprache verraten, in der Du programmierst?

Und eine Frage an alle:

Wisst Ihr, welche Roboterwettbewerbe dieses Jahr stattfinden?

Gruß,
robo

aqualuk
10.01.2008, 07:44
Habe ich doch in meinem Betrag.
NXC
Das ist eine C-ähnliche Sprache für den NXT.

Franzel
10.01.2008, 16:20
meinste du allgemeine Roboterwettbewerbe oder welche, bei denen du mit deinem NXT teilnehmen kannst?(da wüsste ich bloß Robocupjunior, Robo King, First Lego League, und dann gibt es da noch was mit monatlichen tests, weiß aber den namen leider nicht mehr, vllt is des sogar die ffl)

Superhirn
13.01.2008, 11:28
Hallo.

Wie macht ihr die Hohen Spannungen wie zb 100V für den Kicker? Ich habe mir ausgerechnet das da 28A Strom kurzzeitig fließen. Und ich hab noch nie im Leben eine Ladungspumpe berechnet. Und Augenmaß für 100V mit 28A wird nicht wirklich gehen ^^

Glg

Franzel
13.01.2008, 17:18
also wir schießen nur mit 6-14V. aber wir schiessen auch mit einem motor+hebel. du willst wahrs mit einem magnet-bolzen schiessen, oder? selbst dann solltest du keine 100V brauchen, die hälfte wird auch tun. aber es gibt auch shcon einen thread, bei dem so in der mitte bis anfang beschrieben wird, wie die kondensator-schaltung einer einwegkamera für einen magnetschuss benutzt wird. gib bei der suche ienfach mal robocupjunior ein und nimm den artikel, der im mom etwa 15 seiten hat, da müsste das irgendwo drinnstehn.

lg

Superhirn
13.01.2008, 18:33
Hi

ja ich verwende http://www.roboter-teile.de/Shop/themes/kategorie/detail.php?artikelid=112&kategorieid=32&source=1

nur i lese diesen thread schon seit tagen. immer wieder einen teil. weils so viel ist. und noch nix gefunden.

glg