class RobotCat(Char):
    def __init__(self):
        self.FSM = FSM(self)

        # States
        self.FSM.addState("Sleep", Sleep(self.FSM))
        self.FSM.addState("Walk", Walk(self.FSM))
        self.FSM.addState("Meow", Meow(self.FSM))

        # Transitions
        self.FSM.addTransition("toSleep", ToSleep("Sleep"))
        self.FSM.addTransition("toWalk", ToWalk("Walk"))
        self.FSM.addTransition("toMeow", ToMeow("Meow"))

        self.FSM.setState("Sleep")

    def execute(self):
        self.FSM.execute()
Esempio n. 2
0
FLOOR_THRESHOLD = 50


def stopBeep():
    stop()
    beepSync(0.5)


started = False

fsm = FSM(
    ["free", "rotating", "aligning", "pushing", "reversing", "completed"],
    "free",
    failActionSilently=True,
    verbose=True)
fsm.addTransition("start", "free", "free")
fsm.addTransition("seeLine", "free", "rotating")
fsm.addTransition("rotateCompleted", "rotating", "free")
fsm.addTransition("seeTrash",
                  "free",
                  "aligning",
                  beforeChange=lambda a, b, c: stopBeep())
fsm.addTransition("alignCompleted", "aligning", "pushing")
fsm.addTransition("seeLine",
                  "pushing",
                  "reversing",
                  beforeChange=lambda a, b, c: stopBeep())
fsm.addTransition("finish", "reversing", "completed")


def backupCompletedCb():
Esempio n. 3
0
from fsm import FSM
from threading import Thread

uiQueue = Queue(maxsize=1)
endAll = False

PROX_THRESHOLD = 40
FLOOR_THRESHOLD = 50

fsm = FSM(["free", "turnLeft", "turnRight", "exit"],
          "free",
          failActionSilently=True,
          verbose=True)
fsm.addTransition(
    "obstacleLeft",
    "free",
    "turnLeft",
)
fsm.addTransition("obstacleRight", "free", "turnRight")
fsm.addMultipleTransitions("noObstacle", ["turnLeft", "turnRight"], "free")
fsm.addTransition("line", "free", "exit")


def freeCb():
    tankDrive(50, 50)


def turnLeftCb():
    tankDrive(-50, 50)