Ardumower software design: Unterschied zwischen den Versionen

Aus www.wiki.ardumower.de
Wechseln zu: Navigation, Suche
 
Zeile 17: Zeile 17:
 
State diagram (Note: The drawing has been created using [https://drive.draw.io/?url=https%3A%2F%2Fraw.githubusercontent.com%2FArdumower%2Fardumower%2Fmaster%2FDokumentation%2Fswdesign%2FArdumower_Statemachine.xml draw.io])
 
State diagram (Note: The drawing has been created using [https://drive.draw.io/?url=https%3A%2F%2Fraw.githubusercontent.com%2FArdumower%2Fardumower%2Fmaster%2FDokumentation%2Fswdesign%2FArdumower_Statemachine.xml draw.io])
  
[[File: Ardumower_states.png | 800px]]
+
[[File: Ardumower_Statemachine.png | 800px]]
  
 
Implemented updates:
 
Implemented updates:

Aktuelle Version vom 24. März 2017, 22:24 Uhr

This page describes some internals of the Ardumower software architecture.

Finite state machine

Kurz zum Ablauf der Software: In der Hauptschleife (loop) werden periodisch:

  1. Die Sensoren eingelesen (readSensors)
  2. Der Zustandsautomat durchlaufen und abhängig vom aktuellen Zustand die Sensorwerte überprüft (CheckXXXXX) und von den Sensorwerten in neue Zustände gewechselt (setNextState) - beim Wechsel werden ggf. neue Soll-Werte für die Motoren gesetzt (Beispiel: motorLeftSpeedRpmSet).
  3. Die Motoren mit den Soll-Werten angesteuert (motorControl)

Die möglichen Zustände und Ergebnisse für die Übergänge des Zustands-Automaten sind hier unten alle grafisch darsgstellt.

Wenn der Mower also im Zustand FORWARD ist, fährt er nach vorn. Man schaut also in der loop() nach was alles in diesem Zustand FORWARD gemacht wird (case FORWARD). Dort hätte man die Möglichkeit weitere Aktionen einzufügen.


Main component of the software is a so called 'finite state machine', that means there exists a set of states ("OFF", "FORWARD", "ROLL", etc.) that the robot can be in. Depending on events (sensor is triggering etc.), the robot will enter a new state.

State diagram (Note: The drawing has been created using draw.io)

Ardumower Statemachine.png

Implemented updates:

  • If obstacle during reverse => roll
  • If obstacle during roll => forward

Further links