Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
 def __init__(self, *args, **kwargs):
     """Constructor."""
     Motion.__init__(self, *args, **kwargs)
Ejemplo n.º 3
0
 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)