PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Reinigungsroboter



M!ni M0nk3y
20.09.2007, 16:56
Halli Hallo.

Heute morgen ist mir die Idee mit einem Reinigungsroboter gekommen.
Wollte mir mal ein paar Infos reinholen.
Habe mir folgendes gedacht:

- Kleines Fahrzeug, welches mit Servomotoren (umgebaut) fahren soll.
- 2 Räder die man einzeln ansteuern kann nebeneinander und vorne ein bewegliches, kleines Rad.
- Einen Sensor (IR oder US) der das andotzen an eine Wand oder ein ähnliches Hindernis verhindern soll.
- Steuerung wenn möglich über einen ATMega8 - kenne mich da schon ein ganz wenig mit aus und habe mir auch auchen Programmieradapter dafür gebaut... (wenn das geht - Frage an euch^^)
- Dann soll entweder vorne eine Halterung für ein Swiffertuch oder so angebracht werden (für den ganz groben Staub) oder ein richtigen Sauger (habe hier schonmal was mit so nem Lüfter gelesen: https://www.roboternetz.de/phpBB2/viewtopic.php?t=32932 )

- Erstmal soll er nur geradeaus fahren können und Hindernissen ausweichen können, später dann evtl auch selbstständige Richtungsänderungen (sonst würde er ja immer nur am Rand vom Zimmer fahren)

Wäre gut, wenn mir jemand ein paar Tipps geben könnte z.B.
welchen Sensor und wie man ihn mit dem ATMega koppelt.

Dachte da an sowas wie Sensor gibt ne 1 aus, Fahrzeug fährt dann kurz rückwärts und dann dreht sich nur ein Rad und dann wieder vorwärts, also beide Räder drehen sich wieder.

Und reichen umgebaute Servomotoren für den Antrieb?

Danke schonmal!

MfG,
M!ni M0nk3y

g0nz00
20.09.2007, 17:30
das problem haben auch rasenmäherroboter das sie die wise reutz und quer abfahren. wie man das nun hinbekommt das er nach systhem die wohnung durchquert ist bestimmt sehr interressant.

In dem Elektor Special heft Roboter sind diverse roboter und beispielcodes für hindernisserkennung oder Schleifenverfolgung.

kannst dir nen kupferdraht unter den laminat oder tepich legen dann wird einfacher.... solange keine möbel im weg stehen ^^

g0nz00

M!ni M0nk3y
20.09.2007, 17:41
das soll erstmal nicht das problem sein.

suche erstmal nach infos zum thema sensor und wie er die signale weitergibt. gibt es sensoren die einfach sachen: achtung wand (1) bei x cm abstand oder misst man dann immer die entfernung und muss sagen bei x cm wenden?

das ist eigentlich mein hauptproblem, den rest werden ich schon hinbekommen denke ich. zumindest mal, dass er dann nirgendwo aneckt (auch wenn er dann nur am rand vom zimmer fährt)

dann ist noch die frage wie gut klappt das mit so einem lüfter?
denke dass ich dazu noch ein paar tests machen werde.

also bräucht erstmal nur infos zum thema sensoren und dann könnte es schon fast los gehen denk ich!


//edit:
Achso, außerdem wollte ich noch fragen, wie man genau bei Servo-Hacking vorgeht und was man da falsch machen kann...
Außerdem wie man es dann ansteuert? mit einem dauerhigh? oder immer noch 1-2ms high, 20ms low?

AlKI
20.09.2007, 18:10
Achso, außerdem wollte ich noch fragen, wie man genau bei Servo-Hacking vorgeht und was man da falsch machen kann...
Außerdem wie man es dann ansteuert? mit einem dauerhigh? oder immer noch 1-2ms high, 20ms low?


Nee, einfach motor ausbauen (evtl kabel vom motor zur steuerung also die servoplatine, nicht deine eigene verlängern) und den Servo wie gehabt ansteuern. mit dem Poti kannst du dann einstellen, bei welchem signal der Motor steht, und bei welchem er sich vor-/rückwärts drehen soll.

du hast dann aber nur kontrolle über vor/stillstand/rück. KEINE geschwindigkeitskontrolle.

M!ni M0nk3y
20.09.2007, 18:13
dann muss ich ja immer am poti rumdrehen?!
das soll ja über den ATMega8 laufen...
oder wie ist das gemeint:

mit dem Poti kannst du dann einstellen, bei welchem signal der Motor steht, und bei welchem er sich vor-/rückwärts drehen soll.


geschwindigkeit ist denke ich egal, solang er nicht abgeht wie schmitts-katz ;)

AlKI
20.09.2007, 18:17
nein, ab welchem signalverhältnis er vor/steht/rück macht, quasi zur feinabstimmung, wenn du nicht dauernd dein programm ändern willst, weil dein servo meint, sich noch um 0,01Grad zu drehen zu müssen damit er in der angegebenen stellung steht. Diese 0,01Grad kommen ja nie beim Poti an.

ansteuern geht wie bisher über 1-2ms/20ms

EDIT: 0,01Grad isses garantiert nicht, aber vlt0,5Grad oder so...

