Mit einem entfernten Gehirn einen winzigen Roboter bauen

8

Ich möchte einen Roboter bauen, der so klein wie möglich und mit so wenig "empfindlichen" Teilen wie möglich ist (die Bots werden ineinander schlagen).

Ich habe mich gefragt, ob es möglich ist, einen kleinen Chip zu verwenden, der Bluetooth- / IR- / WLAN-Befehle zum Bewegen der Motoren empfängt und im Gegenzug Feedback basierend auf Sensoren wie einem Beschleunigungsmesser zurücksendet (um einen Aufprall zu erkennen).

Mit dem PiCy kann ich wahrscheinlich so etwas erreichen

pikant

Dies ist jedoch etwas größer als ich es gerne hätte (aufgrund der Größe des Pi) und ich bin mir nicht sicher, wie lange der Pi dauern würde, um kontinuierliche Stöße zu erzielen.

Ich möchte daher versuchen, das Gehirn (den Pi) zur Seite der Arena zu verschieben und einfach einen kleinen Chip zu verwenden, um Bewegungsbefehle zu empfangen und Daten vom Beschleunigungsmesser zurückzusenden.

Haben Sie Empfehlungen für einen solchen Chip? Wifi wäre meine Wahl, aber wenn es die Größe beeinflusst, könnte ich BT versuchen

Bearbeiten: Nach weiteren Recherchen scheint es, dass ein Arduino Nano mit einem WiFi RedBack-Schild die Arbeit zusammen mit so etwas für die Motoren erledigen könnte: http://www.gravitech.us/2mwfecoadfor.html

Titan
quelle

Antworten:

2

Möglicherweise sind die rPI-Karten langlebiger als erwartet. Sie haben nicht viel Masse, daher sollte eine kleine Menge Gummi- oder Schaumstoffpolster (um das Klappern zu verringern) ausreichen, um sie zu schützen - vorausgesetzt, Ihre Roboter schlagen nicht mit genügend Kraft zusammen, um das Kunststoffgehäuse zu knacken Sie.

Wenn Sie die Verarbeitung auf ein entferntes (und wahrscheinlich leistungsfähigeres) System verlagern, erhalten Sie einige Vorteile, wie die von Ihnen genannten: weniger Gewicht, weniger Bruch, weniger Batterie, die zum Bewegen des Objekts erforderlich ist.

Die Nachteile sind die Bandbreitenbeschränkungen und die Latenz. Sobald Sie die Verzögerung der drahtlosen Übertragung eingeführt haben, wechseln Sie von einer hardwarebasierten Schleife, die im Ballpark von Tausenden von Iterationen pro Sekunde verarbeitet werden kann, zu einer netzwerkbasierten Schleife, die nur Dutzende von Iterationen pro Sekunde verarbeiten kann.

Um optimale Ergebnisse zu erzielen, sollte Ihr Design so viel Steuerungsverarbeitung wie möglich auf der lokalen Hardware ausführen und die Remoteverbindung für übergeordnete Planungsentscheidungen verwenden, die nur einige Male pro Sekunde empfangen werden müssen.

Ian
quelle
Ihre Kontrolle würde über eine Webcam über das Internet erfolgen, unabhängig davon, dass ohnehin eine leichte Verzögerung zu erwarten ist.
Titan
0

Es gibt zwei Ansätze, um die von Ihnen beschriebenen Roboter zu bauen.

Das erste ist, wie Sie vorschlagen, die Entkopplung der Rechenleistung vom Rest des Roboters, der die Sensoren und Aktoren hält. Dazu benötigen Sie eine gewisse Kommunikation zwischen der Verarbeitungseinheit (PC / RPi / Anderer Mikrocontroller) und Ihrem Roboter. Eine kostengünstige Lösung hierfür ist die Verwendung billiger Bluetooth-Module (suchen Sie bei eBay nach "Serial Bluetooth Module", sie sollten nicht mehr als 5 US-Dollar kosten). Auf der Roboterseite benötigen Sie ebenfalls einen Mikrocontroller, da Sie die Daten vom Bluetooth empfangen, verarbeiten und in Steuersignale für die Motoren umwandeln müssen. Darüber hinaus ist derselbe Mikrocontroller für das Lesen der Sensoren und das Zurücksenden der Daten an die Fernverarbeitungseinheit verantwortlich.

