Hallo Ich habe ja leider feststellen müssen, dass mein Roboter von seinen möglichen Fähigkeiten langsam an seine Grenzen stösst. Da habe ich mir überlegt, warum nicht anstatt neue Fähigkeiten hinzufügen bestehende Fähigkeiten anders implementieren? Da kam ich wieder auf ein Thema zurück, das mich schon lange interessiert: Neuronale Netzwerke. Meine Idee wäre es, dass der Roboter mit einem untrainierten Netz losfährt und sich dann beibringt, im Zimmer herumzufahren ohne irgendwo anzustossen. Ich habe 3 digitale Inputs (Annäherungssensor vorne-links und vorne rechts, Schalter wenn er tatsächlich kollidiert). Dies soll zu 2 digitalen Ouputs führen (Motor rechts/links vor/zurück). Des weiteren muss natürlich die Zeitkomponente irgendwie berücksichtigt werden. Was meint ihr, ... ...ist das grundsätzlich möglich? ...schafft das ein Mega8? ...kann der Roboter in vernünftiger Zeit vernünftig trainiert werden? ...wie könnte man das Netzwerkdesign gestalten/optimieren? Hat jemand vielleicht schon Erfahrungen damit? Gruss Michael
Was Du suchst ist ein "TDNN", TimeDelayNeuronalNetwork, Google hilft da erstmal weiter. Umsetzung auf einem uC ist vermutlich nicht so einfach, wegen Floats, kompilizerten Aktivierungsfunktionen, Speicherbedarf. Und für eine Komplexe Aufgabe wie das "lernen" eines Zimmers müsste das Netz schon seehr gross sein, da hätte vermutlich auch ein schneller P4 Probleme, das in annehmbarer Geschwindigkeit zu machen. Trainingszeiten sind auch nicht zu vernachlässigen, > 10.000 iterationen solltens schon sein, d.h. mal ein Jahr ununterbrochen herumfahren lassen, bis es in etwa "gelernt" ist. /Ernst
Hallo Huhuu...das tönt ja nicht gerade vielversprechend. Aber ich habe es schon befürchtet, dass das relativ schwierig würde. Noch eine Klarstellung: Ich möchte nicht den Roboter das Zimmer lernen lassen, sondern lediglich, dass er herumfährt ohne anzustossen - er soll also seinen Ausweich-Alogorithmus lernen. Aber wie gesagt, selbst das dürfte schwierig sein - man sagt ja, dass ein NN mindestens 10 mal so viele Trainingsbeispiele braucht wie es Verknüpfungen hat. Die andere Frage ist natürlich, ob es überhaupt etwas hergibt bzw. sinnvoll ist den Ausweichalgorithmus lernen zu lassen. Dieser ist in meinem Fall so einfach formuliert, (Das Servo auf der Gegenseite eines ausschlagenden Annäherungssensor wird rückwärts angesteuert.) dass kaum interessante Verbesserungen möglich sind. Eine alternative wäre es natürlich, den Bot eine etwas "höhere" Fähigkeit lernen zu lassen - z.B. das Fahren eines Weges anhand eines speziellen Inputs (z.B. Fahren in richtung der hellsten Stelle) Gruss Michael
Rein das Ausweichen (also Sensor spricht an => Stückchen Rückwärts + drehen) sollte machbar sein, auch mit einem uC-Sized netz... Könnt evt. auch mit online-lernen klappen, hab da vor einiger Zeit mal was über einen 6-Beinigen Krabbel-Roboter gelesen, dem die mit einem NN pro Bein das Laufen beigebracht haben, vielleicht findest Du da ein paar Anregungen. /Ernst
Moin... Such mal nach dem SNNS, AFAIK Stuttgarter Neuronal Netz Simulator, oder so ähnlich. Kürzel findest du aber auf alle Fälle. Das ist eine komplette JAVA Umgebung zum generieren von NN. Wenn du "künstliche" Ein-/Ausgabedaten generieren kannst, fütterst du die in das System und erhälts ein komplettes NN in ANSI-C. Haben wir für ein Praktikum mal in Lego Mindstorm gepackt... schon putzig. Adaptives lernen ging auch, das ging dann aberrichtig ans Eingemachte. -- SJ
Das wird wohl etwas schwierig mit einem µC. Was du willst ist ja nicht nur das lernen von logischen Zusammenhängen, sondern gleich ganze Abläufe. Das ist mehr als kompliziert. Wie Ernst schon sagt, ist das mit viel Float-Rechnerei verbunden, wofür ein kleiner µC nicht geeignet ist. Ich hab in meiner Diplomarbeit ein neuronales Netz in einen FPGA (Xilinx Virtex II) implementiert, genau aus Gründen der vielen vielen Berechnungen, die zwar immer gleich sind, aber ohne eine gewisse Parallelität auf einem Roboter "onboard" nicht zu bewältigen sind. Außerdem ist die Theorie nichts, was man mal so nebenher erarbeitet. Da gehört schon einiges an Zeitinvestition dazu, wenn man sich in das Thema einarbeiten will. Gruß Thomas
Hi, ich entwickle eine 2D Umgebungsabbildung für einen mobilen Roboter. Mit diesen Informationen wird sich der Roboter Orientieren können und diesen Raum auch Identifiezieren können. Da der Roboter weiss wie der Raum aussieht ist eine Kollision fast ausgeschlossen. Nach einem Scan soll dann auf der Karte ein Punkt makiert werden und der Roboter berechnet denn einfachsten und schnellsten weg dort hin. Der gesamte Robter wird über WLAN betrieben. Die Karte wird auf einer eigens Programmierten Software dargestellt (C++.NET) und läuft auf dem Embedded PC. Das gesamte Projekjt läuft zur zeit sehr gut. Vll. als alternative zur deiner Idee. (Anregung) Gruss
Wenn es nur um das ausweichen von Hindernissen geht, ist ein NN vielleicht schon zuviel Arbeit. Schau mal ob FuzzyLogik da nicht sinnvoller wäre. Er lernt dann zwar nichts, aber brauch er ja für Hindernisse nichts lernen. Ich habe vor ca 1 1/2 Woche eine Simulation von meinem Regelungstechnik Prof. dazu gesehen. Ein Auto, dass eine Strecke entlang fährt, einem Hindernis ausweicht und wieder gerade aus. Das war in einem 'Crash Kurs'. Wir haben in zwei Tagen genug gelernt, um dieses Beispiel nachzubilden ... denke ich :) Soviel zum Zeitaufwand !!
Um mal mit einem Mythos aufzuräumen: Floats sind für Neuronale Netze nicht erforderlich! Viele Hardwarebeschleuniger für Neuronale Netze arbeiten mit Festpunktarithmetik. Informationen findest Du z.B. beim googlen nach Synapse bzw. MA16 (der darauf verbaute Chip von Siemens) Für die Gewichte reichen 16bit Fixpunkt, die Inputs müssen dann 8bit haben. Durch die Fixpunktarithmetik lassen sich wesentliche Rechnungen (Matrixmultiplikation) erheblich vereinfachen. Auf einem uC lassen sich natürlich NNs implementieren. Sofern man weiss was man machen will und einen geeigneten Netztyp findet, ist es schlussendlich nur eine Frage des zur Verfügung stehenden Speichers. Für das, was auf einem Mega8 an Speicher ist, reicht die Rechenleistung dann allemal aus. In Deinem Fall könnten Eingangsdaten z.B. sein: * aktuelle Geschwindigkeit * aktuelle Richtung * Zeit seit der letzten Kollision * Zustand der Bumper Du könntest dabei so vorgehen, mit dem Bot erst mal Daten zu sammeln und ein Netz auf dem PC zu trainieren (nur wenige Trainingsschritte). Das Netz bringst Du dann auf den Mega8 und läßt es dort online weiter trainieren. Die Gewichte lassen sich im EEPROM ablegen und beim Reset ins RAM laden. Das Problem, dass noch zu lösen ist: Du musst irgendwie die Lernmenge mit den Zielwerten, d.h. gewünschter Netzausgang, belegen, um die Gewichtsanpassung durchführen zu können (Ein selbstorganisierendes Netz eignet sich für die Aufgabe nicht).
> Außerdem ist die Theorie nichts, was man mal so nebenher erarbeitet Ja, das ist es eben. Zurzeit bin ich sowieso eher mit arbeiten (Man kann ja nicht nur den Eltern auf der Tasche sitzen ;-) ) als mit basteln beschäftigt, also werde ich das ganze wohl auf später verschieben müssen. Während dem Studium müssen ja auch immer mal wieder Projekte gemacht werden, und ich werde da sicher noch etwas mehr Mathematik lernen... > Mit diesen Informationen wird sich der Roboter orientieren können und diesen Raum auch Identifiezieren können. Da der Roboter weiss wie der Raum aussieht ist eine Kollision fast ausgeschlossen. Sowas hatte ich eigentlich auch vor. Doch leider klappt die Positionsbestimmung einfach zu ungenau. Wie schaffst du es, absolut präzise Positionsangaben zu erhalten? > Du könntest dabei so vorgehen, mit dem Bot erst mal Daten zu sammeln und ein Netz auf dem PC zu trainieren (nur wenige Trainingsschritte). Das Netz bringst Du dann auf den Mega8 und läßt es dort online weiter trainieren. Die Gewichte lassen sich im EEPROM ablegen und beim Reset ins RAM laden. Sowas in der Art wäre auf jeden Fall sehr sinnvoll. Eventuell könnte man den gesamten Roboter simulieren und erst am Schluss das NN übertragen. > Schau mal ob FuzzyLogik da nicht sinnvoller wäre. Er lernt dann zwar nichts, aber brauch er ja für Hindernisse nichts lernen. Hmm...weniger. Das Lernen würde mich eben speziell interessieren.
Hi, Definiere "präzise" Positionsangaben !? Also 1cm genauigkeit wird wohl nicht machbar sein. Ich gehe von einer genauigkeit von ca. 5cm aus. Und das wäre schon gut. Ich benutze einmal die Karte und einen Fahretenschreiber um die Position zu bestimmen. In der Karte ist ein Raster von 10cm x 10cm also eine genauigkeit von 10cm, im raster selber wird noch der Fahrtenschreiber selber ausgewertet. Um höhere genuigkeit zu erzielen. Das zu Theorie. Zur Praxis kann ich noch nichts sagen da ich noch nicht soweit bin. PS: Raster von 10cm ergibt sich aus der ungenauigkeit der Messdaten der Sensorik. Gruss
Sorry im Raster ist natürlich der maximale Fehler von 14cm (Worst case) Gruss
Hallo Ich berechne die Position aus Winkel des Roboters und gefahrener Strecke. Mein Problem ist eben, dass der aktuelle Winkel des Roboters nicht absolut genau erfasst werden kann -> Das summiert sich enorm auf -> die trigonometrische Berechnung der Position produziert riesige Fehler. (Sagen wir 3° ungewollte Drehung beim Geradeausfahren pro Meter und 5° ungenauigkeit pro Wendemanöver => nach 5 Meter und 5 Wendemanöver beträgt die Abweichung bis zu 40°. Der Roboter fährt also in ganz eine andere Richtung als er denkt, dies zu tun...) Gruss Michael
Winkel ungenauigkeit wird durch den Scanner behoben. Da ein versatz des Raum erkannt. Das was ich mache ist das so genannte SLAM Problem. Würde danach mal googeln. gruss
> Winkel ungenauigkeit wird durch den Scanner behoben. Da ein versatz des Raum erkannt. Wie weit kann denn dein Roboter sehen? > Das was ich mache ist das so genannte SLAM Problem. Würde danach mal googeln. Ok ;-)
Radius beträgt 5m also kannst du die meisten Räume mit erfassen. Gesamte rund um scan dauert ca. 3,5sek. Also ist Scannen beim Fahren kein Problem. Gruss
hallo, mein robby hat 2 srf04-ultra(vorn und hinten 180grad schenken mit servo ,genauigkeit des 5euro-servo 0,5grad bzw 360 schritte auf 180 grad). dazu ein compassmodul cmps03. scannerorientierungen bekommt er über funk vom pc. geht bis auf 2 cm genauigkeit, tolle sache. mfg
> Radius beträgt 5m also kannst du die meisten Räume mit erfassen.
Gesamte rund um scan dauert ca. 3,5sek.
Achsoo...da spielt mein Roboterchen natürlich in einer anderen Liga -
lediglich zwei selbstgebastelte Annäherungssensoren, die bei ca 7 cm
angeben ;-) Und anständig geradeausfahren kann er auch nicht. Mal
schauen, was man da noch herausholen kann.
@anfänger : Ist das Kompass modul zu gebrauchen!? Habe das auch hier liegen und auch angesteuert aber er soll eine ungenauigkeit von 2grad haben. Erste Test waren sehr enttäuschen meiner meinung nach, da sobald stör faktoren wie (Leiter, Magnete...) in die nähe kamen, war Norden überall und nirgends. Und waruf beziehen sich die 2cm genauigkeit!? Auf Entfernunug oder Position im Raum? Weil das SRF04 modul hat eine sehr Breite keule was für eine Raum abtastung nicht sehr nützlich ist. Da man zwei sehr nah liegende Punkte nicht unterscheiden kann. Gruss
"An seine Grenzen stößt". Aha. Und wieso denkst Du dass neuronale Netze die ganze Sache mit weniger Aufwand hinbekommen? Eben nicht auf Chips die auf sequenzielle Abarbeitung eingestellt sind. Da braucht es für richtig Speed spezielle Chips sonst wird es nur alter Wein in neuen Schläuchen. Versprich Dir nicht zuviel von den neuronalen netzen. Praktisch können die nur in wenigen bereichen mehr als klassische KI. Die ist hier angebracht. Und das Programm lautet: Fahr zurück wenn Hindernis. Positionsbestimmung? Praktisch wohl nur über Markierungspunkte im Raum zu machen. vergesst alle Maussensorideen, das ist doch Schwachfug und ungenau auf mehrere Meter. Man muss die maus doch schon auf dem Pad ab und zu nachsetzen weil sich der Fehler akkumuliert hat. 3N
> "An seine Grenzen stößt".
Damit meine ich, dass die bestehende Hardware mehr oder weniger
ausgereizt ist, was ihre softwareseitige Verwendung angeht. Darum die
Idee, die Software mal völlig andersrum funktionieren zu lassen. Nicht
unbedingt, um damit grosse Verbesserungen zu erzielen, sondern um halt
eine zusätzliche Technologie auszuprobieren, einen anderen Ansatz zu
wählen, Erfahrungen zu sammeln... Nach diesem Thread bin ich mir
allerdings nun relativ sicher, dass es in meinem Fall eher weniger Sinn
macht.
Jupp. Stimmt. Ich war auch erst begeistert von den Dingern aber viel kommt nicht bei rum. Nur Spezialanwendungen und nie auslesbares Wissen oder Sicherheit der Reaktion. Wenn Du mit neuronalen netzen spielen willst empfehle ich das Buch hier: http://www.amazon.de/exec/obidos/ASIN/3446225749/ Da sind Beispiele wie man die Teile zum Bleistift mit Excel erstellen und testen kann. Sehr hübsch! 3N
mir fällt da grad was ein... habt ihr schon mal überlegt anstatt mit einem kompass chip, irgend was piezo gyroskop ähnliches zu verwenden? hätte den vorteil das es sich nicht durch magnetfelder/metall ablenken lässt. damit würde man nur die änderung auf der eigenenachse auswerten, um die sich der bot dreht und damit eine info über den aktuellen winkel erhalten. die teile gibts entweder als chip(müsste noch mal nachschauen was der genau für einer war) oder man verwendet ein fertiges modul aus dem modellbau bereich mit dem man normal servos korrigieren kann (signal als PWM).
Naja, das Problm ist bei all diesen Sachen: kleine Fehler mal große Strecke= wenig brauchbares. 3N
> Naja, das Problm ist bei all diesen Sachen: kleine Fehler mal große
Strecke= wenig brauchbares.
Genau. Eine einmalige Abweichung von 5° macht relativ wenig aus - aber
wenn man dann noch ein paar Meter fährt, sich 3 mal dreht, wieder ein
paar Meter fährt und dann eigentlich die Durchfahrt durch eine Tür
erfolgen sollte, dann wird man ziemlich negativ überrascht ;-)
Am vielversprechendsten scheint mir, den Roboter geradeausfahrender zu
machen (indem das schnellere Servo alle x Impulse keinen Impuls
bekommt) und ihn dann gezielt feste Hindernisse anlaufen zu lassen. Man
hatt dann bereits eine Achse wieder bestimmt, die zweite lässt sich
relativ genau aus dem Auftreffenszeitpunkt bestimmen, wie schliesslich
auch der Winkel. Das funktioniert natürlich nur bei relativ grossen,
einfachen Hindernissen wie Wänden oder Schränken.
Hoffentlich bringe ich diese ganze Anwendung noch in meine übrigen 4 kB
Programmspeicher (C) ^^
> Praktisch können die nur in wenigen bereichen mehr als klassische KI. Aber dort wo die klassische KI versagt, oder der Aufwand explodiert, leisten Sie eben mehr. Beispiele: Klassifikation großer, verrauschter Datenmengen (Spracherkennung, 3D Objekterkennung, bildbasierte Fehlerklassifikation). Z.B. (mal was zum Ausprobieren): http://www.techinfo.rwth-aachen.de/Forschung/VIR/Axiom/demo/ Bei der Navigation von Robotern lassen sie sich natürlich auch einsetzen. Ich stimme aber meinen Vorpostern zu, dass die gegebene Aufgabe auch von anderen Verfahren - wahrscheinlich einfacher - gelöst werden kann. Andererseits ist es aber ein guter Einstieg. Und falls es mal um die Navigation per Kameradaten geht, können die KNNs dann gute Dienste leisten (auch bei wenig Speicherplatz).
> Beispiele: Klassifikation großer, verrauschter Datenmengen
(Spracherkennung, 3D Objekterkennung, bildbasierte
Fehlerklassifikation).
Also dort, wo grosse Datenmengen nach unmathematischen, unscharfen
Kriterien beurteilt werden müssen. Trifft bei meinem Roboter definitiv
nicht zu. Aber vielleicht für ein späteres Projekt, interessant wäre es
schon! Ich denke hier z.B. an einen Roboter mit einer gewissen Zahl
gleicher digitaler/analoger Inputs (z.B. Entfernungsmesser rundherum
angebracht) und wieder einer gewissen Zahl gleicher digitaler/analoger
Outputs (z.B. einige spezielle Räder, um den Roboter in alle Richtungen
zu bewegen). So könnte sich das Netz relativ frei trainieren.
Noch eine Zwischenfrage: Es gibt ja zu halbwegs akzeptablen Preisen
Kameramodule zu kaufen. Könnte man die mit einem Mikrocontroller (ab
welcher Kategorie?) verarbeiten?
Das Kriterium ist schon mathematisch, da sich das Training eines KNN wie eine nichtlineare Regression (z.B. bei backpropagation Training), bzw. bei Klassifikatoren (z.B. SOM) eine Partitionierung eines n-Dimensionalen Raumes (n = Anzahl Dimensionen der Ausgabeschicht) betrachten läßt. Der Übergang zwischen statistischen Klassifikatoren (wie z.B. k-nearest neighbour) und KNNs ist dabei fliessend. Aber wie Du schon angemerkt hast, ist für Deine Aufgabe ein KNN overkill. Aber ich denke dennoch, dass es einen Versuch wert ist, da man bei einer kleinen Anzahl Eingangs- und Ausgangsknoten sehr viel lernen kann und einzelne Effekte unmittelbarer zutage treten. Zur Zwischenfrage: Ich habe eine Gameboy-Kamera bei eBay ersteigert (2+Versand) dafür gibt es jede Menge Schaltpläne und Code für den Anschluss an einen AVR im Netz. Das schöne bei der Kamera ist, dass sie ausserdem sehr klein, leicht und einfach anzusteuern ist (Läuft bei mir an einem Mega168). Hinzu kommt, dass die Kamera auch schon Kantenerkennungs bzw. -verstärkungsmodi eingebaut hat, so dass man auf dem Controller Rechenzeit sparen kann. Durch den geringen Preis kann man sich so ein System schon für unter 7 zusammenbauen.
> Aber wie Du schon angemerkt hast, ist für Deine Aufgabe ein KNN overkill. Aber ich denke dennoch, dass es einen Versuch wert ist, da man bei einer kleinen Anzahl Eingangs- und Ausgangsknoten sehr viel lernen kann und einzelne Effekte unmittelbarer zutage treten. Ja, genau so denke ich auch. Das war ursprünglich eigentlich auch die Idee. > Ich habe eine Gameboy-Kamera bei eBay ersteigert (2+Versand) dafür gibt es jede Menge Schaltpläne und Code für den Anschluss an einen AVR im Netz. Hört sich interessant an! Ob ich das auch mit einem Mega8 zum Laufen bringe? Und hoffentlich bekomme ich so eine in der Schweiz ^^ Würde die Bildqualität genügen, um die Kamera zum navigieren zu Hilfe zu nehmen oder gar um eher kleinere Objekte in einer gewissen Entfernung zu erkennen?
Klar, mit dem Mega8 geht das auch. Das Problem mit den "kleinen" Megas ist, dass deren SRAM Kapazität nicht sehr groß ist. Die Kamera liefert 128x128 Pixel. Wenn Du die in ihrer Gänze nutzen möchtest, brauchst Du externen Speicher. Hierfür gibts Lösungen (z.B. mit Mega162 und externem SRAM). Damit bleibt man immer noch unter 10. Man kann natürlich auch die Bildauflösung per Software reduzieren. Bei der vollen Auflösung ist die Qualität recht gut: http://www.roboternetz.de/phpBB2/viewtopic.php?t=7504&postdays=0&postorder=asc&start=462
> Das Problem mit den "kleinen" Megas ist, dass deren SRAM Kapazität nicht sehr groß ist. Die Kamera liefert 128x128 Pixel. Wie gross ist ein Pixel? Wohl kaum ein ganzes Byte? > Wenn Du die in ihrer Gänze nutzen möchtest, brauchst Du externen Speicher. HAbe mich noch nie damit befasst, gibt es da spezielle Bausteine, die direkt mehr RAM "simulieren" (d.h. mit den gleichen Befehlen wie internes RAM angesteuert werden können) oder schliesst man sowas z.B. per TWI oder SPI an? Also jetzt speziell für den Mega8. Huuuch...und wie kann man sowas im AVR Studio noch simulieren/debuggen? ^^
Gleich noch ne Frage: Von der Gameboy-Kamera gibt es nur einen Typ? (nicht damit ich da etwas falsches ersteigere...)
Ja, bis auf die Farbe des Gehäuses. Kannst also nix falschmachen - es sei denn, Du bist sehr farbsensibel. Ohne Gehäuse sehen die Kameras aber alle gleich aus.
So, Kamera ist geebayt ;-) Ich denke, damit lässt sich einiges herausholen. Vorerst wird aber wohl eine intensive Einarbeitungsphase folgen, damit ich einerseits die ganze Ansteuerung in den Griff bekomme, andererseits aber auch Techniken zur Mustererkennung. Hätte mir evtl. jemand gerade ein paar Links zum Thema? Noch ne kleine Frage: Auf zwei, drei kurz angesurften Seiten habe ich was von einem "schnellen AD-Wandler" gelesen, da die Grauwerte ja analog herauskommen. Reicht hier der ADC des Mega8 bzw. ein TLC547 an LPT1 des PC? Brauche ich zwingend etwas schnelles oder dauert sonst halt einfach das Bildauslesen etwas länger?
Bitteschön: Gameboykamera am AVR http://www.seattlerobotics.org/encoder/200205/gbcam.html Lange Thread auf roboternetz dazu: http://www.roboternetz.de/phpBB2/viewtopic.php?t=7504&start=462 Der ADC des Mega 8 reicht. Im 8 bit Modus kann man den bzgl. Samplerate sehr weit treiben. Schau Dir mal die Bilder auf roboternetz an.
> Bitteschön: Dankeschön ;-) > Der ADC des Mega 8 reicht. Im 8 bit Modus kann man den bzgl. Samplerate sehr weit treiben. Schau Dir mal die Bilder auf roboternetz an. Nur - der ADC muss nebenher noch mindestens zwei Werte von den Annäherungssensoren auslesen. Aber wahrscheinlich wird der Mega8 dann sowieso bald mal zu klein, nur schon was Programmspeicher für die ganze Verarbeitung angeht.
Ich empfehle den Mega168. Ist nicht wesentlich teuerer. Doppelter Flashspeicher vergl. mit Mega 8 und kann mit 20MHz getaktet werden. Ich verwende einen 18.432MHz Quarz, da lassen sich die Daten sauber mit 115200bd zum Host übertragen. Das Auslesen der Sensoren sollte kein Problem sein, dauert ja nicht lange und kann z.B. während der Belichtungszeit des Chips stattfinden.
> Das Auslesen der Sensoren sollte kein Problem sein, dauert ja nicht
lange und kann z.B. während der Belichtungszeit des Chips stattfinden.
Klar, ja ;-) Sonst könnte man die Kamera ja auch einfach langsamer
auslesen - oder?
Die Kamera kann man auch sehr langsam auslesen (wenige kHz) Dann leidet aber die Bildqualität. Das mussst Du auch nicht. Im 8Bit Modus kann man den ADC mit 144kHz betreiben, da geht das auslesen der Kamera recht fix. Es geht auch, bei leichtem Qualitätsverlust, bis zu 1MHz als ADC Takt. Zum Auslesen der Abstandssensoren würde ich der Genauigkeit wegen aber wieder auf 144kHz wechseln.
Ich überlege mir gerade, ob es wohl möglich wäre, das Bild direkt über den Controller an den Fernseher auszugeben. (So als kleineres Projekt für zwischendurch möchte ich mal was im AVR-Tennis-Stil (Elektor 06/2003) machen.) Aber dafür ist die ganze Sache wohl zu langsam - es sei denn, man leite den Analogwert aus der Kamera direkt an das BAS-Signal. Der Grund, warum ich das mal noch so versuchen möchte: Zurzeit habe ich leider keine Speicherchips (werde dann alle Roboter-Hardwar zusammen bestellen) und möchte die Kamera trotzdem schonmal testen.
Hallo > Das geht auch am PC via Serielle Schnittstelle, falls Du schon einen AVR plus MAX232 hast. Ja, daran habe ich auch gedacht. Leider habe ich noch keinen MAX232... Vielleicht versuche ich dann etwas über die parallele Schnittstelle. Gruss Michael
Hallo Wie bereits angetönt, habe ich die Dokumentation zum Roboterprojekt nun auf meiner Webseite aufgeschaltet: http://www.thinkcool.ch Ein kleines Dankeschön für die viele Hilfe und ein klein wenig Eigenwerbung ;-) Gruss Michael PS: Kritik und Anregungen zur Website sind immer willkommen!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.