M!ni M0nk3y
20.09.2007, 18:25
aber im servogehäuse kann ich ihn dann nicht mehr betreiben oder wie?
wäre nämlich praktischer mit dem gehäuse!!!

AlKI
20.09.2007, 18:30
du kannst das Poti auch einfach kurz ausbauen und kürzen, denn sobald das Poti nicht mehr mitgedreht wird, dreht dein servo "durch", also bis auf immer und ewig, wenn nicht das signal kommt "stelle dich auf die Stelle XY" und das Poti steht an der stelle XY.

wahrscheinlich musst du aber auch noch ein-zwei anschläge an den Zahnrädern entfernen...

M!ni M0nk3y
20.09.2007, 18:35
okay, das war schonmal sehr hilfreich.
hab nur angst, dass mir alle zahnräder entgegenfallen und ich es net mehr zusammen bekomme :-D

naja, jetzt bräuchte ich noch ein paar infos zum thema sensoren!
denke schonmal an alle die mir tipps dazu geben :-)

Lunarman
20.09.2007, 19:12
die messen die Entfernung. Aber eins kann ich dir sagen - das würd nüscht. Du wirst einen Reinigungsroboter nicht auf Servofüße stellen können und du wirst nicht mit einem PC-LÜFTER vernünftig saugen können... kann ich mir nicht vorstellen.
Hab mir grad den Link angeguckt und muss zugeben, an radiallüfter hatte ich nicht gedacht, trotzdem würd ich andere Motren verwenden... ist wohl zu schwach. Viel Glück noch!

MfG
Lunarman

M!ni M0nk3y
20.09.2007, 20:31
Viel Glück noch!

... hört sich so an wie, mach mal du schwachkopf.
sorry, aber ich denke ich frage hier nach um verbesserungen zu bekommen, also wenns bessere ideeen gibt und erfahrungen, nehme ich tipps doch gerne an.
an die servos sollten lego-reifen.
müsste doch eigentlich reichen...
und das mit dem pc lüfter scheint ja einigermaßen zu klappen, wie man in dem verlinkten thread sieht.

Felix.
20.09.2007, 21:29
vllt sollte auch mal erwähnt werden, dass servos nicht für dauerbetrieb gebaut sind und durch dauerbetrieb bzw besonders durch hacken relativ schnell den geist aufgeben. also auf lange sicht keine gute lösung.

Lunarman
21.09.2007, 13:39
Jep, da muss ich zustimmen... meistens halten die nicht sehr lange, wenn die so gefoltert werden. Und was das viel Glück noch angeht: Könnte es sein, dass du noch nicht viel gebaut hast? Da spielt Glück nämlich auch ne unwahrscheinlich große Rolle... ständig steht man vor der Wand und weiß nicht weiter. Deswegen habe ich dir viel Glück gewünscht, damit du schneller auf lösungen kommst... fühl dich nicht gleich so angegriffen.

Tipp: Such bei Conrad mal nach RB:35 Motoren und guck die dir an... könnte ne gute Alternative sein, benötigen aber 12 Volt.

AlKI
21.09.2007, 20:13
Also zu den Sensoren: Ich würde an deiner Stelle Bumper (also Taster) benützen. auf die vlt noch n kleines Schaumstoffstückchen kleben, damit du deine Wände/ Sockelleisten/Möbel nicht verkratzt...

M!ni M0nk3y
21.09.2007, 20:28
zu den servomotoren.
im modellbau müssen sie doch ständig richtungsänderungen mitmachen, dann dürfte doch einfaches drehen kein problem für die sein oder? naja zumindest für einen prototyp werde ich sie wohl als antrieb verwenden.

zu den sensoren.
würde schon gerne IR oder US nehmen, weil sonst das gefährt ja immer erst den gegenstand berühren muss und wenn es an eine ecke kommt, wo der taste gerade nicht betätigt wird, weil er die ecke nicht trifft fährt er sich ja fest...
gibt es keine IR oder US sensoren die ab einem bestimmten abstand einfach nur "1" ausgeben?

mfg
m!ni m0nk3y

AlKI
21.09.2007, 20:37
gibt es keine IR oder US sensoren die ab einem bestimmten abstand einfach nur "1" ausgeben?

sowas will keiner auser dir, darum glaub ich nicht, dasses sowas gibt.
Wenn du an die Bumper lange (schmale)Platten/Drähte horizontal dranmachst, dann gibt es keinen Punkt, wo dein Robby ein Hindernis nicht erkennt.


Bei Motoren in Servos isses so gedacht, dass die nur den Servo stellen, und dann aus sind, bis der Servo verdreht wird, oder ein anderes Signal kommt. Der Servo wird , wenn er einmal gestellt ist, durch die Reibung im Getriebe gehalten, der motor muss nur bei größerer Belastung nochmal nachhelfen. Du kannst es aber gerne probieren.

Ich hab mal aus 2 Conrad Servos für 4,95 den Motor rausgelegt, also ausgelötet und mit Kabeln wieder angelötet. bei denen kannst du auch nicht so viel Geld kaputt machen.

