PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Map building



Maverick83
07.08.2006, 15:02
Hallo Zusammen

Ich hab ein bischen gegoogelt aber nichts gutes gefunden und hoffe ihr könnt mir weiterhelfen.
Ich bau mir einen Roboter auf einem 4x4 Chassis von einem RC Car basierend und bin auf der suche nach Ideen wie sich mein Roboter in der Welt zurecht finden soll.

Unteranderem hatte ich die Idee eine Karte der Umgebung zu erstellen.
Ich dachte mir ich befestige einen Ultraschallsensor auf eine Servo, dann lasse ich die Servo um 180Grad schwenken und bei jeder Position soll der Sensor eine Messung machen und die dann in einem Array abspeichern.

Also z.b Zeilen des Arrays=Servo Position,
Spalten des Arrays = Entfernung.
Dieses Array werte ich dann nach einmal 180Grad aus und fahre dann in die Richtung in die die Entfernung unendlich ist.

Könnt ihr mir nun sagen ob das so geht wie ich es mir vorstelle oder habt ihr eine bessere Idee?
Ich bin um jeden Rat dankbar.

Vielen Dank

Devil
07.08.2006, 15:19
Hi wie wäre es damit

https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=21313&highlight=

das ist sowas kannst die IR-Sensoren auch durch Ultraschall ersetzen.

mfg JAN

pebisoft
08.08.2006, 19:23
du bist ein träumer.
du denkst, du kannst mit einem billigen 30 euro srf04/05 sensor eine karte erstellen und dann drauf losfahren. so einfach geht das nicht. lern erst einmal mit einem steckbrett und einem servo und einem avr-board und einem srf04/05 die 180grad stellungen zu proggen und zu speichern, dann siehst du weiter.

da du anfänger bist, kaufst du dir bestimmt bascom für 89 euro, nämlich in der freewareversion (4kbyte) von bascom kannst du dein projekt nicht verwirklichen.
ausser du proggst in winavr-c, welches freeware ist. ich sagte aber "c".
dabei must du genau das datenblatt des jeweiligen avr kennen, sonst wird es nix in "c".

Bluesmash
08.08.2006, 19:27
sei nicht immer so agrresiv pebisoft schau dir mein aktuelles projekt an "navi bot" ich habe es erfolgreich geschafft eine karte zu erstellen... ist zwar erst im anfangsstadium aber einen gewissen erfolg kann man erkennen... und alles mit BASCOM geproggt!!!! :)

gruss bluesmash

Felix G
08.08.2006, 19:49
Mal davon abgesehen hatte er doch kein Wort darüber verloren welche Programmiersprache er nutzen möchte!?

Nicht alle Anfänger lassen sich von Bascom "verführen". Wobei wir eigentlich noch nichtmal wissen ob man ihn noch als Anfänger bezeichnen kann, bzw. wie gut er sich mit der Programmierung von Mikrocontrollern auskennt. Wir wissen nur, daß er bisher nicht in diesem Forum aktiv war.

Das sind Dinge an die du denken solltest bevor du derart aggressive posts verfasst, pebisoft.

Maverick83
08.08.2006, 20:20
Hallo pebisoft (Robotik Einstein)

Du denkst wohl du hast die Weisheit mit dem Löffel gefressen!

Ich bin nicht gerade ein blutiger Anfänger, meine Avr's Programmiere ich in C und über die Steckbrettphase bin ich schon lange raus.
Ich gebe aber zu es wird mein erstes Projekt sein indem ich einen srf05 verwenden werde.
Deshalb auch meine Frage. Sind Foren nicht da um zu Fragen?



PS: Ich habe auch schon einmal eine Servo von nahem gesehen und Programmiert. Datenblätter kann ich auch lesen.

__________________________________________________ __________

Danke für den Link Devil.
naja 360Grad mit Schleifkontakten ist mir dann doch etwas zu aufwänig, da bleibe ich lieber bei meinen 180Grad.

Was hat es mit den Sharp Sensoren aufsich?
Ich dachte ich nehme lieber einen SFR05 der geht bis 4m als einen Sharp mit nur 1,5m Reichweite. Sind die SFR vielleicht doch nicht so der Hit wie ich dachte?