Der zweite Ansatz besteht darin, eine einzelne Verarbeitungseinheit zu haben, die sich auf dem Roboter befindet. Dieselbe Steuerung liest die Sensoren, liefert die Informationen und steuert die Motoren. Da der Roboter, den Sie beschreiben, einfach ist, könnte dieser Controller auf einem einfachen Mikrocontroller implementiert werden. Sie können Ihren eigenen Controller erstellen (mit PIC / AVR / ARM) oder eine fertige Lösung wie Arduino, BasicStamp usw. verwenden. Optional können Sie eine Bluetooth-Verbindung mit einem PC für die Telemetrie herstellen (Beobachtung der Sensorwerte und / oder manuelle Steuerung der Roboter).

Für Ihr Projekt erscheint der zweite Ansatz ansprechender. Es kostet viel weniger und Roboter reagieren schneller, da die Verarbeitung direkt am Roboter erfolgt. Da der erste Ansatz auch eine Verarbeitungseinheit am Roboter erfordert, scheint es ein Overkill zu sein, eine zweite Einheit für die Verarbeitung zu verwenden. Auf der anderen Seite können Sie mit dem ersten Ansatz Ihre Robotersteuerung in einem übergeordneten System (PC / RPi) entwickeln, das je nach Erfahrung eine komfortablere Umgebung bietet.

Demetris
quelle
Ihr Hauptgrund, keine große Steuerung am Roboter anzubringen, war die Vermeidung von Schäden nach dem Aufprall. Wenn ich mich für den Fernbedienungsansatz entscheiden würde, würde ich nur eine einzige Hauptsteuerung für mehrere Roboter benötigen (Befehle / Rückmeldungen mit jeweils einer eindeutigen ID identifizieren). Möglicherweise kann ich die "Brain on the Bot" -Lösung mit einem Adriuno Nano erreichen, der mit einem Wifi-Schutzschild klein genug aussieht (um Socketio-Kommunikation zur Steuerung und Rückmeldung mit dem Remote-Server zu senden und zu empfangen).
Titan
Was schlagen Sie genau vor? Um einen Arduino Nano mit WiFi am Roboter und eine zusätzliche Fernverarbeitungseinheit zu haben? Welche Einheit führt die Steuerungsberechnungen durch?
Demetris
Nun, ich bin mir immer noch nicht sicher, haha. Der Nano könnte alles, was ich denke!
Titan
Ja, für die Zwecke Ihres Projekts scheint die einzelne integrierte Verarbeitungseinheit die bessere Wahl zu sein! Wie ich in der Antwort erwähnt habe, können Sie, wenn Sie eine Kommunikation mit dem Roboter benötigen, dies über billige Bluetooth-Module tun. Alternativ können Sie (noch günstiger!) Nrf24l01 + Module verwenden, wenn Sie ein Netzwerk aufbauen müssen, da Sie mehrere Roboter haben.
Demetris
0

Ich glaube, ich habe den perfekten Controller für dieses Projekt gefunden:

http://www.robotshop.com/de/dagu-micro-magician-robot-controller.html

Mit dem Micro Magician kann ich 2 einfache Gleichstrommotoren steuern, Stöße und Abstürze mit dem Beschleunigungsmesser erkennen UND Bewegungsbefehle vom IR-Empfänger empfangen! Ziemlich toll für die Größe.

Das einzige Teil des Puzzles ist das Zurücksenden der Daten an die Fernbedienung (Beschleunigungsmesserdaten). Ich bin mir nicht sicher, ob ich einen IR-Sender oder vielleicht BT / Wifi anschließen könnte?

Bearbeiten: sieht so aus, als könnte dies den Job machen! http://www.dawnrobotics.co.uk/dagu-arduino-bluetooth-module/

Jetzt finden Sie kleine Motoren ...

Titan
quelle
1
Synapse RF266PC1 sind interessante Geräte. Sie sind klein, einfach zu programmieren und basieren auf Python. Die ADCs sind nicht so gut, aber in Kombination mit einem ATmega328 (in Arduino UNO verwendeter Chip) erhalten Sie möglicherweise genügend Rechenleistung, um Daten hin und her zu senden. Ich habe auch Wixels verwendet, aber der RX / TX-Abstand lässt zu wünschen übrig. Diese RF266PC1 können sofort Mesh-Netzwerke herstellen, Wixels kann das überhaupt nicht.
Daniel F