Skip to content

Latest commit

 

History

History
257 lines (180 loc) · 8.02 KB

File metadata and controls

257 lines (180 loc) · 8.02 KB

LiaScript

Ach, das ist doch schnell gemacht ...

Systematische Entwicklung von Robotiksystemen

Prof. Dr. Sebastian Zug
Technische Universität Bergakademie Freiberg

partner_map

Werkstatt Zukunft: Robotik, Freiberg, 14.03.2025

Lernziel der heutigen Veranstaltung

  1. Warum brauchen wir einen systematische Entwicklungsfluss bei der Umsetzung von autonomen Systemen?
  1. 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?

{{0-1}} partner_map

{{1-3}}

Anwendungsfall: Staubsaugerroboter

Wir haben die Aufgabe einen Wischroboter zu entwickeln. Die Mechanik und Elektrik steht bereits - nun ist die Software dran.

partner_map

Frage: Womit starten Sie?

1. Versuch

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?

2. Versuch: Systematische Entwicklung

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
            \ \                           / /
             \ +-------------------------+ /
              +---------------------------+                                    .

2.1 Anforderungsanalyse

Frage: Welche Funktionalitäten erwarten wir von unserem Roboter?

Abstrakte Anforderung Teilprobleme Subprobleme
+ Schmutz aufnehmen Raumspezifische Reinigungsmodi
+ autonome Bewegung ...
+ Energiemanagement ...

2.2 Grobentwurf

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              |
            .-----------------------.                                                                                                 .

2.3 Feinentwurf

Wie können die einzelnen Komponenten implementiert werden?

Frage: Welchen Vorteil haben wir von einer solchen grafischen Darstellung?

2.4 Modulimplementation

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.

Zusammenfassung

{{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.


{{2-3}} partner_map