PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Viele Inputs/Outputs verarbeiten



MArc_
15.03.2010, 02:11
Hallo liebes Forum,

wie ihr seht, bin ich ein neuer in eurer schönen Runde und habe nach längerem Mitlesen ein, zwei Fragen.

Ich habe in Planung, ein kleinen humanoiden Roboter zu entwerfen,
mit bedarfter "Intelligenz". Ziel ist erstmal, das ausbalancieren eines Rumpfes mit zwei Beinen - wo wir schon zur Frage kommen.

Mit welcher Hardware (kleines netbook vllt?) kann ich viele Inputs (Sensoren)
und Ouputs (Servos) (gleichzeitig) ansteuern ?
Grob für den Anfang dürften 50 reichen.
Programmiersprache ist erstmal egal - erlernbar ist alles. (Ich präferiere zu C)

Da ich später auch komplexe Berechnungen (mit viel RAM) ausführen muss, ist die erste wahl natürlich eine art Laptop(netbook), das dann aufgerüstet wird mit Schnittstelle XY (das ist die Frage), weil da schon alles bei ist und sehr erschwinglich ist.
Platzmangel an sich gibt es also erst einmal nicht.

Was sind eure Empfehlungen?
Gibt es schon erschwingbare Lösungen,
um über 1.000 Inputs/Outputs (das beste wäre über den PC-Hardware) anzusteuern?

Grüße,
Marc

williwilli
15.03.2010, 08:25
Hi Marc,

zuerst mal Willkommen im Forum.

Die Aufgabenstellung ist nicht ohne, und die Anforderungen auch. Du hast es schon ziemlich heftig vor...

Es gab vor Jahren mal eine erschwingliche PC-Karte mit 192 digitalen I/O. Treiber für C und Pascal waren dabei. Der Hersteller hatte damals auch Mehrkanal D/A und A/D im Angebot (wenn ich mich recht erinnere bis zu 24 Kanäle). Ich glaub', ich hab so eine I/O-Karte noch irgendwo zu Hause rumliegen - die kann ich aber mangels klassischer AT-Slots heute nirgends mehr verwenden...
Ich hab mal unter "PC IO Karte" gegoogelt - das Billiste waren 160€ für 'ne PCI-Karte mit 72 I/O.

Du wirst also mehrere Probleme bekommen:
- Kein PC alleine ist in der Lage, so viele Erweiterungskarten zu tragen, wie Du benötigst (in der Forschung werden für solche Aufgaben eigene Rechner konstruiert).
- Mit einem Netbook o.ä. kannst Du das mangels Platz in der Kiste ganz vergessen.
- Wahrscheinlich frisst Dir bei möglichem Vollausbau eines Towers jedes PC-Betriebssystem so viel Rechenzeit, daß es mit der Aufgabenstellung dann auch noch Essig ist...

Ich sehe mehere Lösungsansätze:
- Überdenke noch mal Deine Forderung. Bis zu 1000 I/O sind im Hobbybereich jenseitz aller Realität.
- Wenn Du bei einer PC-basierten Lösung bleiben willst, überlege Dir, wieviel Intelligenz Du vom PC weg auf externe Prozessoren verlagern kannst (egal ob über USB oder sonstwie angebunden).
- Entscheide Dich, ob es überhaupt eine PC-Lösung sein muß. Die Meisten hier arbeiten mit den ATMegas, die speziell für schnelle Steuerungsprozesse entwickelt wurden. Und da reichen in den allermeisten Fällen die 32 Ports eines "normalen" ATMega aus. Wenn's denn wirklich viel mehr sein muß: Der ATMega 2560 hat derer über 80...

15.03.2010, 10:17
Hallo !

Und es besteht die Möglichkeit mehrere Atmegas über I2C oder RS232 oder...., da gibt es zig Möglichkeiten, miteinander kommunizieren zu lassen.

Roland

MArc_
15.03.2010, 15:51
Hallo Leute,

danke schonmal fuer die Antworten :)

Wenn es an der Definition Hobby liegt, dann lass uns
von der Definition weg :) Bin bereit, wenn es sein muss, auch richtiges Geld hinzulegen.

Ein PC praeferier ich aus dem Grund, weil ich (In der Endphase) von zwei HD Kameras den Input verarbeiten will und ich da gut Rechenleistung brauche. Moechte nicht, dass wenn ich an die Phase angelange, alle MircoController austauschen muss.

