Diskussion zu: lernfähiges Neuronales Netz (NN, neural net)

Modelle zum Nachbauen oder wo gibt es etwas interessantes oder Projekte?

Moderator: Moderatoren

tito
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 41
Registriert: 13. Okt 2011 11:56

NXC/C für NXT + Arduino: lernfähiges Neuronales Netz (NN, neural net)

Beitragvon tito » 1. Mai 2015 06:33

Original-Topic:
NXC/C für NXT + Arduino: lernfähiges Neuronales Netz (NN, neural net)
http://www.mindstormsforum.de/viewtopic.php?f=70&t=5601


HaWe hat geschrieben:so, ich habe fertig - ein 2-schichtiges

Backpropagation Netz / Backpropagation net

Vorteil:
man kann jetzt hiermit alle mathematischen aussagenlogischen Verknüpfungen von Sensor-Inputs trainieren, auch z.B. XOR, was mit einfachen Feed-Forward Netzen (siehe obigen NXC-Code!) bewiesenermaßen nicht ging.

Nachteil: ein immenser Rechenaufwand per rückwärts gerichteter Fehler-Ableitungen.
Der NXT hat dazu für 1 einzigen Trainingslauf fast einen halben Tag gerechnet (teilw. für noch kleinere Netze weit über 8 Stunden)!
Mein Arduino Due schafft es jetzt in einigen Sekunden bis wenigen Minuten, da er keinen Interpreter verwendet (wie NXC) sondern native Executabels. Per nxtOSEK auf dem NXT müsste es übrigens fast ebenso schnell gehen, aus dem selben Grund.


hallo,
(...)
Zum Thema schnellere MCUs:Beim Raspberry und beim BeagleBone Black gefällt mir nicht, dass das Linux so extrem schwer zu programmieren ist (ich weiß nicht wie andere das sehen), und was den Tre angeht, da scheint es wohl Probleme mit dem Gesamt-Konzept zugeben, was man so hört (Sketch-ähnliche Web-IDE, Preis, Vermarktungskonzept, Konkurrenz zu neuen Multicore-Prozessoren, fragliche Witrschaftlichkeit / Gewinnprognose). Ich hätte den TRE mit seinem integrierten UNO ja auch gern, aber das ganze sieht inzwischen schon fast nach einem Rohrkrepierer aus: 2013 angekündigt, 3/'14 geplanter Start der Vermarktung, aber dann doch plötzlich 10/'14 eine neue beta-Test-Reihe und 12/'14 plötzlich Produktionsprobleme... :roll: ).
Aber es wäre sicher auch super, wenn man das Netz auf dem vergleichsweise schnelleren EV3 und C zum Laufen kriegte, dafür ist ja dein Code sicher fast auf Anhieb auf einen Schlag portierbar. Aber auch hier finde ich persönlich das Linux (ev3dev) unglaublich unhandlich.
Trotzdem viel Erfolg weiterhin, vielleicht schaffst du es ja trotz allem auch mit deinem Due etc.! :prima:

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5296
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: Diskussion zu: lernfähiges Neuronales Netz (NN, neural net)

Beitragvon HaWe » 1. Mai 2015 08:44

hi,
danke für dein feedback!

Es wäre traurig, wenn das mit dem Tre nichts würde - und es stimmt, die ganze Sache steht und fällt auch für mich mit einer einfachen IDE, einer vollständigen API und echtem C. Das gibt es leider nicht für den EV3 (und auch nicht für den RasPi und nicht für den BBB - gerade auf dem RasPi bin ich bereits grandios gescheitert, ich HASSE dieses Linux! :evil: ).

