def configure(self, pos=None, speed=None, pause=None, border=None, **kwargs): """Configure motion parameters. :param speed: 2-tuple containing (min-speed, max-speed). :param pause: 2-tuple containing (min-pause, max-pause). :param border: 4-tuple containing (x-min, x-max, y-min, ymax). The speed when traveling to the next waypoint is uniformly distributed in the specified range. Pause time at a waypoint is uniformly distributed in the specified range. The next waypoint is uniformly chosen at random from the area specified by the border. If speed (or pause) are not tuples, they are assumed to be singleton values and represent constant speed (or pause) values. """ Motion.configure(self, pos=pos, **kwargs) if speed is None: speed = self.DefaultSpeed if pause is None: pause = self.DefaultPause if border is None: border = self.DefaultBorder # set up parameters try: x = iter(speed) except: speed = (speed, speed) try: x = iter(pause) except: pause = (pause, pause) try: x = iter(border) except: border = (0, border, 0, border) # configure RWP self._speed = speed self._pause = pause self.border = border # initialize position if pos is None: B = border x = np.random.uniform(B[0],B[1]) y = np.random.uniform(B[2],B[3]) self.position = (x,y) # create FSM to run RWP f = self.newchild("rwp", FSM, tracename=self.tracename+".RWP") f.goto(self.INIT)
def __init__(self, *args, **kwargs): """Constructor.""" Motion.__init__(self, *args, **kwargs)
def log(self, event=None, p=None, *args, **kwargs): """Overloaded to check verbose level and set common annotations.""" force = False if ('verbose' in kwargs): force = (kwargs['verbose']>RWP_VERBOSE) if self.verbose>RWP_VERBOSE or force: Motion.log(self, event, p, *args, **kwargs)