192 dig. I/O ist schonmal ein Anfang. Erweiterbar, wie du sagst, ist es allerdings dann nur ueber AT-Slots oder eben PCI. Das ist natuerlich unschoen, gerade aus dem Grund, weil der Platz dann doch nicht soooo unwichtig ist. Koennte zwar dann auch mehrere PCs koppeln, allerdings kost' das dann wirklich viel Platz.

Die 1000 I/O war nur einfach ne Hausnummer - das kann sich gut und gern verdoppeln - genauere Konzeptionen habe ich allerdings nicht auf Papier, um genaue Anzahl festzulegen.

ATMegas sind, wie ich hier im Forum oft gelesen habe, nur fuer recht 'dumme' Programme zu gebrauchen (Oder taeusche ich da ?).
Um vielleicht kurz die Dimension an Rechenleistung zu erlaeutern: Jeder Input wird mit diversen (oft unterschiedlichen) Routinen verarbeitet, wovon jeder einzelne zugriff auf eine globalen Speicher braucht - hier sicherlich 800MB(Im Speicher wird eine Datenbank sein, mit vielen dynamischen Tabellen - eine art mini-KI). Ich koennte auch swappen, aber dann koennte mir das zu langsam werden, hier also besser mehr andenken.

Ich habe also folgendes Problem:
- Viel Rechenleistung (Echtes Multithreading waere zu bevorzugen)
- Viel Arbeitspeicher (Ab 1GB duerfte es Interessant werden)
- Viel Festplatte (Es kommt viel Rohmaterial zusammen, das ich einfach "loggen" moechte)
- Viel I/Os

Wobei, wie es mir scheint, letzteres das groesste Problem zu scheinen vermag. Durch die Groesse der Rechenleistung && Ram sind kleine ARM aussen vor - mehrere gekoppelt, also so, dass es an die Dimension kommt, wuerde dann wohl auch den Platz sprengen.

Als OS wuerde ich zu lightweight linux/bsd tendieren, da ich da schnell und easy mein krempel installieren kann - allerdings entscheidet das wohl der Treiber fuer - die noch zu suchende - Schnittstelle XY :)


//Nach kurzer Ueberlegpause:

Wie Rolang meinte, koennte man mehrere Atmegas ansteuern. Dann koennte ich fuer jeden Teilabschnitt ein eigenes Protokoll definieren, ueber die dann mit dem Herz/Hirn (hier dann PC) kommunizieren. So koennte ich die I/Os auf viele einzelne Platten aufsplitten und die kommunikation wuerde ueber TCP an den Hauptrechner laufen (TCP weil am einfachsten zu programmieren). Die Teilabschnitte dienen hier dann also nur als Zwieschenspeicher, die dann, je nach Trigger, bestimmte Infos gebuendelt an den Hauptrechner senden, dieser Wertet aus und reagiert mit einer entsprechenden Antwort.

Gibt es kleine Microcontroller, die ca. 64 I/O, Linux/bsd-kompatibel sind und Netwerk haben ? Wenn moeglich kleiner (von der Groesse) als die von AVR. Werde nochmal weiter danach googeln - aber vielleicht hat jemand dieses schon gekauft und kann berichten :)

Viele Gruesse,
MArc

021aet04
15.03.2010, 16:59
Was hast du vor? Wenn du soviele IOs brauchst würde ich einzelne Atmegas nehmen und diese dann an einen PC oder ARM senden. Wenn du übers Netzwerk senden willst gibt es einzelne ICs oder fertige Module mit Linux (z.B. XPORT). Es gibt Megas mit 100 Pins (inkl. Versorgung). Z.B. den Atmega1280. Die Größe beträgt bei einigen Gehäusen 9x9mm.

MfG Hannes

