| Prof. Dr. Sebastian Zug |
|---|
| Technische Universität Bergakademie Freiberg |
- Warum brauchen wir einen systematische Entwicklungsfluss bei der Umsetzung von autonomen Systemen?
- Welche Stufen hat ein solcher Prozess?
{{1-3}}
Phase 1: Kleine Probleme werden groß - Wir starten vom Code her.
Phase 2: Große Probleme zerlegen - Wir starten aus der Vogelperspektive.
{{2-3}}
Frage: Welches Problem hat dieser Roboter?
Wir haben die Aufgabe einen Wischroboter zu entwickeln. Die Mechanik und Elektrik steht bereits - nun ist die Software dran.
Frage: Womit starten Sie?
Einer der Kollegen hat sich in seinem Büro eingeschlossen und präsentiert folgende Lösung:
from arduino_alvik import ArduinoAlvik
from time import sleep_ms
def init():
alvik.left_led.set_color(0, 0, 1)
while(not alvik.get_touch_ok()):
sleep_ms(50);
alvik.left_led.set_color(0, 1, 0)
######################################################
alvik = ArduinoAlvik()
alvik.begin()
# Keine Ahnung was das soll, machen alle so
init()
for i in range(3):
# Pruefe auf Hindernisse
L, CL, C, CR, R = alvik.get_distance()
if C>50: # cm
# Gradeausfahrt
alvik.drive(15, 0, 'cm/s', 'deg/s')
sleep_ms(5000)
# Kurvenfahrt / Drehung um 180 Grad
if i%2 == 0:
alvik.drive(5, 30, 'cm/s', 'deg/s')
else:
alvik.drive(5, -30, 'cm/s', 'deg/s')
sleep_ms(6000) # Habe ich gestoppt, klappt gut
# Aus die Maus
alvik.left_led.set_color(0, 0, 1)
alvik.stop()Frage: Welche Mängel sehen Sie bei diesem Programm?
Das V-Modell ist eine Methodik zur systematischen Entwicklung von Software. Es beschreibt den Entwicklungsprozess von der Anforderungsanalyse bis zur Wartung.
Szenarien
Anforderungen ................> Abnahmetest
\ ^ / ^
v \ Testfälle v /
Grobentwurf ................> Systemtest
\ ^ / ^
v \ Testfälle v /
Feinentwurf ................> Integrationstest
\ ^ / ^
v \ Testfälle v /
Modulimpl. ................> Modultest
\ \ / /
\ +-------------------------+ /
+---------------------------+ .
Frage: Welche Funktionalitäten erwarten wir von unserem Roboter?
| Abstrakte Anforderung | Teilprobleme | Subprobleme |
|---|---|---|
| + Schmutz aufnehmen | Raumspezifische Reinigungsmodi | |
| + autonome Bewegung | ... | |
| + Energiemanagement | ... |
Wie organisieren wir die Software für unseren Anwendungsfall sinnvoll und wie sehen die Schnittstellen zwischen den Komponenten aus?
Die nachfolgende Grafik zeigt die Gliederung der Software eines autonomen Roboters.
Statusmeldungen
Nutzereingaben ^
| |
Befehle v |
+-----------------------+
| Handlungsplanung | "$Strategie $"
+-----------------------+
| ^ | | | Folge von Aktionen
v | v v v
+-----------------------+
| Ausführung | "$Taktik$ "
+-----------------------+
^ | | | Geplante Trajektorie,
Status | v v v Verhalten
+-----------------------+
| Reaktive Überwachung | "$Ausführung$ "
+-----------------------+
Sensordaten- ^ ^ ^ | | | Steuerbefehle an den
erfassung | | | v v v Aktuator
+----------+ +----------+
| Sensoren | | Aktoren |
+----------+ +----------+
^ |
| v
.-----------------------.
| Umgebung |
.-----------------------. .
Wie können die einzelnen Komponenten implementiert werden?
Frage: Welchen Vorteil haben wir von einer solchen grafischen Darstellung?
Hier schließt sich der Bogen jetzt wieder zu unserem Einführungsbeispiel. Lassen Sie uns einzelne Aspekte wieder aufgreifen.
from arduino_alvik import ArduinoAlvik
from time import sleep_ms
def init():
alvik.left_led.set_color(0, 0, 1)
while(not alvik.get_touch_ok()):
sleep_ms(50);
alvik.left_led.set_color(0, 1, 0)
def drive_forward(distance, speed):
...
def turn(angle, radius, speed):
...
def trajectory_execution():
...
if checkBatterie():
...
if cleaner_is_full():
...Was jetzt folgen würden, wären umfangreiche Tests, Tests und nochmals Tests.
{{0-3}}
Achtung: Womit haben wir uns heute überhaupt nicht beschäftigt? Die Hardware blieb weitgehend außen vor und wir haben mit keinem Wort über Datenstrukturen oder die eigentlichen Algorithmen gesprochen!
{{1-3}}
Erkenntnis 1: Gib mir eine halbe Stunde und ich schreibe Dir den Code ... gehört der Vergangenheit an.
Erkenntnis 2: Informatik ist mehr als nur "Programmieren".
Erkenntnis 3: Erfolgreiche (Robotik-)Entwicklerinnen und Entwickler müssen die Einsatzbedingungen vorausahnen.