M!ni M0nk3y
21.09.2007, 21:00
wie könnte man das ganze denn sonst mit sensoren und nem atmega8 lösen?
mir gefällt das mit dem taster nicht so ganz.
nunja, nächste woche werde ich mal anfangen bisschen was zusammenzubauen und zu testen.
dankeschön schonmal für die beantworteten fragen an alle...

recycle
22.09.2007, 04:15
wie könnte man das ganze denn sonst mit sensoren und nem atmega8 lösen?
mir gefällt das mit dem taster nicht so ganz.

Ein ATMega8 hat auch analoge Eingänge, d.h. du musst nicht unbedingt Sensoren verwenden die nur 0 und 1 ausgeben.

Einen ganz simplen Abstandssensor kannst du dir aus einer IR-Diode, einem IR-Transistor und zwei Widerständen basteln.
Das Ding unten in Bild1 misst so den z.B. den Abstand zum Boden und schafft es immerhin eine kurze Zeitlang nicht umzukippen.
Der Sensor ist zwar empfindlich gegen Fremdlicht, aber wenn du ihn ein bischen gegen Fremdlicht abschirmst geht es eigentlich. Die vier benötigten Bauteile kosten nichtmals 1 Euro, d.h. wenn es nicht klappt treibt dich das wahrscheinlich auch nicht gleich in den Ruin ;-)

Wenn du die analogen Ports an deinem Controller für was anderes nutzen willst, kannst du den Sensor auch digitalisieren, indem du da einen Schmitt-Trigger für knapp 50 Cent vorschaltest.
Das habe ich mal bei dem Ding in Bild2 probiert. Um nicht frontal vor die Wand zu fahren reicht es.

Einen besseren Sensor der nicht empfindlich gegen Fremdlicht ist, kannst du dir mit dem IS471 und ein paar weiteren Bauteilen basteln: http://alt.kreatives-chaos.com/index.php?seite=is471


Statt gehackten Servos könntest du für den Antrieb auch mal das Twin Motoren Set von http://www.robotikhardware.de ansehen. Das ist unter dem Ding in Bild 2 auch drunter.
Ist nicht soviel teurer als 2 billige Servos ich glaube auf Dauer hast du da aber etwas mehr Spass dran. Ist etwas leiser, schneller und kräftiger als zwei billige gehackte Servos.

M!ni M0nk3y
22.09.2007, 09:07
das motor twin set hört sich gut an.
wollte mir dann alle bauteile bei robotikhardware kaufen, aber ein atmega8 kostet da ganze 4 €... bie reichelt kostet er nur 1,85€
gibts bei einem solchen bauteil auch qualitätsunterschiede oder woher kommt die hohe differenz?

und wie genau funktioniert das mit der IR-diode und dem IR-Transistor.
die müssen doch gegenüberliegen und wenn licht an die diode kommt, schaltet sie durch, oder?
wie verhindert das also das andotzen an eine wand?

AlKI
22.09.2007, 13:17
und wie genau funktioniert das mit der IR-diode und dem IR-Transistor.
die müssen doch gegenüberliegen und wenn licht an die diode kommt, schaltet sie durch, oder?


das ist ähnlich einer Gabellichtschranke: Die IR-LED strahlt die Wand an und die Wand streut dann das Licht. Das gestreute Licht kommt dann auf den (IR-)Fototransistor und der Schaltet durch. Logisch "1" bedeutet dann "Wand in Sicht!".

Ist keine Wand da, wird kein licht (zurück auf den Fototransistor) gestreut, der fototransistor schaltet nicht durch. Logisch "0" bedeutet "keine Wand in Sicht!".

]kleine Spielerei] Willst du logisch "0" / "1" anderstrum haben, musst du die sonst am Fototransistor-Ausgang als Pull-down-Widerstände genutzten Widerstände eben als Pull up Widerstände am anderen Ausgang nutzen. [/kleine Spielerei]

M!ni M0nk3y
22.09.2007, 16:29
naja, dann werde ich mir das mal versuchen aufzubauen, muss dann allerdings noch bauteile bestellen.
wenn es reicht, um nicht gegen eine wand zu fahren, sollte das mit etwas lichtabschirmung okay sein, denke ich!
vielleicht ist auch was bei mir in der ausbildung zu bekommen, muss ich mal schauen.
werde mir auch das twin motoren-set mit rädern kaufen.
und dann kanns auch schon losgehen.

vielen dank für alle tipps.
werde in paar wochen dann die ersten testberichte einstellen (auch wenns völlig schiefgeht)

Lunarman
22.09.2007, 19:02
Mit dem Twinmotorenset war ich persönlich unzufrieden... war mir viel zu laut, zu klein und zu schwach und zu langsam... muss aber jeder selber wissen.
MfG
Lunarman

M!ni M0nk3y
23.09.2007, 00:29
bin auch nur den tipps der anderen gefolgt.
was würdest du denn empfehlen.
also lautstärke ist egal und langsam müssen sie in meinem fall ja auch sein.
nehme gerne noch bessere tipss an, aber bald will ich bestellen!