markusj
15.03.2010, 17:22
@Hannes: Einfach den ersten Beitrag lesen ...
@Marc:
Ich fürchte ich muss dich Mal auf den (harten) Boden der Realität zurückholen.
Tatsächlich sind humanoide Roboter extrem anspruchsvolles Thema, alleine das Laufen auf zwei Beinen beschäftigt ganze Forschungsgruppen an Universitäten.
Spracherkennung, Hand-Auge-Koordination, Objekterkennung etc. sind nur einige der Herausforderungen die zu meistern sind.
Im SFB 588 (http://www.sfb588.uni-karlsruhe.de/) an der Uni Karlsruhe wird z.Bsp. an humanoiden Robotern geforscht, in der aktuellen Armar-Generation steckt eine Menge Rechenpower - mit einem einfachen Netbook hast du da wohl kaum Chancen.
Und wenn ich schon Karlsruhe als Beispiel heranziehe: Armar-III kann "noch nicht mal" laufen.

Ehrgeiz ist schön und gut, aber ein solches Projekt dürften wohl den Rahmen von so ziemlich allen hier im RN sprengen.

mfG
Markus

021aet04
15.03.2010, 17:28
@Hannes: Einfach den ersten Beitrag lesen ...
Aber ein humanoider Roboter mit über 1000 IOs ist etwas übertrieben.

MfG Hannes

markusj
15.03.2010, 18:05
Das kann schon sein - was an der Projektidee ist nicht übertrieben?

Übrigens: Typischerweise erledigt man solche Aufgaben dezentral über ein Bussystem, bei dem sich einzelne Komponenten um bestimmte Aufgaben (ein Bein oder sogar nur ein Gelenk) kümmern. Die Ansteuerung erfolgt dann von einer leistungsfähigen Zentrale aus.

mfG
Markus

MArc_
15.03.2010, 18:10
Hallo,

freilich sind 1000 I/Os fuer den Anfang zu hoch gegriffen,
allerdings wollte ich damit ausdruecken, dass ich wenig erfreut
waeren, wenn das Objekt waechst und ich dann Microcontroller
austauschen muss, sobald ich mehr I/Os brauche - aber das
hat sich ja nun durch den Gedankengang (siehe oben) erledigt.

@markusj, in der Tat ist mir bewusst, dass es diverse Unis gibt, die
sich damit beschaeftigen. Ich wuerde mir auch nicht anmassen,
zu sagen, dass ich es besser machen wuerde. Allerdings habe ich
ein (Software) Konzept im Kopf, das die Rechenleistung enorm minimiert
und das gilt es nun zu testen - dafuer brauch ich die Controller.

Es mag nach deiner Erfahrungen absurd klingeln und das "Projekt"
uebermotiviert, aber wenn jeder gleich bei einer Idee aufhoert, nur weil
jemand dran zweifelt, waeren wir nicht auf dem technischen Stand, an dem wir heute sind.

Danke fuer eure Inspirationen,
MArc[/quote]

williwilli
16.03.2010, 08:15
Hallo Marc,


Es mag nach deiner Erfahrungen absurd klingeln und das "Projekt" uebermotiviert, aber wenn jeder gleich bei einer Idee aufhoert, nur weil jemand dran zweifelt, waeren wir nicht auf dem technischen Stand, an dem wir heute sind.
Nicht gleich beleidigt sein :-) Nur: In diesem Forum sind fast ausschließlich Hobbybastler unterwegs (und das meine ich nicht abwertend). Und für die Meisten von uns - so realistisch sind wir dann schon - liegt ein solches Projekt jenseits aller technischer und vor allem finanzieller Mittel.

Nichtsdestotrotz: Die "großen" AVRs mit 80 Ports benötigen in SMD-Ausführung nur ca. 1 cm². Da bekommst Du auf der Größe einer Streichholzschachtel auch die Kommunikation mit unter... Wie Hannes sagte, gibt's auch fertige Module. An externer Kommunikation kenne ich als fertige Lösungen im Moment aber nur USB oder Ethernet.
Wenn Du es genügend modularisierst, werden die I/Os der Prozessoren immer reichen. Für eine neue Aufgabe gibt es dann eben einen weiteren Prozessor...
AVRs sind nicht dumm - die Probleme sitzen immer vor der Tastatur :-) Und dann bist Du wieder bei der Modularisierung.

Wenn Du aber von den AVRs nicht sooo begeistert bist: Schau Dir mal den Propeller der Fa. Parallax an - vielleicht ist der dann eher was für Dich? Einsetzen wird den aber wahrscheinlich kaum jemand aus diesem Forum...

MArc_
17.03.2010, 01:17
Hallo Freunder der Nacht,


nein, um gottes willen - ich bin nicht beledigt. Bis das passiert, dauert es ein wenig :)

Da ich recht wenig Lust und vor allem keine Zeit für das selbst basteln der Platine habe, habe ich mich ein wenig "umgegoggelt", was es da für fertige Bausteine gibt. Folgend mein Treffer, der mir am meisten zusagt:

http://www.imaginetools.com/products/RCM4200/index.shtml

Hat damit jemand mal gearbeitet und kann evtl. 1-2 Sätze dazu sagen? Wäre sehr nett :)

Grüße,
MArc