Thoralf
17.08.2006, 07:18
wenn du mit 3 Schleifkontakten auskommst (5V, ground, Meßsignal) so wie bei IR-Sensoren, kannst du einfach einen Klinkenstecker nehmen. Die großen sind recht stabil. Für US-Sensoren, die ein Triggersignal brauchen, würde ich einen Triggergenerator mit auf den bewegl. Sensorkopf bauen, der den US-Sensor nach jeder Messung neu auslöst. So kann man Kontakte sparen.
Ansonsten einfach einen Controller mit auf den Kopf, der alles mißt und ein serielles Protokoll erzeugt, daß induktiv ausgekoppelt wird. Dann muß man dem Kopf nur die Betriebsspannung zuführen.

hacker
17.08.2006, 11:35
Die Ultraschallmodule haben eine zu weite Pegelöffnung nach vorne. Mit diesen wirst du es kaum schaffen eine angemessene Karte zu erstellen.

Mach doch halt nur 180° aber dafür auf beiden Seiten ein Sensor. Dann hast du mit einer 180° Drehung aber 360° abgedeckt.

Maverick83
18.08.2006, 11:54
Ich denke ich werde es zuerst einmal mit einem IR Sensor von Sharp versuchen, den ich 180 Grad schwenken lasse.
Mein Roboter soll sich ja vorzugsweise nach vorne bewegen.

barbar
18.08.2006, 13:26
Ich denke ich werde es zuerst einmal mit einem IR Sensor von Sharp versuchen, den ich 180 Grad schwenken lasse.
Mein Roboter soll sich ja vorzugsweise nach vorne bewegen.

Hi,

bin gerade beim selben Versuchsaufbau mit US-Sensor.

Habe mit SRF05 und ca. 100° Servo-Schwenkbereich Ergebnisse, die mich zuversichtlich stimmen. Hier die Terminalausgabe von 6 x Schwenken bei (derzeit) 10 Messungen pro Weg mit einer Bierflasche ca. 35 cm voraus (Format "Servoausschlag:Messergebnis in cm", Servoausschlag = 100 = Mittelstellung):

10 Distanzmessungen im 100-grad Schwenk

S=Start, Q=Quit

R:
50:6 60:6 70:90 80:90 90:36 100:36 110:36 120:36 130:60 140:58 150:58
L:
150:6 140:6 130:58 120:58 110:39 100:36 90:36 80:36 70:36 60:90 50:89
R:
50:6 60:6 70:90 80:90 90:36 100:36 110:36 120:36 130:60 140:58 150:58
L:
150:6 140:6 130:58 120:58 110:39 100:36 90:36 80:36 70:36 60:90 50:90
R:
50:6 60:6 70:89 80:90 90:36 100:36 110:36 120:36 130:60 140:58 150:58
L:
150:6 140:6 130:57 120:58 110:39 100:36 90:36 80:36 70:36 60:89 50:90

10 Distanzmessungen im 100-grad Schwenk

S=Start, Q=Quit

Die Bierflasche steht demnach etwa im Bereich 70 bis 110. :-b Bei 50 und 150 werden die Fahrzeugreifen detektiert. Das ganze ist natürlich stark verbesserungsfähig ... z.b. stimmt das Timing nicht (Messzeitpunkt und Servobewegung müssen besser koordiniert werden. Bei R- und L-Bewegung driften die Werte zu sehr auseinander). Jedenfalls wird der Fokus noch genauer ...

Hier der Versuchsaufbau:

Andre_S
18.08.2006, 14:30
Ich denke ich werde es zuerst einmal mit einem IR Sensor von Sharp versuchen, den ich 180 Grad schwenken lasse.
Mein Roboter soll sich ja vorzugsweise nach vorne bewegen.

Hallo,

