Frage:
Ist Arduino als humanoider Roboter-Controller geeignet?
alvinsj
2010-08-26 18:52:43 UTC
view on stackexchange narkive permalink

Ich bin hier kein Arduino-Entwickler. Ich möchte jedoch fragen, ob ein Entwickler, der Erfahrung mit den Fähigkeiten von Arduino hat, geeignet ist, einen humanoiden Roboter zu entwickeln. Der humanoide Roboter besteht aus einer visuellen Kamera, Sensoren und Servos, einem drahtlosen Transceiver, einem Kompass, einem Beschleunigungsmesser usw.

Korrigieren Sie mich, wenn ich etwas falsch erwähnt habe.

Sechs antworten:
#1
+11
Leon Heller
2010-08-26 19:13:16 UTC
view on stackexchange narkive permalink

Der Arduino Duemilanove verfügt nur über 14 digitale E / A und sechs analoge Eingänge sowie maximal 2k SRAM. Es sieht nicht so aus, als könnte es all diese Peripheriegeräte ohne Porterweiterung verarbeiten, und es verfügt nicht über genügend Speicher für die Bildverarbeitung.

Möglicherweise existiert jedoch ein Bildverarbeitungsschild oder könnte entwickelt werden, so dass der Arduino lediglich die Aufgabe übernimmt, Informationen von Schilden zu lesen und den Aufruf bestimmter Aktionen von anderen Schilden zu befehlen
#2
+8
ttt
2010-09-07 13:46:30 UTC
view on stackexchange narkive permalink

Ein Arduino alleine hat zu wenig E / A und zu wenig CPU-Leistung und Speicher. Sie können mehrere Arduinos verwenden (wie von Vicatu vorgeschlagen) oder etwas Stärkeres verwenden, wie das Mbed (wie von Joby Taffey vorgeschlagen). Ich würde eine Mischung aus beiden Ideen vorschlagen. Verwenden Sie einen leistungsstarken Prozessor, um KI und Gesamtsteuerung bereitzustellen, und verwenden Sie einfachere Mikrocontroller als E / A-Manager. Tatsächlich würde ich eine vollständige Hierarchie mit so vielen Ebenen vorschlagen, wie mit leistungsstärkeren Prozessoren erforderlich ist, wenn Sie sich durch die Hierarchie erheben.

Zum Beispiel habe ich den Gameboy Advance währenddessen als "Gehirn" eines Roboters verwendet Die E / A wurde von PIC16F84-Mikrocontrollern verwaltet. Ich denke, ein ideales Arrangement wäre etwas so Leistungsstarkes wie ein PC (vielleicht ein Mini-ITX-Board) oder etwas wie ein Beagle-Board wie das Gehirn, eine mittlere Schicht mit mehreren MBEDs oder Zilog Z8s als Subsystemmanager (Bewegungssteuerung, Sensormanagement) , einige Sensorvorverarbeitung usw.). und viele kleine / billige Mikrocontroller (Atmel / PIC / TI MSP430 usw.) zur Verwaltung der Beinarbeit. Die obere Schicht kann Ethernet oder USB verwenden, die unteren Ebenen können RS232, I2C usw. verwenden.

Ein Vorteil dieses gesamten Ansatzes besteht darin, dass Sie Ihre Entwicklung modularisieren können (gut für Gruppen von Freunden oder Studenten). Einzelne Module können besser definierte Ziele haben (und leichter zu erreichen sein) und selbst vollständige Projekte sein. Auf höheren Ebenen können Sie sich auf die KI und die gesamte Robotersteuerung konzentrieren, ohne sich um Details auf niedriger Ebene kümmern zu müssen (wenn Sie beispielsweise einen Befehl zum Drehen des Roboters um 45 Grad erteilen können, haben Sie Ihr Problem effektiv in zwei Hälften geteilt. Die höhere Ebene kann sich konzentrieren über Entscheidungen, in welche Richtung gedreht werden soll (Entscheidungsfindung), während ein Controller auf niedrigerer Ebene nur einfache, genau definierte Motorbefehle von oben erfüllen muss. In gewisser Weise modelliert dies unseren Roboter anhand der Funktionsweise unseres Gehirns (nicht auf neurologischer Ebene). Wenn wir uns entscheiden, eine Tasse in die Hand zu nehmen, müssen wir nicht bewusst über die Mechanik nachdenken, die wir tun. Wir könnten diese Aktion auf drei Ebenen sehen:

  1) Hoch Füllstand - die Entscheidung, den Becher aufzunehmen.2) Mittlerer Füllstand - Koordinierung der Motoraktionen und grundlegende Analyse der sensorischen Eingaben.3) Niedriger Füllstand - Motoraktion ausführen, Sensordaten sammeln.  

