Ardumower software design: Unterschied zwischen den Versionen

Aus www.wiki.ardumower.de
Wechseln zu: Navigation, Suche
(Finite state machine)
Zeile 15: Zeile 15:
 
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.
 
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 [https://drive.draw.io/?url=https%3A%2F%2Fraw.githubusercontent.com%2FArdumower%2Fardumower%2Fmaster%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_states.png | 800px]]

Version vom 24. März 2017, 22:10 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 states.png

Implemented updates:

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

Further links