Kael
05.04.2018, 03:25
Hallo!
Ich weiß es wurde hier schon öfter mal diskutiert. Allerdings war das 'früheste' was ich wirklich fand eher im Bereich 2014 anzusiedeln. Das ist ja mittlerweile schon 4 Jahre her!
Nun wollte ich auch mal Fragen was ihr davon kennt und falls ihr Ideen habt wie ihr euch das vorstellt?
Ich kenne dahingehend vor allem kilobots, zooids und noch 1-2 ähnliche Systeme. Diese Systeme beziehen sich meines Wissens allerdings hauptsächlich auf den Bereich der 'Formationsbildung' und 'Wegfindung'.
Was ich bisher hier im Forum aber gesehen habe ist dort selbst jetzt schon einiges mehr möglich.
Daher auch die Frage... Wie würdet ihr euch einen Roboter-Schwarm in einer Pseudo-Theorie/Pseudo-Code vorstellen?
Schwarm-Basis Theorie:
Für mich z.B. ist eine so genannte "Hive-Mind" Idee am erfolgsversprechendsten.
Das Hive-Mind Konzept sagt Grundlegend ja nur aus das es einen 'Hauptrechner' geben muss, der dann entsprechende Aufgaben an 'Kleinrechner' weitergibt.
So könnte man z.B. ein Beispiel nehmen:
Der Hivemind ist an 2 Waagen angeschlossen. Diese 2 Waagen sind im Moment unterschiedlich befüllt, sollen allerdings am Ende zu 80% befüllt werden.
Waage 1: Mit Erde
Waage 3: Mit Biomaterial
Natürlich müsste man programmieren wie diese Roboter erkennen 'was' denn 'was' ist.
Aber die Grundidee dahinter sieht wie folgt aus:
Das Hivemind hat 10 Kleinroboter welche den Befehl ausführen.
Das Hivemind wird wahrscheinlich am Anfang die Roboter in 2 Gruppen aufteilen. 5 Roboter für Bio und 5 Roboter für Erde.
So reisen also die Kleinroboter los und fangen mit ihren Schaufeln an die Erde und das Biomaterial zu sammeln.
Bei ihrer Rückkehr treten sie in Kontakt mit dem Hivemind und geben wieder 'was' sie dabei haben.
Daraufhin gibt das Hivemind den die Anweisung aus: Lade auf Waage A oder B.
Daraufhin kehrt der Kleinroboter zum Hivemind zurück - gibt den Befehl "Ladung leer" aus und bekommt eine neue Aufgabe.
So zumindest in der groben Theorie.
Nun zur 'versuchten' praktischen Anwendung:
Da ich mich mittlerweile mit Python 'relativ gut' auskenne, wollte ich so etwas mal anfangen zu programmieren.
Ich habe mir einen neuen Raspberry Pi3b bestellt und stehe nun vor der Frage... Wie setze ich das nun überhaupt vernünftig um?
Da fällt es mir als erster Schritt vor allem ein es zu visualisieren...
Und wie? Ein Spiel wäre eine Option.
Also im prinzip eine weiße Fläche mit kleinen farbigen Punkten die einen Weg suchen bis sie zu einem "Rohstoff" kommen - nur um dann den direkten Weg zurück zu nehmen.
Natürlich muss man entsprechende Sensoren in das einzelne Objekt einbauen mit realistischen Werten.
Später sollte dann auch noch die Option eingebaut werden das die Roboter bei Kontakt miteinander kommunizieren können.
Ich möchte es allerdings auch gern technisch realisieren...daher auch hier erstmal die Theorie...
Bei der Technik selbst stellt sich mir vor allem die Frage nach dem richtigen Development-Board
Welche Technik ich bisher vorgesehen hätte:
Raspberry PI als Hivemind.
Priorität: A
Stationär
System: Raspberry
Energie: Batterie / Direktanschluss
Sensoren: Noch unklar
Module:
-Auflademodul für Kleinroboter(A)
-Auflademodul für Mediumroboter(C)
-Lagersystem
-Speichersystem
Grundidee:
Der Hivemind ist so gesehen der 'Aufgabenverteiler' des ganzen. Er 'sagt' den Kleinrobotern was sie tun sollen wenn sie zum Hivemind zurückkommen. Außerdem gäbe es die Möglichkeit den Hivemind auch als eine Art 'Karte' zu nutzen oder gar
zu realisieren. Es ist das größte Speichermedium im System und wenn 'Daten' von den Kleinrobotern reinkommen soll der Hivemind in der Lage sein Daten zu generieren welche z.B. auch in der Lage sein sollen eine Umgebung zu
Kartographieren oder auch 'Risikostellen' zu markieren. Diese Daten könnten dann z.B. an die Kleinroboter oder die Secondminds weitergegeben werden so dass diese die entsprechende Information nutzen können.
Arduino als 'Secondmind'
Priorität: C
Typ: Mediumroboter
Mobil
System: Arduino
Energie: Batterie(Akku)
Sensoren: Noch unklar
Fortbewegung: Reifen
Module:
-Aufladesystem für Kleinroboter
Grundidee:
Die Idee des Secondminds würde sich darauf fokussieren eine Art 'Gebietserweiterung' hinzu zu fügen. Soll bedeuten, falls eine 'Ressource' außerhalb der Reichweite
des Hiveminds liegt - diese aber von den Kleinrobotern 'entdeckt', kann der Befehl kommen das ein 'Secondmind' hinausgesandt wird, wodurch ein Kontakt durch den Secondmind zum Hivemind als Leuchtfeuer
geregelt wird. Dabei bietet der Secondmind ebenfalls eine temporäre Aufladestation (Optional)
Arbeitsbot:
Priorität: A
Typ: Kleinroboter
Mobil
System: Noch unklar
Energie: Batterie(Akku)
Sensoren: Noch unklar
Fortbewegung: Lenkrollen
Module:
-Aufnahmesystem
-kleines Lagersystem(Optional)
-Speichersystem
Grundidee:
Die Grundidee der Arbeitsbots ist das simple sammeln von Ressourcen. Ressourcen müssten im Beispielfall natürlich entsprechend 'anfällig' für die Sensoren der Arbeitsbots sein. Dies wäre z.B. durch Magnete oder Farben möglich.
Die Arbeitsbots bringen demnach die Ressourcen zum Hivemind und 'lagern' sie dort, bis das Hivemind 'beschließt' (oder vom Benutzer eingegeben) genügend Ressourcen gesammelt hat.
Der Arbeitsbot benötigt ein kleines 'Speichersystem' welches Unterteilt wird in 'Grundbereich', 'Bearbeitungsbereich' und Anweisungen.
Im Grundbereich steht der unveränderliche Code. Dieser hat die Teile für die Bewegung und Mechanik, wie z.B: "Batterie ist unter 10% - Nach dem Abladen auf die Aufladestation fahren". Der Bearbeitungsbereich muss der Speicherbereich sein der für die Umsetzung von Algorithmen verwendet wird und der Anweisungsbereich
soll die Anweisungen vom 'Hivemind' übergeben bekommen und diese dann ausführen.
Ressourcen
Priorität: B
Grundidee:
Die Ressourcen können kleine Bälle oder Würfel sein die man durch eine besonders hervorstehene Farbe oder ein anderes Mittel kennzeichnet, welche von den Robotern erkennbar wäre.
Kampfbot
Priorität: D
Grundidee:
Keine ausführliche Beschreibung. Die Idee dahinter war das man evtl 2 Hiveminds mit verschiedenen Identitäten aufsetzt. z.B: Hivemind Blau und Hivemind Rot. und sollten die Kampfbots auf einen vom anderen 'Team' treffen,
würden die Bots versuchen die anderen Bots davon abzuhalten ihrer Aufgabe nachzugehen.
Baubot
Priorität: E
Grundidee:
Auch noch nichts ausführliches. Im Prinzip war die Idee dahinter das man einem 'Baubot' eine Blaupause oder mehrere einspeichert, die dann entsprechend Ressourcen nutzen um daraus etwas zu 'errichten'.
Welche Fragen ich mir noch stelle:
Bergungsbot, Sammelbot, Signalbot usw usw... Gibt noch eeeeiniges was man hinzufügen könnte! Aber ich finde das reicht.
Welches System für die kleinen Roboter?
Eher ein System auf Arduino oder MicroPython-Basis?
Wie sollen die KLeinroboter mit dem Hivemind kommunizieren und untereinander kommunizieren?
Über Bluetooth? (Was dann doch recht teuer wäre) oder doch am ehesten über eine Art 'Drahtverbindung' die bei Kontakt mit dem anderen eingeschaltet wird?
Sollte der Hivemind als eine Art Leuchtfeuer fungieren
Als 'Grundorientierungspunkt' der bis zu einer entsprechenden Reichweite ausreicht und falls die Roboter diese Reichweite überschreiten automatisch die letzten 100 Sekunden 'zurückfahren' um in Reichweite zu kommen?
Sollte also die Möglichkeit eingebaut werden für 'Außenposten' welche durch den Hivemind genutzt werden könnten und sich automatisch an eine 'stark befahrene Grenze' setzt? Siehe Arduino als Secondmind.
Schwarmintelligenz!
Ein für mich eher großes Thema. Nämlich wenn die Bots untereinander 'kommunizieren' - wie gehen sie eine Problemlösung an? Meine Grundidee dahinter ist nämlich das man, bei Kontakt mit einem anderen Bot, für eine gewisse Zeit die 'Rechnerleistung teilt' und dadurch eine größere Menge an möglicher Rechenleistung produziert. Soll z.B. bedeuten: "Mehr Bots an einem Platz, desto schnellere Problemlösefähigkeit wird generiert".
Idee dahinter ist z.B. das wenn man einen kleinen Holzstab zwischen Ressourcen und Weg legt, ob die Bots in der Lage wären diesen automatisch selbst zu umgehen oder aber diesen sogar mit 'gemeinsamer Kraft' wegzuschieben.
Welche Sensoren und Module für die Bots?
Soll ich am besten sofort mit Kamerasensoren anfangen oder doch eher mit Sonarsensoren? Oder am Ende doch sogar beides? Immerhin sollen die Bots nicht miteinander kräftig kollidieren.
Mein Ziel:
Also mein 'erstes Ziel' wäre natürlich einen Raspberry als 'Hivemind' zu programmieren der in der Lage wäre mit 1-2 Bots zu kommunizieren. Die Bots selbstständig zum 'Hivemind' fahren und dort 'Daten abliefern'.
Das kann eine simple Information sein wie: "Bot #002 angedockt" - um mal ein Beispiel zu nennen. Allgemein werde ich noch viel recherchieren müssen, vor allem bezüglich Spannung und Datenverarbeitung :)
Dabei sollten die Bots natürlich auch möglichst günstig sein!
Was ich noch nicht will:
Viele Dinge, wie z.B. den Secondmind oder einen 'Kampfbot' habe ich überhaupt noch nicht im Blick. Es steht zwar dort, bedeutet aber nicht das sie umgesetzt werden sollten.
Und nun ja! Wie ist eure Lieblingstheorie am ehesten? Und meint ihr das wäre auch so umsetzbar?
Ich weiß es wurde hier schon öfter mal diskutiert. Allerdings war das 'früheste' was ich wirklich fand eher im Bereich 2014 anzusiedeln. Das ist ja mittlerweile schon 4 Jahre her!
Nun wollte ich auch mal Fragen was ihr davon kennt und falls ihr Ideen habt wie ihr euch das vorstellt?
Ich kenne dahingehend vor allem kilobots, zooids und noch 1-2 ähnliche Systeme. Diese Systeme beziehen sich meines Wissens allerdings hauptsächlich auf den Bereich der 'Formationsbildung' und 'Wegfindung'.
Was ich bisher hier im Forum aber gesehen habe ist dort selbst jetzt schon einiges mehr möglich.
Daher auch die Frage... Wie würdet ihr euch einen Roboter-Schwarm in einer Pseudo-Theorie/Pseudo-Code vorstellen?
Schwarm-Basis Theorie:
Für mich z.B. ist eine so genannte "Hive-Mind" Idee am erfolgsversprechendsten.
Das Hive-Mind Konzept sagt Grundlegend ja nur aus das es einen 'Hauptrechner' geben muss, der dann entsprechende Aufgaben an 'Kleinrechner' weitergibt.
So könnte man z.B. ein Beispiel nehmen:
Der Hivemind ist an 2 Waagen angeschlossen. Diese 2 Waagen sind im Moment unterschiedlich befüllt, sollen allerdings am Ende zu 80% befüllt werden.
Waage 1: Mit Erde
Waage 3: Mit Biomaterial
Natürlich müsste man programmieren wie diese Roboter erkennen 'was' denn 'was' ist.
Aber die Grundidee dahinter sieht wie folgt aus:
Das Hivemind hat 10 Kleinroboter welche den Befehl ausführen.
Das Hivemind wird wahrscheinlich am Anfang die Roboter in 2 Gruppen aufteilen. 5 Roboter für Bio und 5 Roboter für Erde.
So reisen also die Kleinroboter los und fangen mit ihren Schaufeln an die Erde und das Biomaterial zu sammeln.
Bei ihrer Rückkehr treten sie in Kontakt mit dem Hivemind und geben wieder 'was' sie dabei haben.
Daraufhin gibt das Hivemind den die Anweisung aus: Lade auf Waage A oder B.
Daraufhin kehrt der Kleinroboter zum Hivemind zurück - gibt den Befehl "Ladung leer" aus und bekommt eine neue Aufgabe.
So zumindest in der groben Theorie.
Nun zur 'versuchten' praktischen Anwendung:
Da ich mich mittlerweile mit Python 'relativ gut' auskenne, wollte ich so etwas mal anfangen zu programmieren.
Ich habe mir einen neuen Raspberry Pi3b bestellt und stehe nun vor der Frage... Wie setze ich das nun überhaupt vernünftig um?
Da fällt es mir als erster Schritt vor allem ein es zu visualisieren...
Und wie? Ein Spiel wäre eine Option.
Also im prinzip eine weiße Fläche mit kleinen farbigen Punkten die einen Weg suchen bis sie zu einem "Rohstoff" kommen - nur um dann den direkten Weg zurück zu nehmen.
Natürlich muss man entsprechende Sensoren in das einzelne Objekt einbauen mit realistischen Werten.
Später sollte dann auch noch die Option eingebaut werden das die Roboter bei Kontakt miteinander kommunizieren können.
Ich möchte es allerdings auch gern technisch realisieren...daher auch hier erstmal die Theorie...
Bei der Technik selbst stellt sich mir vor allem die Frage nach dem richtigen Development-Board
Welche Technik ich bisher vorgesehen hätte:
Raspberry PI als Hivemind.
Priorität: A
Stationär
System: Raspberry
Energie: Batterie / Direktanschluss
Sensoren: Noch unklar
Module:
-Auflademodul für Kleinroboter(A)
-Auflademodul für Mediumroboter(C)
-Lagersystem
-Speichersystem
Grundidee:
Der Hivemind ist so gesehen der 'Aufgabenverteiler' des ganzen. Er 'sagt' den Kleinrobotern was sie tun sollen wenn sie zum Hivemind zurückkommen. Außerdem gäbe es die Möglichkeit den Hivemind auch als eine Art 'Karte' zu nutzen oder gar
zu realisieren. Es ist das größte Speichermedium im System und wenn 'Daten' von den Kleinrobotern reinkommen soll der Hivemind in der Lage sein Daten zu generieren welche z.B. auch in der Lage sein sollen eine Umgebung zu
Kartographieren oder auch 'Risikostellen' zu markieren. Diese Daten könnten dann z.B. an die Kleinroboter oder die Secondminds weitergegeben werden so dass diese die entsprechende Information nutzen können.
Arduino als 'Secondmind'
Priorität: C
Typ: Mediumroboter
Mobil
System: Arduino
Energie: Batterie(Akku)
Sensoren: Noch unklar
Fortbewegung: Reifen
Module:
-Aufladesystem für Kleinroboter
Grundidee:
Die Idee des Secondminds würde sich darauf fokussieren eine Art 'Gebietserweiterung' hinzu zu fügen. Soll bedeuten, falls eine 'Ressource' außerhalb der Reichweite
des Hiveminds liegt - diese aber von den Kleinrobotern 'entdeckt', kann der Befehl kommen das ein 'Secondmind' hinausgesandt wird, wodurch ein Kontakt durch den Secondmind zum Hivemind als Leuchtfeuer
geregelt wird. Dabei bietet der Secondmind ebenfalls eine temporäre Aufladestation (Optional)
Arbeitsbot:
Priorität: A
Typ: Kleinroboter
Mobil
System: Noch unklar
Energie: Batterie(Akku)
Sensoren: Noch unklar
Fortbewegung: Lenkrollen
Module:
-Aufnahmesystem
-kleines Lagersystem(Optional)
-Speichersystem
Grundidee:
Die Grundidee der Arbeitsbots ist das simple sammeln von Ressourcen. Ressourcen müssten im Beispielfall natürlich entsprechend 'anfällig' für die Sensoren der Arbeitsbots sein. Dies wäre z.B. durch Magnete oder Farben möglich.
Die Arbeitsbots bringen demnach die Ressourcen zum Hivemind und 'lagern' sie dort, bis das Hivemind 'beschließt' (oder vom Benutzer eingegeben) genügend Ressourcen gesammelt hat.
Der Arbeitsbot benötigt ein kleines 'Speichersystem' welches Unterteilt wird in 'Grundbereich', 'Bearbeitungsbereich' und Anweisungen.
Im Grundbereich steht der unveränderliche Code. Dieser hat die Teile für die Bewegung und Mechanik, wie z.B: "Batterie ist unter 10% - Nach dem Abladen auf die Aufladestation fahren". Der Bearbeitungsbereich muss der Speicherbereich sein der für die Umsetzung von Algorithmen verwendet wird und der Anweisungsbereich
soll die Anweisungen vom 'Hivemind' übergeben bekommen und diese dann ausführen.
Ressourcen
Priorität: B
Grundidee:
Die Ressourcen können kleine Bälle oder Würfel sein die man durch eine besonders hervorstehene Farbe oder ein anderes Mittel kennzeichnet, welche von den Robotern erkennbar wäre.
Kampfbot
Priorität: D
Grundidee:
Keine ausführliche Beschreibung. Die Idee dahinter war das man evtl 2 Hiveminds mit verschiedenen Identitäten aufsetzt. z.B: Hivemind Blau und Hivemind Rot. und sollten die Kampfbots auf einen vom anderen 'Team' treffen,
würden die Bots versuchen die anderen Bots davon abzuhalten ihrer Aufgabe nachzugehen.
Baubot
Priorität: E
Grundidee:
Auch noch nichts ausführliches. Im Prinzip war die Idee dahinter das man einem 'Baubot' eine Blaupause oder mehrere einspeichert, die dann entsprechend Ressourcen nutzen um daraus etwas zu 'errichten'.
Welche Fragen ich mir noch stelle:
Bergungsbot, Sammelbot, Signalbot usw usw... Gibt noch eeeeiniges was man hinzufügen könnte! Aber ich finde das reicht.
Welches System für die kleinen Roboter?
Eher ein System auf Arduino oder MicroPython-Basis?
Wie sollen die KLeinroboter mit dem Hivemind kommunizieren und untereinander kommunizieren?
Über Bluetooth? (Was dann doch recht teuer wäre) oder doch am ehesten über eine Art 'Drahtverbindung' die bei Kontakt mit dem anderen eingeschaltet wird?
Sollte der Hivemind als eine Art Leuchtfeuer fungieren
Als 'Grundorientierungspunkt' der bis zu einer entsprechenden Reichweite ausreicht und falls die Roboter diese Reichweite überschreiten automatisch die letzten 100 Sekunden 'zurückfahren' um in Reichweite zu kommen?
Sollte also die Möglichkeit eingebaut werden für 'Außenposten' welche durch den Hivemind genutzt werden könnten und sich automatisch an eine 'stark befahrene Grenze' setzt? Siehe Arduino als Secondmind.
Schwarmintelligenz!
Ein für mich eher großes Thema. Nämlich wenn die Bots untereinander 'kommunizieren' - wie gehen sie eine Problemlösung an? Meine Grundidee dahinter ist nämlich das man, bei Kontakt mit einem anderen Bot, für eine gewisse Zeit die 'Rechnerleistung teilt' und dadurch eine größere Menge an möglicher Rechenleistung produziert. Soll z.B. bedeuten: "Mehr Bots an einem Platz, desto schnellere Problemlösefähigkeit wird generiert".
Idee dahinter ist z.B. das wenn man einen kleinen Holzstab zwischen Ressourcen und Weg legt, ob die Bots in der Lage wären diesen automatisch selbst zu umgehen oder aber diesen sogar mit 'gemeinsamer Kraft' wegzuschieben.
Welche Sensoren und Module für die Bots?
Soll ich am besten sofort mit Kamerasensoren anfangen oder doch eher mit Sonarsensoren? Oder am Ende doch sogar beides? Immerhin sollen die Bots nicht miteinander kräftig kollidieren.
Mein Ziel:
Also mein 'erstes Ziel' wäre natürlich einen Raspberry als 'Hivemind' zu programmieren der in der Lage wäre mit 1-2 Bots zu kommunizieren. Die Bots selbstständig zum 'Hivemind' fahren und dort 'Daten abliefern'.
Das kann eine simple Information sein wie: "Bot #002 angedockt" - um mal ein Beispiel zu nennen. Allgemein werde ich noch viel recherchieren müssen, vor allem bezüglich Spannung und Datenverarbeitung :)
Dabei sollten die Bots natürlich auch möglichst günstig sein!
Was ich noch nicht will:
Viele Dinge, wie z.B. den Secondmind oder einen 'Kampfbot' habe ich überhaupt noch nicht im Blick. Es steht zwar dort, bedeutet aber nicht das sie umgesetzt werden sollten.
Und nun ja! Wie ist eure Lieblingstheorie am ehesten? Und meint ihr das wäre auch so umsetzbar?