recycle
23.09.2007, 00:54
@M!ni M0nk3y


wollte mir dann alle bauteile bei robotikhardware kaufen, aber ein atmega8 kostet da ganze 4 €... bie reichelt kostet er nur 1,85€
gibts bei einem solchen bauteil auch qualitätsunterschiede oder woher kommt die hohe differenz?

Ein ATMega8 ist ein ATMega8, egal bei wem du ihn kaufst, er ist immer vom selben Hersteller.
Der Preisunterschied kommt daher, dass Reichelt ein Elektronik-Grosshändler ist und Robotikhardware ein kleiner auf Roboterbasteleien spezialisierter Webshop, der die Bauteile selber bei Reichelt und anderen Händlern einkaufen muss.



und wie genau funktioniert das mit der IR-diode und dem IR-Transistor.
die müssen doch gegenüberliegen und wenn licht an die diode kommt, schaltet sie durch, oder?
wie verhindert das also das andotzen an eine wand?

Das funktioniert fast so, wie AlKI es dir beschrieben hat, mit einem kleinen Unterschied. Wenn du den Sensor nur mit IR-LED, IR-Transistor und Widerständen aufbaust, liefert der Sensor nicht 0 und 1, sondern eine analoge Spannung. Deren Höhe hängt davon ab, wieviel Strom der IR-Transsistor durchlässt und das hängt davon ab, wieviel Licht er abbekommt.
D.h. du müsst den Sensor an einen Analog-Eingang deines ATMega8 anschliessen. Damit kannst du dann einen Wert zwischen 0 und 1023 einlesen und dieser Wert sagt dir wieviel Licht dein IR-Transsistor abbekommt. D.h. du kannst im Prinzip nicht nur messen ob ein Hindernis da ist, sondern auch wie weit es weg ist.
Letzteres funktioniert aber nur begrenzt gut, da unterschiedliche Farben unterschiedlich viel Licht reflektieren. Eine schwarze Fläche reflektiert kein oder nur sehr wenig Licht, eine weisse ziemlich viel.
D.h. wenn du z.B. überall gleichmässig weisse Fussleisten hast, kannst du über den Sensor auslesen wie weit dein Robby davon weg ist.
Wenn es Hindernisse mit verschiedenen Farben gibt, klappt das nicht mehr. Dazu kommt dann noch, dass der Sensor keine besonders grosse Reichweite hat, dein Robby die Hindernisse also immer erst kurz vorher bemerken wird.
Da reichts dann eigentlich zu wissen dass ein Hindernis da ist. Ob es 2 oder 3 cm weit weg ist dürfte dir vermtlich egal sein.

Daher könnte es Sinn machen den Sensor zu digitaliseren, damit er nur noch 1 und 0 ausgibt. Eine Möglichkeit das zu machen ist den Sensor an einen Schmitt-Trigger anzuschliessen. Wenn du den Schmitt-Trigger dann an einen Pin deines ATmega anschliesst, kannst du damit eine 1 oder eine 0 einlesen - je nachdem ob ein Hindernis da ist oder nicht.



naja, dann werde ich mir das mal versuchen aufzubauen, muss dann allerdings noch bauteile bestellen.
wenn es reicht, um nicht gegen eine wand zu fahren, sollte das mit etwas lichtabschirmung okay sein, denke ich!

Vor den IR-Transisor kommt ein Widerstand und von der grösse dieses Widerstands hängt es ab, wie empfindlich er ist.
Am besten kaufst du dir ein paar Widerstandswerte zwischen 10k und 200k und probierst ein bischen rum.

M!ni M0nk3y
23.09.2007, 10:00
an widerständen soll es nicht scheitern, davon habe ich genug auf lager.
nur eine kleine zusammenfassung zum schmitt-trigger zum verständnis, bitte korregiert mich, wenn ich falsch liege!
das hatten wir letztens erst in der ausbildung im grundlehrgang digitaltechnik.
es ist doch richtig, dass er aus z.B. einer Sinusform eine Rechteckform macht. Bei einer bestimmten Spannung bei positiver Flanke sagt er 1 und bei einer negativen ab nem bestimmten Punkt 0.
Dazu eine Frage. Gibt es verschiedene Schmitt-Trigger, die dabei unterschiedliche Werte haben (also wann sie durchschalten)?
ansonsten kommt der einfach an den ausgang des transistors und dann in einen digitalen eingang des atmega8?

PS: das twinmotorset mit rädern werde ich heute bestellen ;-)

//edit:
welche IR-Diode würdet ihr empfehlen, diese: http://www.reichelt.de/?;ACTION=3;LA=4;GROUP=A54;GROUPID=3045;ARTICLE=605 91;START=0;SORT=order_col_artnr_besch;OFFSET=16;SI D=294VKMy6wQAR0AAGxg5iQf5463e61129e03165d5861bc432 d3418
oder diese: http://www.reichelt.de/?;ACTION=3;LA=4;GROUP=A54;GROUPID=3045;ARTICLE=605 92;START=0;SORT=order_col_artnr_besch;OFFSET=16;SI D=294VKMy6wQAR0AAGxg5iQf5463e61129e03165d5861bc432 d3418 ?