Die Sache auf dem Due hat leider auch eine begrenzte Prognose, nicht nur wegen des jetzt schon zu knappen Speichers - man braucht später zwingend pre-emptives Multitasking (wie bei NXC, leJOS und POSIX oder C11), damit die sehr lange dauernden Netz-Trainings- und Erkennungs-Vorgänge (laufen als eigenständige Tasks) keine anderen, zeitkritischen Tasks stören. Der Due hat aber nur kooperatives MT, damit blockiert das extrem rechenintensive neuronale Netz alle anderen notwendigen laufenden Arbeiten, wie z.B. die Fahr- und Navigations-Tasks (die auch wieder teilweise lange Rechenzeiten brauchen). Auch hat der Due für die notwendigen 7-8 Encodermotoren zu wenige Pins und zu wenig Speicher dafür in der Netzarchitektur

Auf Linux ginge es aber problemlos (meist POSIX pthread, habe ich auch schon mit John Hansens BCC-C für den EV3 verwendet). Daher wären alle Linux-Boards inkl. EV3 dafür wie geschaffen. Nur an der simplen IDE hapert es halt, wie die Arduinos sie haben. Daher wäre das mit dem Arduino Tre (einerseits Linux, andererseits sehr einfache IDE, die einem den überkomplizierten Linux-Krempel abnimmt) die Lösung aller Probleme - und daher wirklich eine ziemlich frustrierende Sache, wenn das nichts werden würde... :(

Auf eine einfache ev3dev-IDE habe ich allerdings fast aufgehört zu hoffen, da kommt wohl nichts, befürchte ich. Damit ist der EV3 für mich komplett unbrauchbar, genau wie der RasPi. Naja, die Hoffnung stirbt zuletzt...
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

TheCritter
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 21
Registriert: 24. Jun 2015 08:29

Diskussion zu: lernfähiges Neuronales Netz (NN, neural net)

Beitragvon TheCritter » 8. Jul 2015 12:48

Wegen leisungsfähigerer CPU, hast du schon mal überlegt einen Rasperi Pi für die rechenintensiven Sachen zu nutzen oder auch da eine Kamera anzuschließen und den Arduino die Steuerung zu überlassen?
Der Tre wird ja nichts anderes sein. Ein Chip rechnet, der andere kümmert sich um die I/O.

Das mit der Fernbedienung sehe ich nicht als Problem. Der Due und der PC bekommen jeweils einen BT Empfänger/Transceiver verpasst und auf dem PC kann ich das dann steuern. Oder mit einem 2. Arduino der per BT einfach paar Tasten abfragt und die dann zum Due schickt.

10MB RAM? Der Raspery Pi hat 1GB, also das 10.000-fache *zw*

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5296
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: Diskussion zu: lernfähiges Neuronales Netz (NN, neural net)

Beitragvon HaWe » 8. Jul 2015 12:53

es geht ganz grundsätzlich um die Sketch/Wiring IDE für C/C++, die das Programmieren auf Arduinos so genial einfach macht!

PC-Fernsteuerung kommt bei mir grundsätzlich nicht in Frage. Ich programmiere ausschließlich für autonomen Betrieb.

Für BT (Arduino-zu-Arduino) gibt es aber keine Sketch lib (ich habe das jetzt in Github allerdings ganz frisch vorgeschlagen), über Serial() ist BT nicht echtzeitfähig, und es gibt keine fertigen Fernsteuerungen samt Protokolle dafür. Noch nichtmal Pairen von HC-05 mit HC-06 ist ohne weiteres menügesteuert möglich. Für den Tre könnte das mit eingebautem BT besser sein, aber da muss man abwarten.

Auf nackter Linux-Basis programmiere ich aber nicht, weder mit RasPi per Geany noch mit ev3dev (ev3dev konnte ich noch nichtmal zum Laufen kriegen), schon gar nicht mit Eclipse als IDE, und wenn ich nur putty, ssh oder sudo etc. höre, könnte ich schon schreiend davon laufen.
Aber das führt jetzt hier zu weit, hier geht es um das Neuronale Netz an sich.
Wenn du es dir aber zutraust: mach es ruhig! Nimm "mein" Jordan-Netz und einen Due oder einen Raspi oder einen BBB und fang an!
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

TheCritter
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 21
Registriert: 24. Jun 2015 08:29

Re: Diskussion zu: lernfähiges Neuronales Netz (NN, neural net)

Beitragvon TheCritter » 8. Jul 2015 13:04

Ja mit der Arduino IDE ist es relativ einfach zu programmieren. Ich vermute aber wenn es den Arduino Tre gibt, so ist das nicht mehr so einfach. Meine Vermutung ist der wird dann wie 2 separate µC programmiert. Man muss dann also 2 Programme flashen.

Ja ich überlege wirklich dein Programm "auseinander" zu nehmen. Also das NN inkl. dem lesen und schreiben auf die SD-Karte von den Steuerteil zu trennen.
Ich muss aber erst mal verstehen welche Funktion zu welchem Teil gehört.

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5296
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Diskussion zu: lernfähiges Neuronales Netz (NN, neural net)

Beitragvon HaWe » 8. Jul 2015 13:31

nein, ich vermute nicht, dass das beim Tre so sein wird, sie sprechen von einer Web-IDE, die es erlaubt, sowohl die AVR- als auch die ARM-GPIOs unter einer gemeinsamen IDE anzusprechen. Spezielle Linux-Funktionen nutze ich ja nicht, und wenn es sich herausstellt, dass es zwingend nötig sein sollte, wäre das das Totschlagargument für den Tre - dann könnte man genauso gut einen BBB nehmen...
nur für mich persönlich ist das eben nichts.
Da die Sketch-IDE aber der Super-Trumpf für die Arduinos ist, was der Grund für den unglaublichen weltweiten Erfolg der Arduinos schlechthin ist und was ihnen den Super-Vorsprung vor allen anderen embedded MCUs verschafft hat, wären die ja ganz schön blöd, wenn sie diesen Trumpf jetzt für den Tre verspielen würden.

Kämen allerdings die Herren Hempel & Lechner et al. mal von ihrem "hohen Ross" herunter und würden auch eine simplifizierte, Arduino-ähnliche C- IDE anbieten (auf Basis einer Art "WiringEV3") samt Windows-XP-USB-Treiber - mannomann, das wär's für den EV3! (Stattdessen ziehen sie es aber offenbar vor, für eine Insider-Zielgruppe von EV3- und Raspi-Debian-Hackern und an Nerd-Basteleien wie dem Farb-Display zu arbeiten.)

Trotzdem:
bitte jetzt keine Tre- /Raspi/BBB-Diskussion hier, das ist zu sehr OT. Du kannst aber dazu gern in einem anderen Thread posten.
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5296
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: Diskussion zu: lernfähiges Neuronales Netz (NN, neural net)

Beitragvon HaWe » 10. Jul 2015 16:18

update zum Thema Tre: der wurde jetzt aktuell von der Arduino-Homepage/Produktseite entfernt :(
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

TheCritter
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 21
Registriert: 24. Jun 2015 08:29

Re: Diskussion zu: lernfähiges Neuronales Netz (NN, neural net)

Beitragvon TheCritter » 13. Jul 2015 08:44

schade :/
Ggf ist es zu kompliziert die beiden µC unter einen Hut zu bekommen, also die anzusprechen als wäre es einer.

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5296
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

NXC/C für NXT + Arduino: lernfähiges Neuronales Netz (NN, neural net)

Beitragvon HaWe » 13. Jul 2015 10:11

klappt denn dein China-Auto mit dem NN?
Zeig doch auch mal ein Foto wie es bis jetzt aussieht!
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5296
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: Diskussion zu: lernfähiges Neuronales Netz (NN, neural net)

Beitragvon HaWe » 13. Jul 2015 10:35

HaWe hat geschrieben: (habe jetzt die Diskussion zu den MCUs (Tre, Raspi, BBB etc.) hierher abgetrennt)


TheCritter hat geschrieben:schade :/
Ggf ist es zu kompliziert die beiden µC unter einen Hut zu bekommen, also die anzusprechen als wäre es einer.


kA, ich verstehe davon zu wenig, einige andere mögliche Gründe wurden ja hier bereits erwähnt, vllt liegt es am Linux OS, alle Arduinos haben ja kein eigentliches Betriebssystem, oder am nicht konkurrenzfähigen Marktpreis, oder dem Arduino.cc vs. Arduino.org Marken-Rechtsstreit oder der Beaglebone-Kooperative, wer weiß.
Vlt kriegt es ja dennoch wer auf dem Original-Rasp oder BB hin, Wiring/Sketch zum Laufen zu bekommen.
Auch das ATSAMA5D3 Xplained evaluation board wäre theoretisch eine Idee (512MB RAM, 512MB Flash, ca. 500 MHz cpu-Takt):
http://www.cnx-software.com/2014/03/07/79-atmel-atsama5d3-xplained-arduino-compatible-open-source-hardware-board-powered-by-sama5d3-arm-cortex-a5-processor/
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

TheCritter
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 21
Registriert: 24. Jun 2015 08:29

Re: NXC/C für NXT + Arduino: lernfähiges Neuronales Netz (NN, neural net)

Beitragvon TheCritter » 21. Jul 2015 08:23

Ich warte leider noch immer auf die Motorsteuerungen :/

TheCritter
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 21
Registriert: 24. Jun 2015 08:29

Re: NXC/C für NXT + Arduino: lernfähiges Neuronales Netz (NN, neural net)

Beitragvon TheCritter » 14. Mär 2016 14:42

@HaWe, du hast doch das Dilemma dass es keine schnellen Arduinos mit viel RAM gibt die aber auch viele I/O Ports haben?
Hast du schon mal daran gedacht einen Intel zu nutzen mit dem du viel RAM hast und dann da I/O Expander anzuschließen?
Also bspw solche Chips:
http://www.ebay.de/itm/Stk-5-x-MCP23017 ... zRY8n_8i7g
...die du über I²C/SPI anschließt. Hier gibts Programmbeispiele:
http://tronixstuff.com/2011/08/26/tutor ... -io-ports/
Ich weis zwar nciht ob da PWM geht, aber das könntest du ja dann über die Hauptplatine machen und hier Taster u.ä. anschließen.
Oder hier zum Anschluss von Servos:
https://www.adafruit.com/product/815

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5296
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: Diskussion zu: lernfähiges Neuronales Netz (NN, neural net)

Beitragvon HaWe » 14. Mär 2016 15:06

hallo,
danke für den Tipp!
Tatsächlich kenne ich den MCP23017 aus vielen Postings und habe mich auch schon über die Programmierung informiert, sowohl per Arduino als auch per Raspi:
viewtopic.php?f=78&t=8491&start=30#p68969
viewtopic.php?f=78&t=8689&start=15#p67909 (etwa in der Miite des Posts)

Es wird ja nun wohl tatsächlich ein Raspi 2B die Basis für das NN werden, denn mit dem DUE gibt es viel zu viele andere Hardware-Probleme. Mit Geany als IDE und den wiringPi libs von Gordon Henderson klappt es inzwischen auch deutlich besser als mit den nackten Linux-GPIO-Befehlen.

RAM-Speicher ist damit beim Pi 2B kein Thema mehr (1 GB!! 8-) ), aber ich muss hier beim Pi für alles und jedes das Rad neu erfinden, denn es gibt kein Gesamt-Pi -Tutorial samt Referenz und Manuals wie den "Arduino Playground" - alles muss man mühsam selber zusammensuchen. Im Grunde bedeutet das:
Ich muss eine völlig neue, eigenständige Sensor- und Motor-API für den Raspi aus dem Boden stampfen...!

Dennoch, der Roboter fährt schon mal, mit Fernsteuerung und IMU und Telemetrie; als nächstes kommt Odometrie, dann IR-Distanzsensoren und ein GPS-Sensor auf 1 oder 2 Muxer-Boards, dann Auto-Navigation, dann hoffentlich bald auch sogar ein LIDAR.... und dann kommt der große Auftritt vom NN auf Raspi-Basis.

viewtopic.php?f=78&t=8851&p=69043#p68940

Es wird noch ein langer Weg, aber Fernsteuerung und Telemetrie sind extrem wichtig für die NN-Trainingsphasen, die hatte ich ja für den Arduino damals gar nicht. Jetzt für den Raspi sind sie so gut wie fertig.

Ich habe nun allerdings vor, 2 zusätzliche Arduino DUEs (oder 1 DUE und 1 MEGA) als Muxer-Boards für den Raspi einzusetzen (1x I2C, 1x alternativ USB-UART oder nochmal i2c), denn jeder DUE/MEGA hat ja 50 DPins und 12 ADC-Pins plus weitere Schnittstellen, höchstens Timing-Gesichtspunkte könnten für den MCP größere Vorteile bringen...:
wenn, ja wenn man ihn mit 400kB/s i2c am Raspi betreiben könnte, was wohl aber derzeit noch nicht geht (Einschränkung auf Raspi-Seite).

Ich bräuchte 1000x mehr Zeit, aber Familie und Beruf fordern noch sehr viel Tribut an das Projekt, dennoch... es wird so langsam...ganz...langsam... ;)