na ja, für die Erstellung einer Karte bei sich bewegendem Bot muss natürlich noch einiges mehr beachtet werden.
Ich habe auf meinem für die grobe Orientierung einen h/v beweglichen US-Sensor, (vertikal war Quatsch, bringt bloß nach oben was, bei IR ist’s vorn aber super) für die Orientierung, bei der Bewegung auf kürzere Distanzen vorn h/v beweglichen 120cm IR und hinten links und rechts h-bewegliche 80cm IR-Sensoren.
Du benötigst weiterhin einen Kompass und Radencoder, da sich das Fahrzeug innerhalb der gezeichneten Karte ja bewegt, Du musst also im Verhältnis zu Deiner Karte, ziemlich genau die Position und Richtung des Bot kennen, sonst zeichnest Du nach jeder Bewegung immer wieder neu. Sinn ist es aber sich innerhalb der Karte zu bewegen und diese kontinuierlich zu erweitern.
Durch Schlupf der Ketten, Differenzen oder äußere Störungen des Kompass ist es aber notwendig die Karte immer wieder mit neuen Messergebnissen abzugleichen. Hier funktioniert mein System leider noch nicht optimal, deshalb überschreibe ich im Augenblick alte Messwerte von Hindernissen mit den neuen Messreihen, statt Sie ordentlich abzugleichen. Statt Kompass/Encoder kann man sicherlich auch Baken nehmen, fand ich aber für diesen Zweck nicht so optimal.


Gruß André

Maverick83
18.08.2006, 15:11
Ja genau so wie es barbar macht habe ich mir das auch etwa vorgestellt.
Ich brauch keine so genaue Karte, ich möchte auch keine Karte die ich erweitere.
Es soll ganz simpel dazu dienen ein Hindernis zu erkennen um es zu umfahren.

palermo
18.08.2006, 15:20
Hallo
Ich plane gerade mit meinem Crash Bobby auch eine Karten-Funktion. Und wollte auch so ein IR-Sensor-Radar verwenden. Allerdings brauche ich für mein "Radar" noch einen Motor.
Wie ich schon von "Hertzschüler" erfahren habe (Danke) kann ich für meinen Bobby nur einen Gleichstrom Motor verwenden der höchstens 600mA bei 10V zieht, da er nur ein L293 drauf hat (Was dass auch immer heißen mag). Könnt ihr mir einen Motor zeigen der euch für dieses Projekt sinvoll erscheint? Ich blicke bei den ganzen Motoren bei Conrad nicht durch.
Ich hoffe ich nerve euch nicht. :-#

Andre_S
18.08.2006, 15:29
Ja genau so wie es barbar macht habe ich mir das auch etwa vorgestellt.
Ich brauch keine so genaue Karte, ich möchte auch keine Karte die ich erweitere.
Es soll ganz simpel dazu dienen ein Hindernis zu erkennen um es zu umfahren.

Hallo.

Sorry, dachte richtige Karte, da Du "Map building" geschrieben hast...


Gruß André

hacker
18.08.2006, 16:17
Für so ein Scan (Sharp auf Motor) musst du aber, wenn du ein DC Motor verwendest, noch irgendein Geber benutzen, der die genaue Position angibt. Besser ist es, ein Schrittmotor oder ein Servo zu benutzen.

Maverick83
18.08.2006, 16:30
@Andre_s
Das hatte ich auch uhrsprünglich vor aber habe dann gemerkt dass es überflüssig ist.

Ja ich habe es vor mit einer Servo zu realisieren, damit ich auch weis wo mein Sensor hinschaut.
Muss mich nur noch etwas gedulden, bis meine Prüfungen um sind aber es kribbelt schon in den Fingern. ;-)

palermo
18.08.2006, 17:08
Ich habe noch nie mit einem Servo gearbeitet (darum die blöde Frage) aber kann, und wenn ja, in wie großen Schritten kann man die ansteuern? Wie steuert man denn dann die einzelnen Schritte an? In Sekunden? Könnte ich auch einen Servo an die Motor-Plätze vom Crash Bobby klemmen?

Ja, ich weiß dass gehört nicht mehr wirklich zum Thema aber vieleicht bekomme ich ja trotzdem eine Antwort 8-[

Maverick83
18.08.2006, 17:23
Eine Servo steuerst du mit einem PWM SIgnal an, was ein Controller generieren kann.
Jenachdem wie lange das Rechtecksignal des PWM ist (zwischen 1-2ms),fährt die Servo an eine Position und hält diese auch.
Ist das Rechtecksignal z.b 1,5ms lang fährt der Servoarm in die Mittelstellung.

Servos können meistens keine 360Grad Drehungen, die einfachste Lösung ist eine Servo zu "hacken" danach drecht sie um 360Grad.
Ich hab mir ein Bild deines Crash Bobby's angesehen, ich weis nicht wieviel Platz du hast aber eigentlich sollte es gehen. So eine Servo ist nicht besonders gross, vielleicht (1cm,3cm,5cm) etwa, je nach Modell.

Ich hoffe ich konnte dir einwenig helfen, fals du mehr Infos brauchst gibt es das RN-Wissen oder die Suchfunktion. In diesem Forum findest du zu PWM und Servos wirklich alles was das Bastlerherz begehrt. ;-)

