def plant(T, initD): gain = sm.Gain(T) delay_x = sm.R(0) delay_y = sm.FeedbackAdd(sm.Gain(1), sm.R(initD)) return sm.Cascade(sm.Cascade(gain, delay_x), delay_y)
def plant(t, initD): """ Returns a state machine whose input is the commanded velocity and whose output is the distance to the wall. Args: t - the duration of a time step initD - the starting distance from the wall """ movement = sm.Gain(t) position = sm.R(initD) return sm.FeedbackAdd(movement, position)
def plant(T, initD): return sm.Cascade(sm.Gain(-T), sm.FeedbackAdd(sm.R(initD), sm.Wire()))
def sensor(initD): return sm.R(initD)
def accumulator(init): none_there = sm.Gain(1) y_delay = sm.R(init) y = sm.FeedbackAdd(none_there, y_delay) return y
def accumulatorDelay(init): x_delay = sm.R(0) return sm.Cascade(x_delay, accumulator(init))
def accumulatorDelay(init): return sm.FeedbackAdd(sm.R(init), sm.Gain(1.0))
def accumulatorDelayScaled(init, s): return sm.Cascade(sm.FeedbackAdd(sm.R(init), sm.Gain(1.0)), sm.Gain(s))
def accumulator(init): """ Returns a state machine such that y[n] = y[n-1] + x[n] with a starting state of init. """ return sm.FeedbackAdd(sm.Gain(1), sm.R(init))
def accumulatorDelay(init): """ Returns a state machine such that y[n] = y[n-1] + x[n-1] witgh a starting state of init. """ return sm.Cascade(accumulator(init), sm.R(init))
def sensor(initD): """ Returns a state machine whose input should be the distance to the wall and whose output should be the delayed distance to the wall. """ return sm.R(initD)