Executor - VerifiableRobotics/LTLMoP GitHub Wiki

The Executor connects the discrete strategy controller with continuous handler controllers to create a hybrid controller.

High-level Overview

In pseudo-code, assuming fast/slow execution for simplicity:

sensor_states = handlerSubsystem.getSensorValues(sensors)
strategy.chooseInitialState(sensor_states, actuator_states)
handlerSubsystem.setActuatorValues(strategy.getCurrentState().getActuatorValues())

while not quit:
  sensor_states = handlerSubsystem.getSensorValues(sensors)
  next_state = strategy.getNextState(sensor_states)
  handlerSubsystem.setActuatorValues(next_state.getActuatorValues())
  strategy.setState(next_state)

Features

  • Act as server that can be connected to via GUI or other remote application to allow for status monitoring and execution control.
  • Supports mechanisms for resynthesis, including proper propagation of state from old to new controllers.
  • Support different execution modes ("normal", "fast/slow")