baumann@ocg.at
Diese Präsentation: https://www.coding4you.at/gearsbot
Autonomes Fahren und Künstliche Intelligenz mit dem GearsBot-Simulator
Grundlagen
GearsBot ist ein kostenloser, quelloffener Robotik-Simulator
GearsBot ist webbasiert (läuft im Browser). Selbstinstallation ist möglich.
Wichtige Links
GearsBot
GitHub:
https://github.com/QuirkyCort/gears/
Wiki:
https://github.com/QuirkyCort/gears/wiki
Youtube
A Posteriori-Kanal (von der entwickelnden Organisation):
https://www.youtube.com/channel/UCPMqSjdcAAkUa-qNf6m79Kg/videos
Yoni Garbourg (einer der Entwickler):
https://www.youtube.com/channel/UCbkSK_vRxYSoAxIUPB4tlaw/videos
Alternativen
Open Roberta Lab
Open Roberta Lab - OCG
Minetest
Minetest - OCG
Oberfläche
Ganz rechts beim Weltkugelsymbol kann man die Sprache umschalten.
Wenn man bei Englisch bleibt (empfohlen), hat das den Vorteil, dass man gleich die englischen
Begriffe lernt.
Auch bei Infomaterial zahlt es sich aus, bei Englisch zu bleiben weil es immer sehr viel mehr
Material gibt als auf Deutsch.
Simulator
EV3
GearsBot ist den LEGO Mindstorms EV3 nachempfunden
Beispiele
Geradeausfahrt
Blockkategorie "Motion".
Block "move tank" mit gleichen Geschwindigkeiten links und rechts oder "move steering" block
mit Richtungswert "0".
Vor und zurück fahren:
Das gleiche mit dem "move steering"-Block:
Kurvenfahrt
Experimentieren mit dem Block "move steering with direction".
Richtungswert darf zwischen -100 und 100 sein.
Am schnellsten kann man sich einen Überblick verschaffen indem man die Grenzfälle
und zusätzlich einige Werte dazwischen ausprobiert.
Geradeausfahrt, Pivot-Drehung, Drehung am Stand, ...
Ergebnis:
Ergebnis:
Ein Quadrat abfahren:
Mithilfe einer Schleife kann man das kürzer formulieren.
Ein Zeichenstift wurde außerdem hinzugefügt:
Ein Sechseck:
Ergebnis:
Ein Kreis:
Ergebnis:
Aufgabe: ein Stern
Programm:
Hindernisvermeidung
Experimentiere mit Ausgabe des Sensorwerts.
Bereiche von Sensorwerten sind eine wichtige Fehlerquelle.
Die Ausgabe der gemessenen Sensorwerte ist sehr hilfreich für eine eventuelle Fehlersuche:
Warum wäre es hier keine gute Idee "=" für den Vergleich zu verwenden?.
GPS
Ausgabe des GPS-Werts:
Zufallszahlen
Ausgabe eine zufälligen Folge aus 1 und 2:
Ausgabe eine zufällligen Folge aus "+" und "-":
Zufällige Schrittfolge (Random Walk)
Einfache und verbesserte Version.
Folgende Version zeigt verbessertes Verhalten. Der Roboter ruckelt weniger und fährt gleichmäßig:
Ergebnis:
Geradeausfahrt mit dem Gyrosensor
oder:
Ergebnis:
Linienfolger
Der Linienfolger folgt einer Linie mithilfe eines nach unten gerichteten Helligkeitssensors.
Für den Linienfolger gibt es eigene fix eingebaute Welten.
Mit "Tank"-Block:
Mit "Steering"-Block:
Schaut man ganz genau, dann sieht man, dass der Roboter eigentlich nicht der Linie folgt,
sondern einem der Ränder der Linie.
Ist der Linienfolger intelligent?
Verbesserter Linienfolger (3-state-algorithm)
Dieses kleine Projekt folgt diesem Youtube-Video: https://www.youtube.com/watch?v=ER4wu3k3krU&t.
Betrachten wir folgenden alternativen Linienfolger mit eingebauter Zeitmessung:
Der einfache Linienfolger funktioniert grundsätzlich schon wie gewünscht und braucht ungefähr 37 Sekunden:
Wie schon oben erwähnt, fährt der Linienfolger einen kleinen Bogen in eine Richtung, wenn die gemessene Helligkeit
unter dem Schwellenwert ist und einen kleinen Bogen in die andere Richtung, wenn der gemessene Helligkeitswert über
dem Schwellenwert liegt.
Das Verfahren ist robust gegenüber Vertauschung der Richtungen, denn dann fährt der Linienfolger einfach auf der anderen
Seite der Linie.
Jetzt wollen wir dieses Verfahren verbessern. Wir wollen jetzt nicht nur zwischen 2 Fällen unterscheiden
(2-state-algorithm), sondern einen dritten Fall einfügen zwischen zum Beispiel Helligkeit 40 und 60 wo wir keinen
Bogen fahren sondern geradeaus:
Das Programm ändert sich dann folgendermaßen. Die Verwendung einer Funktion wäre hier nicht notwendig.
Mithilfe der Funktion könnte man jedenfalls schnell zwischen 2-state und 3-state-Algorithmus hin- und herschalten.
Mit diesem verbesserten Verfahren fährt der Linienfolger flüssiger und auch messbar schneller:
Die Zeitmessung zeigt, dass die Fahrt um mehrere Sekunden beschleunigt wurde.
Sanftes Abbremsen
Der Roboter soll mit 70% Geschwindigkeit losfahren. 70 cm vor einem Hindernis soll
er langsam abbremsen und 20 cm vor dem Hindernis soll er stehenbleiben.
Wandfolger
Wähle "Maze Runner" als Roboter und ein Labyrinth als Welt.
Wird der Wandfolger immer aus dem Labyrinth finden?.
Wann könnte das scheitern? Abhilfe?
Ist der Wandfolger ein intelligentes Programm?
Heat Map
Mittels eine "Heat Map" wird der Weg aus einem Labyrinth gesucht.
Ist das Heat-Map-Programm intelligent?
Das Verhalten ähnelt menschlichem Verhalten: Vermeidung von Orten an denen man schon gesucht hat.
Das Verfahren lässt sich parallelisieren (analog kognitive Prozesse im Gehirn).
Künstliche Intelligenz - KI / AI
Was ist eigentlich intelligent?
Definition
KI ist der Teil der Informatik, der sich mit dem Entwurf intelligenter Computersysteme befasst, die die Eigenschaften aufweisen, die wir mit Intelligenz im menschlichen Verhalten assoziieren - Sprachverständnis, Lernen, logisches Denken, Problemlösung und so weiter. (Barr und Feigenbaum, 1981: 3)
→ Systeme die Eigenschaften menschlicher Intelligenz aufweisen.
Wir definieren KI als das Studium von Agenten, die Vorgaben aus der Umwelt erhalten und Handlungen ausführen. [Im Idealfall führt ein intelligenter Agent die bestmögliche Handlung in einer Situation aus. (Russel und Norvig, 2010: viii, 30)
→ Systeme die sich intelligent verhalten.
In beiden Fällen wird nicht darüber gesprochen wie das intelligente Verhalten
erzielt wird. Anders als von vielen fälschlich vermutet verlangt der Begriff der
Künstlichen Intelligenz nicht den Einsatz von bestimmten Technologien und Verfahren.
siehe: https://hackernoon.com/are-you-using-the-term-ai-incorrectly-911ac23ab4f5
Fälschlich wird gegenwärtig der Begriff KI gleichgesetzt mit den Begriffen "Machine Learning" und "Deep Learning". Das ist aber nicht richtig. Machine Learning und Deep Learning sind Unterbegriffe
von KI (AI):
Anhang
Beispiel für eine abgespeicherte Welt. Diese kann mit dem Menü importiert werden:
custom_world_obstacles.json
Einige der besprochenen Programme für den Import:
programme.zip