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