und vorallem welcher transistor, bei reichelt finde ich sehr viele, weiß jedoch nocht welcher geeignet ist?!
nimmt man da einen fototransistor oder muss man da speziell mit IR was beachten?
ist der in ordnung: http://www.reichelt.de/?;ACTION=3;LA=4;GROUP=A54;GROUPID=3045;ARTICLE=580 0;START=0;SORT=order_col_artnr_besch;OFFSET=16;SID =294VKMy6wQAR0AAGxg5iQf5463e61129e03165d5861bc432d 3418 ?

mausi_mick
24.09.2007, 10:25
Twinmotor sehr laut, solltest mal unter Saugroboter "robertina" suchen,
laeuft mit Atmega 8, IR-Sensoren und Rad-Encodern, leisem Antrieb und Super Radialluefter.

Verbesserte Version mit Lipo Akku und Faulhaber Getriebemotor und Motorstromsensoren in Arbeit (wiegt dann vermutlich unter 500 g).
Weitere Inos erst ab 04.10, da z.Z. in Urlaub

M!ni M0nk3y
24.09.2007, 15:46
zu robertina, das ist ja der thread, den ich im ersten beitrag verlinkt habe!
werde mir jetzt die tage das motorenset kaufen, laustärke spielt absolut keine rolle und den radiallüfter werde ich von rs components beziehen.
über akku mach ich mir gedanken, wenn es mit netzteil läuft...
bräuchte halt nur noch infos zu den oben genannten bauteilen,
bin für jeden beitrag dankbar!

-chris-
02.10.2007, 21:44
Hi!

also ich würd Dir zu einem der Sharp Sensoren raten, z.B. dem GP2Y0A02YK. Der gibt Dir analog den Abstand zum nächsten Hindernis aus und Du kannst dann einfach flexibler damit arbeiten (kostet halt über 10 Euro).

Falls Du Servos hacken willst wäre meine Empfehlung glaub ich eher, das Poti ganz rauszunehmen und als Motortreiber eine H-Brücke zu verwenden. Der Servo kann trotzdem im Gehäuse bleiben und ich glaube du kannst dann über nen PWM auch die Geschwindigkeit der Räder regeln.

Zu den Motoren schau doch vielleicht auch mal bei http://www.pollin.de/shop/shop.php vorbei. Unter Motoren->DC Getriebemotoren gibt es bestimmt auch was verwendbares.

Als Controller würd ich Dir raten direkt den ATMEGA16 zu verbauen - die 8kb sind dann doch schneller voll als man denkt, und der MEGA16 ist pinkompatibel zum MEGA32, wenn Du dann mal noch weiter aufrüsten willst (auch was I7O angeht) hast Du es leichter.

Zur Hindernisvermeidung hab ich mal was nettes in ner Vorlesung gehabt und auch damals in nem kleinen Bot eingesetzt: Zwei Verhalten programmieren, die parallel laufen:
1. Je näher ein Hindernis kommt, desto langsamer wird die Vorwärtsgeschwindigkeit
2. Je näher ein Hindernis kommt, desto größer wird die Geschwindigkeitsdifferenz der beiden Motoren (Kurve fahren)
beides Zusammen gibt richtig schickes Ausweichverhalten. Später kann man sich dann noch Gedanken um die Richtung der Kurve machen.

Viel Glück :P und vor allem viel Spaß wünscht

Chris

Lunarman
03.10.2007, 08:45
Chris, du bist echt doof! Genau das Ausweichverhalten hatte ich mir auch shcon ausgedacht, nur noch nicht getestet... was lernen wir daraus? Gedanken patentieren ^^

recycle
03.10.2007, 16:00
Chris, du bist echt doof! Genau das Ausweichverhalten hatte ich mir auch shcon ausgedacht, nur noch nicht getestet... was lernen wir daraus? Gedanken patentieren

Genial!
Auf dieses Ausweichverhalten ist - mal abgesehen von so ungefähr jedem Lebewesen das sich aus eigener Kraft vorwärts bewegen kann - garantiert noch niemand gekommen ;-)

Lunarman
03.10.2007, 16:11
Aber ich hab noch nirgendswo gesehen das es irgendwo stand ^^
außerdem war da durchaus auch sarkasmus drin...

-chris-
03.10.2007, 18:04
Genial!
Auf dieses Ausweichverhalten ist - mal abgesehen von so ungefähr jedem Lebewesen das sich aus eigener Kraft vorwärts bewegen kann - garantiert noch niemand gekommen ;-)

Ha - dann nenn mir aber mal ein Lebewesen *g*
Ich würde eher sagen, bei intelligenteren Lebewesen wie Menschen, Hunden etc beobachtet man Wegplanungsverhalten, sprich Hindernisse wahrnehmen, kürzesten Weg (Tangenten) um die Hindernisse herum erkennen und in normalem Tempo laufen. Bei nicht so intelligenten Lebewesen wie Schaben zB. seh ich oft geradeausgehen, langsamer werden, Hindernis inspizieren, Richtung wechseln, am Hindernis entlang weiterlaufen. Aber hab wirklich noch kein Vieh gesehen, was oben beschriebenes Verhalten verwenden würde...