Danke aber der Nachfrage!

(verschoben in Diskussions-Thread)
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

TheCritter
Schreibt ab und zu
Schreibt ab und zu
Beiträge: 21
Registriert: 24. Jun 2015 08:29

Re: NXC/C für NXT + Arduino: lernfähiges Neuronales Netz (NN, neural net)

Beitragvon TheCritter » 6. Apr 2016 09:21

Ich bin gerade dabei das auszuprobieren.
Wie starte ich da? Auf Lernen gehen und dann?

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5296
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: Diskussion zu: lernfähiges Neuronales Netz (NN, neural net)

Beitragvon HaWe » 6. Apr 2016 09:42

uhhh... habe das selber seit 9 Monaten nicht mehr genutzt und auch den damaligen Hardware-Aufbau gar nicht mehr...
wenn ich mich recht erinnere:
unten im Bedienfenster ist eine Menüleiste.
Wie sie konfiguriert ist mit welchem Button-Press, steht im Sourcecode.
Es gibt 2 Möglichkeiten, eine Input-Output-Kombination als Lernmuster zu speichern
a) manuell, dann setzt du die einzelnen Input-Werte in einem Fenster, und anschließend die Output-Werte ebenfalls, dann speichern
b) per gerade anliegender Signale an den IOs: hier wird ein Snapshot der augenblicklichen IO-Daten erstellt, also sowohl inputs als auch outputs. Sie symbolisieren ein Verhaltensmuster, das momentan anliegt und jetzt als "richtig" zu lernen ist.

In beiden Fällen liegen die IO-Verknüpfungen nun quasi in einem temporären Lern-Puffer.
Anschließend müssen sie jetzt trainiert werden, auch dafür gibt es ein Submenü.

Bin hier gerade "auf Arbeit", wo ich keine Notizen zu meinen Arduino-Programmen habe (verständlicherweise).
Ich will mal sehen, ob ich sie heute abend zuhause rauskramen und durchforsten kann.

Zum Laufen werde ich es nicht mehr kriegen, da meine 2 Dues inzwischen fest mit einem Raspi und ganz anderen IOs verschaltet sind, womit sie andere Aufgaben erledigen müssen. Aber ich guck mal!
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E


Zurück zu „Projekte, Showcase, Bauanleitungen“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 Gäste

Lego Mindstorms EV3, NXT und RCX Forum : Haftungsauschluss