Hoffe das ist hilfreich.

Ihre Software sollte modular aufgebaut sein und die KI auf hoher Ebene von der Bewegungssteuerung auf niedriger Ebene trennen, unabhängig davon, ob diese Softwarekomponenten auf separaten Mikros oder einem einzelnen Mikro ausgeführt werden. Ich nehme an, die Verwendung separater Mikros würde den Schwachen dieses gute Designprinzip aufzwingen. ;)
Im Rahmen der Frage gilt die Trennung. Es macht keinen Sinn, High-Level-AI-Code auf einfache 8-Bit-Controller zu schreiben, aber sie eignen sich perfekt als Sensorschnittstellen und Sensordatenaggregatoren. Wenn Ihr Roboter auf einem einzelnen Prozessor läuft (und ich habe einige basierend auf ARM7 / 9 gebaut), ist es trotzdem sinnvoll, ein modulares Design zu haben, aber ich versuche nicht, Leute zu zwingen, Dinge in einem zu entwerfen bestimmte Art.
#3
+3
Toby Jaffey
2010-08-26 20:28:37 UTC
view on stackexchange narkive permalink

Mit etwas Stärkerem als dem Arduino sind Sie vielleicht besser dran. Möglicherweise ein mbed (ARM Cortex-M3-basiert).

Obwohl selbst es möglicherweise nicht genügend Leitungen gibt, um alle diese Peripheriegeräte zu steuern.

#4
+1
littlecharva
2011-01-12 17:39:18 UTC
view on stackexchange narkive permalink

Wie Tim Ring vorgeschlagen hat, ist die Kombination eines Arduino mit einem leistungsstärkeren Gerät die beste Wahl. Wenn Sie ein billiges Netbook als Gehirn verwenden, erhalten Sie diese zusätzliche Leistung. Sie können sogar die integrierte Webcam als Kamera verwenden und die gesamte Bildverarbeitung auf dem Netbook ausführen.

Der Arduino wird an eine angeschlossen USB-Anschluss am Netbook und problemlos Senden und Empfangen von Befehlen über einen seriellen Anschluss. Auf diese Weise können Sie Ihren gesamten E / A-Code in das Arduino programmieren und Ihren übergeordneten "Gehirn" -Code für die Ausführung auf dem Netbook schreiben. Beispielsweise könnte das Netbook dann Befehle wie "2 Sekunden vorwärts fahren" an das Arduino ausgeben und das Arduino könnte die Motoren steuern, um die Aufgabe auszuführen. Sie könnten ihn nach dem Messwert vom Kompass oder GPS fragen und der Arduino könnte den Wert zurücksenden.

Sie könnten auch Ihren "Gehirn" -Code die serielle Schnittstelle auf alle Daten überwachen lassen, die der Arduino senden wollte. Wenn es beispielsweise vorwärts fährt und ein Stoßfängersensor eine Kollision erkennt, kann er einen "Kollisions" -Befehl an das Gehirn senden und das Gehirn kann entscheiden, was dagegen zu tun ist.

Der enorme Vorteil der Verwendung Ein Netbook ist die Fähigkeit, Diagnose- und Debug-Informationen auf dem LCD anzuzeigen. Ich komme aus einem PC-Programmierhintergrund und finde das Debuggen eines Arduino ohne visuelles Feedback in der Tat sehr schwierig.

Das Arduino würde seine Leistung auch vom Netbook beziehen, was bedeutet, dass Sie nur eine separate Stromquelle bereitstellen müssen für die Motoren / Servos.

#5
  0
vicatcu
2010-08-26 22:22:01 UTC
view on stackexchange narkive permalink

Vielleicht ein Arduino plus eine ganze Reihe von Schildern oder mehrere Arduinos und mehrere Schilde, die miteinander kommunizieren (drahtlos oder auf andere Weise ...). Alles ist möglich :)

#6
  0
finnw
2011-01-13 08:29:34 UTC
view on stackexchange narkive permalink

Betrachten Sie ein ESMini -Modul in Verbindung mit einem Arduino. Bei 95 x 55 mm sollten Sie keine Probleme haben, es in den Oberkörper oder vielleicht sogar in den Kopf eines kleinen humanoiden Roboters einzubauen, und es hat die Verarbeitungsleistung eines Low-End-Netbooks.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 2.0-Lizenz, unter der er vertrieben wird.
Loading...