Lunarman
03.10.2007, 18:59
Wenn recycle das so macht ^^ der geht auf ne Wand zu, und je näher er kommt, desto höher wird sein Abknickwinkel und desto langsamer wird er xD*Looool*

Yossarian
03.10.2007, 19:16
Hallo

sprich Hindernisse wahrnehmen, kürzesten Weg (Tangenten) um die Hindernisse herum erkennen

Das ist auch die Lösung , die hier angestrebt wird.
Wie genau das wird, hängt davon ab, wieviel und welche Sensoren dem Roboter spendiert und welche Algorhythmen programmiert werden.
Weiterhin sollte er die entsprechenden Freiheitsgrade in der Bewegung haben.
Mit freundlichen Grüßen
Benno

recycle
03.10.2007, 21:18
Ha - dann nenn mir aber mal ein Lebewesen *g*


Das Ausweichverhalten ist in deinen Beispielen dasselbe Hindernis erkennen - Tempo anpassen - Richtung ändern.

Ob und wie sehr das Tempo reduziert wird, hängt zu einem grossen Teil von der aktuellen Geschwindigkeit und der Reichweite der Sensoren ab.
Bei sehr schlechter Sicht wird deine Ausweichroute auch eher der der Schabe als der des Menschen oder Hundes ähneln.

Dieses Verhalten willst du für die Robotersteuerung ja sogar ausdrücklich nachbilden: "1. Je näher ein Hindernis kommt, desto langsamer wird die Vorwärtsgeschwindigkeit"

Wenn ein Mensch - vorausgesetzt er erkennt das Hindernis früh genug - ein intelligente Abkürzung einschlägt oder eine Schabe ein Hindernis erst inspitziert, würde ich das nicht auf ein anderes Ausweichverhalten, sondern auf die Kombination verschiedener Verhaltensmuster und Interessen zurückführen. Diese Fähigkeit haben ja viele Lebewesen.

Davon abgesehen bezog sich mein Kommantar auf den Beitrag von Lunarman und nicht auf deinen.

Dein Vorschlag und die Beschreibung wie man das Ausweichen vor Hindernissen bei einem Roboter umsetzen kann ist ja gut - gerade weil diese Umsetzung ein altbewährtes Ausweichverhalten nachbildet.

-chris-
03.10.2007, 21:33
jo, hast schon recht, die schabe bildet sozusagen genau das verhalten ab, wenn man eine sehr kurze sensorsicht annimmt. nur das vom mensch, das ist eher eine wegplanung als ein reines ausweichverhalten, welche übrigens wesentlich schwieriger zu programmieren ist, weil das yossarian ja noch vorgeschlagen hatte...

recycle
03.10.2007, 22:04
@Lunarman


Wenn recycle das so macht ^^ der geht auf ne Wand zu, und je näher er kommt, desto höher wird sein Abknickwinkel und desto langsamer wird er xD*Looool*

Ich kann mir eigentlich kaum vorstellen, dass du noch nie die Erfahrung gemacht hast, dass man aus der Kurve fliegt, wenn man sie zu schnell nimmt.

Wenn man etwas schneller unterwegs ist, z.B. mit dem Auto und plötzlich ein Hindernis entdeckt, macht es durchaus Sinn, die Geschwindigkeit zu reduzieren und den Lenker nicht gleich voll rumzureissen sondern erst mit abnehmender Geschwindigkeit stärker einzulenken.

Zu Fuss macht man das eigentlich nicht anders, aus dem normalen Gang im 90 Grad Winkel abbiegen kannst du sicher auch nicht.
Da bremst du auch ab und läufst eine kleine Kurve und während du das machst kommst du dem Hindernis zwangsläufig näher.


Wenn du in 100m Entfernung siehst, dass ein LKW die Strasse versperrt, deswegen abbiegst, die Abkürzung durch den Park nimmst und unterwegs noch kurz beim Bäcker reinspringst, weichst du zwar auch einem Hindernis aus, mit dem Thema hier hat das aber trotzdem wenig zu tun ;-)

Lunarman
04.10.2007, 11:36
Hmm. Shit. Also da hast du Recht ^^ aber ich glaube nicht, dass du so läufst.
Außerdem sehen die meisten Ausweichverhalten im Forum eher so aus, als wäre ein Richtwert einprogrammiert, sobald der Roboter näher kommt biegt er in eine Zufallsrichtung ab... so ist es meistens.

M!ni M0nk3y
04.10.2007, 20:02
habe mir eine motorsteuerung ausgedacht, wollte fragen ob jemand anmerkungen dazu hat.
hab mir das wie folgt vorgstellt (siehe bild)

