import numpy as np
class Action(object):
def get_action(self):
raise NotImplementedError
def get_array(self):
raise NotImplementedError
[docs]class KeyboardAction(Action):
"""
This action passes control to keyboard input
"""
pass
[docs]class SteeringVelAction(Action):
"""
This action provides steering and velocity control
Parameters
----------
steer: float in range (-1, 1)
vel: float in range (0, 1)
"""
def __init__(self, steer, vel):
self.steer = steer
self.vel = vel
def get_action(self):
return self.steer, self.vel
def get_array(self):
return np.array([self.steer, self.vel])
[docs]class SteeringAccAction(Action):
"""
This action provides both steering and acceleration control.
Parameters
----------
steer: float in range (-1, 1)
acc: float in range (-1, 1)
"""
def __init__(self, steer, acc):
self.steer = steer
self.acc = acc
def get_action(self):
return self.steer, self.acc
def get_array(self):
return np.array([self.steer, self.acc])
def asSteeringAction(self):
return SteeringAction(self.steer)
[docs]class SteeringAction(Action):
"""
This action provides a steering control. The supervisor will control the acceleration
Parameters
----------
steer: float in range (-1, 1)
"""
def __init__(self, steer):
self.steer = steer
def get_action(self):
return self.steer
def get_array(self):
return np.array([self.steer])
[docs]class VelocityAction(Action):
"""
This action provides a target velocity for the car to track
Parameters
----------
vel: float in range (0, 1)
"""
def __init__(self, vel):
self.vel = vel
def get_action(self):
return self.vel
def get_array(self):
return np.array([self.vel])
[docs]class LastValidAction(Action):
"""
This action causes car to replay its last valid action.
This is useful when testing coarse planning methods.
"""
def __init__(self):
pass