palermo
18.08.2006, 18:25
Danke für deine Antwort.
Ich meinte könnte ich auch einen Servo an die Motor-Plätze vom Crash Bobby anschließen? Ich meine wegen diesem Rechtecksignal. Einen Servo zu "hacken" bedeutet ihn aufzuschrauben und die Blockade herauszubrechen, oder?

Maverick83
18.08.2006, 18:42
Ich habe mir den Crash Bobby nicht genau angesehen und weis nicht wie die Motoren angesteuert werden.

Nein, da blockiert nichts. So viel ich gelesen habe ist in einer Servo ein Potentiometer mit dem die genaue Position des Armes bestimmtwerden kann, entfernt man nun das Potentiometer und setzt anstelle dessen ein Spannungsteiler ein drecht sich die Servo wie gewollt.

palermo
18.08.2006, 19:01
Auf dieser Seite:

http://zelos.zeit.de/wissen/robocup/hardware/pdf/schaltplaene/Schaltplan_Controllerboard.pdf

gibt es den Schaltplan. Es wäre sehr nett wenn du mir sagen würdest ob ich einen (eine??? - weiblich???) Servo anschließen kann, da diese meistens halterungen haben und besser zu befestigen sind. Ich bräuchte keine Kabelbinder. \:D/

Maverick83
19.08.2006, 08:39
Ich hab mir den Schaltplan mal angesehen, da ist ja schon ziemlich alles belegt....

ABER du hast vom Controller dem ATmega32 zwei PWM Signale die sind am Pin PD4 und PD5. Du musst also die Leitung die bis jetzt von diesen Ports ab ging ablöten und anstelle die Signalleitung (weisser oder oranger Draht von Servo) des Servos anlöten.
Die anderen 2 Drähte von der Servo verbindest du mit Vcc oder GND, must ein wenig googeln die Farben sind je nach Hersteller unterschiedlich.

Die ganze Motortreiberschaltung,links im Schma, kannst du weglassen.

Natürlich musst du dies 2 Ports dann auch noch als PWM software mässig programmieren.

Herr Duden sagt übrigens:
Ser|vo|mo|tor der; -s, -en: Hilfsmotor zur Betätigung von Steuervorrichtungen (Techn.).

Also der Servo
=D>

RedBaron
19.08.2006, 12:17
Hi,

schaut einmal hier: http://members.home.nl/b.vandam/lonely/pagina40.html

Gruß RedBaron

palermo
19.08.2006, 18:14
Hallo Maverick83
Danke dass du dir die Zeit genommen, und den Schaltplan angeguckt hast. Aber leider ist das Controllerbord doppelt belötet ( oben und unten ) und da weiß ich leider nicht wo was ist. Ausserdem ist alles darauf nur ein viertel so groß wie beim Asuro - selbst wenn ich wüsste wo ich was machen muss würde ich es mir warscheinlich trotzdem nicht zutrauen. Kann man mit dem Signal von den Motor-Ports vielleicht nachträglich noch etwas machen - auf einer Zusatzplatine? Ansonsten muss ich einen Asuro-Motor nehmen und mir einen von den sündhaft teuren Rad-Encodern von Qfix kaufen ( 44€ ) www.qfix.de . Danke für deine Mühe.

Hallo RedBaron
Genauso habe ich mir dass vorgestellt.

PS: Wenn ihr wollt könnt ihr mal nach dem Projekt SOSMAR gucken ( wenn ihr es nicht schon kennt ) ich fand es sehr interesant.

palermo
02.10.2006, 16:11
Hallo Maverick83
Was ist aus deinem Projekt geworden?

Maverick83
02.10.2006, 16:19
Hallo
Ja endlich hab ich etwas Zeit, bin aber im Moment noch nicht soweit. Es soll mal ein Zusatz werden.

noch etwas Geduld