die basen von T1 bzw T2 kommen an den ATMega8 die 1 oder 0 sagen.
wenn T1 an der Basis 5V hat, schaltet der Transistor die anliegenden 5V (an seinem 1. pin) durch auf den Motor. Gleichzeitig schaltet er T4 durch, welcher am anderen Pin des Motors hängt und schaltet dieses Ende auf Masse.
Genauso mit T2 und T3, jedoch dreht der Motor dann in anderer Richtung.

Würde das so funktionieren oder hat jemand Anmerkungen?
Oder muss ich vllt jeweils vor die Basen einen Vorwiderstand schalten?

Vielen Dank für alle Antworten.

Lunarman
04.10.2007, 20:11
Junge das gibts doch alles schon! Musst nur suchen xD

M!ni M0nk3y
04.10.2007, 20:21
so wie ich es lösen will, habe ich es leider nirgends gefunden :(
wäre sehr erfreut, wenn es kritik an meinem schaltplan gibt.

ziel ist es den motor linksrum, rechtsrum und gar nixht laufen zu lassen...

Lunarman
04.10.2007, 20:26
Warum die Kuh neu erfinden?

M!ni M0nk3y
04.10.2007, 20:30
also das ding ist ich habe keine speziellen IC's zur motorsteuerung da.
nur transistoren und halt den ATMega8.
Will ja nur wissen, ob es so möglich ist oder nicht...

Lunarman
04.10.2007, 20:39
Such nach "H-Brücke" aber du brauchst MOS-FETs und selbst damit läufts nicht wirklich... das was du willst is ne Notlösung. Kauf dir son Mototreiber-IC und du nimmst ihn mit ins Grab.

M!ni M0nk3y
04.10.2007, 20:43
meine frage ist immer noch nicht beantwortet!
sehr nett, dass mir bessere vorschläge gemacht werden, aber stellung zu meinem schaltplan wurde bisher kine genommen!

Lunarman
04.10.2007, 20:51
also...
a) deine Motoren laufen natürlich nur mit 5 Volt (upps) und davon gehen nochmal 0.7 Volt pro Transistor ab. Das ist natürlich dohw.
b) müssen da noch nen paar Widerstände vor, was aber natürlich dumm ist bei nem Motor (induktive last)
schlicht: Ich glaube dass funktioniert nischt.

M!ni M0nk3y
04.10.2007, 20:55
hab auch 12V zur verfügung. müsste halt widerstände etc anpassen.
also es wäre gar nicht möglich damit?
außerdem laufen die motoren standartmäig mit 4-4,5V, also wäre der Spannungsabfall von 0,7V nicht so tragisch!

AlKI
04.10.2007, 21:00
Das was du da aufgezeichnet hast, ist 1 : 1 ne H-Brücke, halt ohne Freilaufdioden.

wie machst du es jetzt nur, damit er anhält? so wie du dir das bisher dachtest, fährst du immer entweder vor- oder rückwärts.

Das mit den 12V ist egal.

M!ni M0nk3y
04.10.2007, 21:02
nein... wenn die eingänge beide 0 sind, schaltet kein transistor (T1 u. T2 und somit auch T3 und T4) durch, also bleibt der Motor stehen!

AlKI
04.10.2007, 21:07
oppsala, verguckt... naja, ok, ne H-brücke löst das ganze etwas eleganter, aber selbes Prinzip....

du brauchst halt 4 Freilaufdioden (parallel zu jedem Transistor in sperrichtung) und die Widerstände an den Basen.

sonst sollte es gehen. aber 2 Relais (zwei 2-fach-(Um)schalter) sind immernoch einfacher. Oder arbeitest du schon mit Geschwindigkeitsregelung mit PWM?

M!ni M0nk3y
04.10.2007, 21:11
also ist es mit den vorhandenen transistoren möglich?
dioden hätte ich auch noch da und welche widerstände müsste ich an die basen machen?
vielleicht könntest du mir ja mal schnell nen schaltplan zaubern, wenn du lust hast. hab halt nur BC548 Transistoren da!

AlKI
04.10.2007, 21:13
Lust ja, Zeit.... naja, ich guck mir mal des Datenblatt der Transis an, Freilaufdioden müssen aber einiges aushalten, und auch noch schnell sein (Trr=20ns oder so) Da kann man leider nicht jeder0-8-15-Diode nemen

M!ni M0nk3y
04.10.2007, 21:16
achso...
hmmmm, ich merk schon, das ist etwas aufwändiger als gedacht.
schade dass ein atmega8 nicht 500mA am ausgang liefern kann, sonst könnte man ja einfach einen ausgang auf 1 den anderen auf 0 stellen und zack läuft der motor...
ich glaube mittlerweile ohne eine neue bestellung komme ich nicht mehr hin... aber wäre top, wenn ich nur diese dioden kaufen müsste und den rest mit den BC548 lösen könnte!

AlKI
04.10.2007, 21:17
Collector Current(DC) IC 100 mA

Wenn deine Motoren maximal 100mA ziehen, dann gehts.

Glaub aber nicht, das das geht..

EDIT: hier gibts das Datenblatt:
http://www.ortodoxism.ro/datasheets/mcc/548B.pdf

Achtung: GROß!!! die Datei.

Nacht!

M!ni M0nk3y
04.10.2007, 21:20
dann werd ich es anders lösen müssen, danke für alle antworten...

neue vorschläge nehme ich gerne an :)

AlKI
05.10.2007, 11:04
wenn du 2 zweifach-relais hast (eines kann auch nur ein 2fach-Schließer sein), die weniger als 100mA ziehen, kannst du folgendes probieren:
https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=1900

Freilaufdioden brauchst du hier halt für die Relais (da die auch Spulen sind), aber auch nur 2.

Du kannst natürlich auch jedes Relais durch mehrere in Reihe geschaltene "ersetzen"

Du kannst bei diesem Aufbau auch keinen Kurzschluss erzeugen, wenn du ausversehen beide Eingänge auf "high" legst.

recycle
05.10.2007, 15:22
achso...
hmmmm, ich merk schon, das ist etwas aufwändiger als gedacht.
schade dass ein atmega8 nicht 500mA am ausgang liefern kann, sonst könnte man ja einfach einen ausgang auf 1 den anderen auf 0 stellen und zack läuft der motor...

Die Freilaufdioden bräuchtest du dann trotzdem und du könntest den Motor nur in eine Richtung drehen.
Wenn dir eine Drehrichtung reicht, brauchst du auch keine H-Brücke. Da würden 2 Transistoren mit Freilaufdioden reichen.

Anstatt dir passenden Freilaufdioden zu bestellen, könntest du dir auch gleich einen Motortreiber-IC bestellen.

Für die TWIN-Motoren reicht ein L293D. Da sind die Freilaufdioden auch schon drin.

Du musst dann allerdings ein bischen aufpassen, dass dein Roboter sich nicht festfährt.
Wenn die Motoren blockieren könnte es schon sein, dass der L293D durchbrennt.
Meiner hat es bisher überlebt, aber ich habe auch nur auf relativ glattem Boden rumprobiert und da drehen die Räder durch wenn mein Chassis irgendwo hängenbleibt.

M!ni M0nk3y
06.10.2007, 13:41
ein L293D ist bestellt :)
und die 600mA die der kann reichen mir auch vollkommen aus.
hängenbleiben wird meiner nicht oder wenn nur in extremfällen können, da ich zu den abstandssensoren (die übringend wunderbar mit der IR diode und dem fototransistor klappen) zusätzlich noch mehrer Taster prarallel schalte.
von daher dürfte es da nicht so viele probleme geben.

M!ni M0nk3y
06.10.2007, 15:36
Moin, habe folgende Schaltung aufgebaut (siehe Anhang) um mir anzeigen zu lassen ob Behälter voll oder leer.
Ob jetzt voll 1 und leer 0 ist oder andersrum spielt erst mal keine rolle.

Jedoch messe ich am Ausgang des Schmitt-Trigger immer 0,14V

Woran könnte das liegen.
Am Fototransistor messe ich (wenn er durchschaltet) von Masse zum Ausgang 4,4V

Mache ich irgendeinen Fehler?

AlKI
06.10.2007, 15:50
öööh???? HÄ????




EDIT: aso, die 5V ham gefehlt


Vlt hilft ein Pulldown-Widerstand von masse zum emmitter des Fototransis was

M!ni M0nk3y
06.10.2007, 15:56
wie groß sollte der denn sein?
und wie ist das bei fototransistoren die aussehn wie ne diode, is da die abgeflachte seite der emitter.
also ich hab jetzt die abgeflachte seite an 5V angeschlossen...

AlKI
06.10.2007, 16:00
wie groß sollte der denn sein?

Mehrere kOhm (4-10)



und wie ist das bei fototransistoren die aussehn wie ne diode, is da die abgeflachte seite der emitter.
also ich hab jetzt die abgeflachte seite an 5V angeschlossen...

Zumindest bei dem Fototransistor aus meinem Experimentierkasten ist der Collector (+) die flache seite...

M!ni M0nk3y
06.10.2007, 16:03
okay, das klappt auch nicht mit dem pulldown :(

AlKI
06.10.2007, 16:05
ist der Schmitt-Trigger richtig angeschlossen/verlötet/wie auch immer?#

EDIT: np

M!ni M0nk3y
06.10.2007, 16:07
denk schon, pin7:GND ; pin14:+5V; stützkondensator hab ich erstmal weggelassen; pin1: emitter von der fotodiode; pin2: spannungsmessgerät

//edit: sorry, bei einem 2. versuch hats geklappt, danke :)

ich habe vor den schmitt trigger auf masse zu schalten und dann soll eine LED leuchten. wenn der schmitt trigger an ist, dann nicht.
das heißt, der strom fließt also in den schmitt trigger hinein (technisch gesehn) und das wäre bei mir ca. 83mA. Wenn man es physikalisch betrachtet dürfe das also möglich sein, da der strom ja eigentlich von - nach + fließt.

würde ich den schmitt trigger schrotten, wenn ich ihn auf masse schalte und davor eine LED an 5V mit vorwiderstand zum leuchten bringe?