Beispiel #1
0
 def init(self):
     self.init_pose = np.array(
         np.concatenate([[float(random.randint(0, 10)) for x in range(3)],
                         [0., 0., 0.]]))
     self.target_pos = np.array(
         [float(random.randint(0, 10)) for x in range(3)])
     self.sim = PhysicsSim(self.init_pose, None, None, self.runtime)
Beispiel #2
0
    def __init__(self, init_pose=None, init_velocities=None, 
        init_angle_velocities=None, runtime=5., target_pos=None):
        """Initialize a Task object.
        Params
        ======
            init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles
            init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions
            init_angle_velocities: initial radians/second for each of the three Euler angles
            runtime: time limit for each episode
            target_pos: target/goal (x,y,z) position for the agent
        """
        # Simulation
        self.sim = PhysicsSim(init_pose, init_velocities, init_angle_velocities, runtime) 
        self.action_repeat = 3

        self.state_size = self.action_repeat * 6
        self.action_low = 400
        self.action_high = 900
        self.action_size = 4

        # Goal
        self.target_pos = target_pos if target_pos is not None else np.array([0., 0., 10.])
        # Level flight not spinning in any direction
        self.target_angles = np.array([0.,0.,0.]) 
        self.target_Ang_V = np.array([0., 0., 0.])
        # We should only be going up. Only Z velocity is a target
        self.target_v = init_velocities if init_velocities is not None else np.array([0., 0., 10.]) 
        self.init_pose = init_pose
    def __init__(self,
                 init_pose=None,
                 init_velocities=None,
                 init_angle_velocities=None,
                 runtime=5.,
                 target_pos=None):
        """Initialize a Task object.
        Params
        ======
            init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles
            init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions
            init_angle_velocities: initial radians/second for each of the three Euler angles
            runtime: time limit for each episode
            target_pos: target/goal (x,y,z) position for the agent
        """
        # Simulation
        self.sim = PhysicsSim(init_pose, init_velocities,
                              init_angle_velocities, runtime)
        self.action_repeat = 3

        self.state_size = 27  #27 or 18
        self.action_low = 0
        self.action_high = 900
        self.action_size = 4

        # variable to calculate reward and monitor
        self.last_z = 0
        self.last_vel = np.array((0, 0, 0))
        self.step_taken = 0
        self.last_rotor_speeds = np.array((0, 0, 0, 0))
        self.rotor_speed_change = np.array((0, 0, 0, 0))

        # Goal
        self.target_pos = target_pos if target_pos is not None else np.array(
            [0., 0., 10., 0., 0., 0.])
Beispiel #4
0
    def __init__(self,
                 init_pose=None,
                 init_velocities=None,
                 init_angle_velocities=None,
                 runtime=5.,
                 target_pos=None):
        """Initialize a Task object.
        Params
        ======
            init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles
            init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions
            init_angle_velocities: initial radians/second for each of the three Euler angles
            runtime: time limit for each episode
            target_pos: target/goal (x,y,z) position for the agent
        """
        # Simulation
        self.sim = PhysicsSim(init_pose, init_velocities,
                              init_angle_velocities, runtime)
        self.action_repeat = 3

        self.state_size = self.action_repeat * 7  #4 # 6 ... x,y,z, time
        self.action_low = 50
        self.action_high = 400
        self.action_size = 4
        self.runtime = runtime
        self.agent_distance = -np.inf
        self.raw_reward = 0.0
        self.counter = 0
        self.avg_dist = 0
        self.sum_dist = 0

        # Goal
        self.target_pos = target_pos if target_pos is not None else np.array(
            [0., 0., 10.])
Beispiel #5
0
    def __init__(self,
                 init_pose=None,
                 init_velocities=None,
                 init_angle_velocities=None,
                 runtime=1.):
        """Initialize a Task object.
        Params
        ======
            init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles
            init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions
            init_angle_velocities: initial radians/second for each of the three Euler angles
            runtime: time limit for each episode
        """
        # Simulation
        self.sim = PhysicsSim(init_pose, init_velocities,
                              init_angle_velocities, runtime)
        self.action_repeat = 3

        self.state_size = self.action_repeat * 6
        self.action_low = 0
        self.action_high = 900
        self.action_size = 4

        # Goal, maximize this distance
        self.init_pose = init_pose
    def __init__(self, init_pose=None, init_velocities=None,
        init_angle_velocities=None, min_height=1., reward_weights = None, runtime=5.):
        """Initialize a Task object.
        Params
        ======
            init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles
            init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions
            init_angle_velocities: initial radians/second for each of the three Euler angles
            min_height: minimum height to maintain in meters
            runtime: time limit for each episode in seconds
        """
        # Simulation
        self.init_pose = init_pose if init_pose is not None else np.array([0.,0.,10.,0.,0.,0.])
        self.init_velocities = init_velocities if init_velocities is not None else np.zeros(3)
        self.init_angle_velocities = init_angle_velocities if init_angle_velocities is not None else np.zeros(3)
        self.sim = PhysicsSim(self.init_pose, self.init_velocities, self.init_angle_velocities, runtime)
        self.action_repeat = 3

        self.state_size = self.action_repeat * 12 # 6 pose + 6 velocity

        self.action_low = 0    # Min RPM value
        self.action_high = 900 # Max RPM value
        self.action_size = 4   # Num actions (4 rotors)

        self.last_rotor_speeds = None
        self.curr_rotor_speeds = None

        # Goal
        self.target_pos = init_pose[0:3] if init_pose is not None else np.array([0., 0., 10.])
        self.reward_weights = reward_weights if reward_weights is not None else np.array([10.,0.,-2.,-1.])
Beispiel #7
0
    def __init__(self,
                 init_pose=None,
                 init_velocities=None,
                 init_angle_velocities=None,
                 runtime=5.,
                 target_pos=None,
                 action_repeat=3,
                 debug=False):
        """Initialize a Task object.
        Params
        ======
            init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles
            init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions
            init_angle_velocities: initial radians/second for each of the three Euler angles
            runtime: time limit for each episode
            target_pos: target/goal (x,y,z) position for the agent
        """
        # Simulation
        self.sim = PhysicsSim(init_pose, init_velocities,
                              init_angle_velocities, runtime)
        self.action_repeat = int(action_repeat)

        self.state_size = self.action_repeat * self.sim.pose.shape[0]
        self.action_low = 1
        self.action_high = 900
        self.action_size = 4
        self.runtime = runtime
        self.debug = debug

        # Goal
        self.target_pos = target_pos if target_pos is not None else np.array(
            [0., 0., 10.])
Beispiel #8
0
    def __init__(self, init_pose=None, init_velocities=None,
                 init_angle_velocities=None, runtime=5., target_pos=None):
        """Initialize a Task object.
        Params
        ======
            init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles
            init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions
            init_angle_velocities: initial radians/second for each of the three Euler angles
            runtime: time limit for each episode
            target_pos: target/goal (x,y,z) position for the agent
        """
        # Simulation
        self.sim = PhysicsSim(init_pose, init_velocities, init_angle_velocities, runtime)
        self.action_repeat = 3

        self.state_size = self.action_repeat * len(self.sim.pose[2:]+[self.sim.time])
#         self.state_size = self.action_repeat * 1
        self.action_low = 300.
        self.action_high = 600.
        self.action_size = 4

        self.num_steps = 0

        # Goal
        self.target_pos = target_pos if target_pos is not None else np.array([0., 0., 10.])
Beispiel #9
0
    def __init__(self,
                 init_pose=None,
                 init_velocities=None,
                 init_angle_velocities=None,
                 runtime=5.,
                 target_pos=None):
        """Initialize a Task object.
        Params
        ======
            init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles
            init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions
            init_angle_velocities: initial radians/second for each of the three Euler angles
            runtime: time limit for each episode
            target_pos: target/goal (x,y,z) position for the agent
        """
        # Simulation
        self.sim = PhysicsSim(init_pose, init_velocities,
                              init_angle_velocities, runtime)
        self.action_repeat = 3

        self.state_size = self.action_repeat * 6
        self.action_low = 375  # constrain propeller speeds to reasonable range
        self.action_high = 450
        self.action_size = 1

        self.total_reward = 0

        # Goal
        self.target_pos = target_pos if target_pos is not None else np.array(
            [0., 0., 10.])
Beispiel #10
0
    def __init__(self, reward_function, init_pose=None, runtime=5.):
        """Initialize a Task object.
        Params
        ======
            init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles
            init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions
            init_angle_velocities: initial radians/second for each of the three Euler angles
            runtime: time limit for each episode
            target_pos: target/goal (x,y,z) position for the agent
        """
        self.reward_function = reward_function
        self.init_pose = init_pose if init_pose is not None else np.array(
            [0.0, 0.0, 10.0, 0.0, 0.0, 0.0])

        # Simulation
        self.sim = PhysicsSim(self.init_pose, np.array([0.0, 0.0, 0.0]),
                              np.array([0.0, 0.0, 0.0]), runtime)
        self.action_repeat = 3

        self.state_size = self.action_repeat * 6
        self.action_low = 0
        self.action_high = 900
        self.action_size = 1

        # Goal, same as the initial position
        self.target_pos = np.array(self.init_pose[:3])
Beispiel #11
0
    def __init__(self, init_pose=np.array([0.0, 0.0, 10.0, 0.0, 0.0, 0.0]), init_velocities=None,
        init_angle_velocities=None, runtime=5., target_pos=None, action_repeat=None):
        """Initialize a Task object.
        Params
        ======
            init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles
            init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions
            init_angle_velocities: initial radians/second for each of the three Euler angles
            runtime: time limit for each episode
            target_pos: target/goal (x,y,z) position for the agent
        """
        # Simulation
        self.sim = PhysicsSim(init_pose, init_velocities, init_angle_velocities, runtime) 
        self.action_repeat = action_repeat if action_repeat is not None else 3

        self.init_pos = init_pose
        self.state_size = self.action_repeat * 6
        self.action_low = 10
        self.action_high = 900
        self.action_size = 4

        # Goal
        self.target_pos = target_pos if target_pos is not None else np.array([0., 0., 10.])
        self.flight_path = self.target_pos - self.init_pos[:3]
        self.num_steps = 0
Beispiel #12
0
    def __init__(self, init_pose=None, runtime=5., target_elevation=None):
        """Initialize a Task object.
        Params
        ======
            init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles
            init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions
            init_angle_velocities: initial radians/second for each of the three Euler angles
            runtime: time limit for each episode
            target_pos: target/goal (x,y,z) position for the agent
        """

        if init_pose[2] > target_elevation or target_elevation is None:
            raise ValueError(
                'Target elevation must be higher than current position!')

        # Init Values
        init_pose = init_pose if init_pose is not None else np.array(
            [0., 0., 1., 0., 0., 0.])
        init_velocities = np.array([0., 0., 0.])
        init_angle_velocities = np.array([0., 0., 0.])

        # Simulation
        self.sim = PhysicsSim(init_pose, init_velocities,
                              init_angle_velocities, runtime)
        self.action_repeat = 3

        self.state_size = self.action_repeat * 9
        self.action_low = 0
        self.action_high = 900
        self.action_size = 1

        self.target_pos = np.copy(init_pose[:3])
        self.target_pos[2] = target_elevation
Beispiel #13
0
    def __init__(self, init_pose=None, init_velocities=None, 
        init_angle_velocities=None, runtime=5., target_pos=None):
        """Initialize a Task object.
        Params
        ======
            init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles
            init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions
            init_angle_velocities: initial radians/second for each of the three Euler angles
            runtime: time limit for each episode
            target_pos: target/goal (x,y,z) position for the agent
            
            def get_propeler_thrust(self, rotor_speeds): 
                '''calculates net thrust (thrust - drag) based on velocity
                of propeller and incoming power'''
                thrusts = []
        
        """
        # Simulation
        self.sim = PhysicsSim(init_pose, init_velocities, init_angle_velocities, runtime) 
        #You can use only [z_pos, z_speed], so it would be much easier for the agent to learn and train.
        #[self.sim.pose[2], self.sim.v[2]]
        self.action_repeat = 3

        self.state_size = self.action_repeat * 6 #making state size larger
        self.action_low = 0
        self.action_high = 900
        self.action_size = 4 #4 rotors?
        
        #for reward function
        self.z_bonus = 5.0 #tried 5 but I think a huge reward is better like 10

        # Goal
        self.target_pos = target_pos if target_pos is not None else np.array([0., 0., 10.]) #txyz so this is takeoff
Beispiel #14
0
    def __init__(self, init_pose=None, init_velocities=None,
        init_angle_velocities=None, runtime=5., target_pos=None, reward_func=None):
        """Initialize a Task object.
        Params
        ======
            init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles
            init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions
            init_angle_velocities: initial radians/second for each of the three Euler angles
            runtime: time limit for each episode
            target_pos: target/goal (x,y,z) position for the agent
        """
        # Simulation
        self.sim = PhysicsSim(init_pose, init_velocities, init_angle_velocities, runtime)
        self.start_pos = self.sim.pose[:3]
        self.action_repeat = 3

        # state made of current position, velocity and angular velocity
        self.state_size = self.action_repeat * (6 + 3 + 3)
        self.action_low = 0
        self.action_high = 900
        self.action_size = 4
        self.runtime = runtime

        # Goal
        self.target_pos = target_pos if target_pos is not None else np.array([0., 0., 10.])

        self.reward_func = reward_func
        self.penalties_obj = {}
        self.penalties = 0
        self.reward = 0
Beispiel #15
0
    def __init__(self, action_repeat=3, init_pose=None, init_velocities=None, 
        init_angle_velocities=None, runtime=5., target_pos=None, reward_gains=np.array([0, 0, 0, 0, 0, 0])):
        """Initialize a Task object.
        Params
        ======
            init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles
            init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions
            init_angle_velocities: initial radians/second for each of the three Euler angles
            runtime: time limit for each episode
            target_pos: target/goal (x,y,z) position for the agent
        """
        # Simulation
        self.sim = PhysicsSim(init_pose, init_velocities, init_angle_velocities, runtime) 
        
        #self.action_repeat = 3
        self.action_repeat = action_repeat #if action_repeat is None else 1 

        # SRS: Adjust sise according to all features in state
        self.state_size = int(self.action_repeat * (6+3+0*3))
        self.action_low = 0
        self.action_high = 900
        self.action_size = 4

        # Goal
        self.target_pos = target_pos if target_pos is not None else np.array([0., 0., 10., 0.,0.,0., 0.,0.,0.]) 
        
        # Reward gains
        self.reward_gains = reward_gains
Beispiel #16
0
    def __init__(self,
                 init_pose=None,
                 init_velocities=None,
                 init_angle_velocities=None,
                 runtime=5.,
                 target_pose=None):
        """Initialize a Task object.
        Params
        ======
            init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles
            init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions
            init_angle_velocities: initial radians/second for each of the three Euler angles
            runtime: time limit for each episode
            target_pose: target/goal (x,y,z & eular angles) pose for the agent
        """
        # Simulation
        self.sim = PhysicsSim(init_pose, init_velocities,
                              init_angle_velocities, runtime)
        self.action_repeat = 3

        self.state_size = self.action_repeat * 6  # six dimensional pose
        self.action_low = 10  # 0 was original value
        self.action_high = 900
        self.action_size = 4

        # Default goal if not set
        self.target_pose = target_pose if target_pose is not None else np.array(
            [0., 0., 10., 0., 0., 0.])

        print('Initial vel = ', self.sim.init_velocities)
        print('Initial angle vel = ', self.sim.init_angle_velocities)
        print('Initial pose = ', self.sim.init_pose)
        print('Target pose = ', self.target_pose)
Beispiel #17
0
    def __init__(self,
                 runtime=5.,
                 init_pose=np.array([0.0, 0.0, 10.0, 0.0, 0.0, 0.0]),
                 init_velocities=np.array([0.0, 0.0, 0.0]),
                 init_angle_velocities=np.array([0.0, 0.0, 0.0]),
                 pos_noise=0.25,
                 angle_noise=None,
                 velocity_noise=0.15,
                 velocity_angle_noise=None,
                 target_pos=np.array([0.0, 0.0, 10.0])):

        self.target_pos = target_pos
        self.pos_noise = pos_noise
        self.angle_noise = angle_noise
        self.velocity_noise = velocity_noise
        self.velocity_angle_noise = velocity_angle_noise
        self.action_size = 1
        self.action_repeat = 1
        self.action_high = 1.2 * 400
        self.action_low = 0.99 * 400
        self.noise = OUNoise(self.action_size, mu=0.0, theta=0.2, sigma=0.1)
        self.action_b = (self.action_high + self.action_low) / 2.0
        self.action_m = (self.action_high - self.action_low) / 2.0

        # Simulation
        self.sim = PhysicsSim(init_pose, init_velocities,
                              init_angle_velocities, runtime)
        self.state_size = len(self.get_state())
Beispiel #18
0
    def __init__(self,
                 init_pose=None,
                 init_velocities=None,
                 init_angle_velocities=None,
                 runtime=5.,
                 target_pos=None):
        """Initialize a Task object.
        Params
        ======
            init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles
            init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions
            init_angle_velocities: initial radians/second for each of the three Euler angles
            runtime: time limit for each episode
            target_pos: target/goal (x,y,z) position for the agent
        """
        # Simulation
        self.runtime = runtime
        self.init_angle_velocities = init_angle_velocities
        self.sim = PhysicsSim(init_pose, init_velocities,
                              self.init_angle_velocities, self.runtime)
        self.action_repeat = ACTION_REPEAT  # changed from previous setting of 3 to give more dynamic response
        self.target_pos = target_pos

        self.action_size = 4
        self.state_size = self.action_repeat * (len(self.sim.pose) +
                                                self.action_size)
        self.action_low = 0
        self.action_high = 900

        # Goal
        self.target_pos = target_pos if target_pos is not None else np.array(
            [0., 0., 10.])

        # randomize start
        self.randomize()
Beispiel #19
0
    def __init__(self,
                 init_pose=None,
                 init_velocities=None,
                 init_angle_velocities=None,
                 runtime=5.,
                 target_trajectory: Union[type(None),
                                          Callable[[float], np.array]] = None):
        """Initialize a Task object.
        Params
        ======
            init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles
            init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions
            init_angle_velocities: initial radians/second for each of the three Euler angles
            runtime: time limit for each episode
            target_trajectory: target/goal (x,y,z) position for the agent
        """
        # Simulation
        self.sim = PhysicsSim(init_pose, init_velocities,
                              init_angle_velocities, runtime)
        self.action_repeat = 3

        self.state_size = self.action_repeat * 6
        self.action_low = 0
        self.action_high = 900
        self.action_size = 4

        # Goal
        self.target_trajectory = target_trajectory if target_trajectory is not None else lambda t: np.array(
            [0., 0., 10.])
Beispiel #20
0
    def __init__(self, init_pose=None, init_velocities=None, 
                 init_angle_velocities=None, runtime=5., target_pos=None):
        """Initialize a Task object.
        Params
        ======
            init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles
            init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions
            init_angle_velocities: initial radians/second for each of the three Euler angles
            runtime: time limit for each episode
            target_pos: target/goal (x,y,z) position for the agent
            target_orientation: target/goal (phi, theta, psi) Euler angles in radians
        """
        # Simulation
        self.sim = PhysicsSim(init_pose, init_velocities, init_angle_velocities, runtime) 
        self.action_repeat = 3

        self.state_size = self.action_repeat * 9
        self.action_low = 0
        self.action_high = 900
        # self.action_size = 4
        self.action_size = 1

        # Goal
        self.target_pos = target_pos if target_pos is not None else np.array([0., 0., 10.])
        self.weight_pos = 2.3
        self.weight_velocity = 0.9
Beispiel #21
0
    def __init__(self,
                 init_pose=None,
                 init_velocities=None,
                 init_angle_velocities=None,
                 runtime=5.,
                 target_pos=None):
        """Initialize a Task object.初始化指定本任务所需的几个变量
        Params
        ======
            init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles
            init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions
            init_angle_velocities: initial radians/second for each of the three Euler angles
            runtime: time limit for each episode
            target_pos: target/goal (x,y,z) position for the agent
        """
        # Simulation
        self.sim = PhysicsSim(init_pose, init_velocities,
                              init_angle_velocities, runtime)
        self.action_repeat = 3  # 重复调用动作次数

        self.state_size = self.action_repeat * 6  # 状态向量中每个分量的数值
        self.action_low = 0  # 动作最小值
        self.action_high = 900  # 动作最大值
        self.action_size = 4  # 四维动作空间

        # Goal
        self.target_pos = target_pos if target_pos is not None else np.array(
            [0., 0., 10.])
Beispiel #22
0
    def __init__(self,
                 init_pose=None,
                 init_velocities=None,
                 init_angle_velocities=None,
                 runtime=5.,
                 target_pos=None):
        """Initialize a Task object.
        Params
        ======
            init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles
            init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions
            init_angle_velocities: initial radians/second for each of the three Euler angles pitch yaw roll
            runtime: time limit for each episode (This makes it an episodic task)
            target_pos: target/goal (x,y,z) position for the agent
        """
        # Simulation
        self.sim = PhysicsSim(init_pose, init_velocities,
                              init_angle_velocities, runtime)
        self.action_repeat = 3

        self.state_size = self.action_repeat * 6
        self.action_low = 0  ## lowest roter speed
        self.action_high = 900  ## highest roter speed

        self.action_size = 4  ## 4 roter speeds

        # Goal
        self.target_pos = target_pos if target_pos is not None else np.array(
            [0., 0., 10.])
Beispiel #23
0
    def __init__(self,
                 init_pose=None,
                 init_velocities=None,
                 init_angle_velocities=None,
                 runtime=5.,
                 target_pos=None):
        """Initialize a Task object.
        Params
        ======
            init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles
            init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions
            init_angle_velocities: initial radians/second for each of the three Euler angles
            runtime: time limit for each episode
            target_pos: target/goal (x,y,z) position for the agent
        """
        # Simulation
        self.sim = PhysicsSim(init_pose, init_velocities,
                              init_angle_velocities, runtime)
        self.action_repeat = 3

        self.state_size = 2 * self.action_repeat
        self.action_low = 0
        self.action_high = 900
        self.action_size = 4

        self.step_count = 0
        self.max_iteration = 100
        # Goal
        self.target_pos = np.array([0., 0., 10.])
        self.target_vel = np.array([0., 0., 0.])
    def __init__(self,
                 init_pose=None,
                 init_velocities=None,
                 init_angle_velocities=None,
                 runtime=5.,
                 target_pos=None):
        """Initialize a Task object.
        Params
        ======
            init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles
            init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions
            init_angle_velocities: initial radians/second for each of the three Euler angles
            runtime: time limit for each episode
            target_pos: target/goal (x,y,z) position for the agent
        """
        # Simulation
        self.sim = PhysicsSim(init_pose, init_velocities,
                              init_angle_velocities, runtime)
        self.action_repeat = 3

        self.state_size = self.action_repeat * 6
        self.action_low = 425
        self.action_high = 475
        self.action_size = 4

        # number of steps in episode:
        self.steps = 0

        # current distance from target:
        self.distance = np.linalg.norm(self.target_pos - self.sim.pose[:3])

        # Goal
        self.target_pos = target_pos if target_pos is not None else np.array(
            [0., 0., 10.])
Beispiel #25
0
    def __init__(self, init_pose, init_velocities, 
        init_angle_velocities, runtime=5., target_pos=None):
        """Initialize a Task object.
        Params
        ======
            init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles
            init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions
            init_angle_velocities: initial radians/second for each of the three Euler angles
            runtime: time limit for each episode
            target_pos: target/goal (x,y,z) position for the agent
        """
        # Simulation
        # AE: Initial state will contain pose (position and angles of the copter)
        # AE: and the copter dimensional velocities (speed)
        self.initial_state = np.concatenate((init_pose, init_velocities))
        # AE: We are not allowed to change physics_sim.py, but it will only work with a 6-dimensional
        # AE: state, so I must trim it here, but for my Neural Networks, I will use the full state.
        self.sim = PhysicsSim(self.initial_state[:6], init_velocities, init_angle_velocities, runtime) 
        self.action_repeat = 3

        self.state_size = self.action_repeat * len(self.initial_state)
        self.action_low = 400
        self.action_high = 900
        self.action_size = 4

        # Goal
        self.target_pos = target_pos if target_pos is not None else np.array([0., 0., 10.]) 
Beispiel #26
0
    def __init__(self,
                 init_pose=None,
                 init_velocities=None,
                 init_angle_velocities=None,
                 runtime=-1.,
                 target_pos=None):
        """Initialize a Task object.
        Params
        ======
            init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles
            init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions
            init_angle_velocities: initial radians/second for each of the three Euler angles
            runtime: time limit for each episode
            target_pos: target/goal (x,y,z) position for the agent
        """
        # Simulation
        self.sim = PhysicsSim(init_pose, init_velocities,
                              init_angle_velocities, runtime)
        self.action_repeat = 3

        self.state_size = self.action_repeat * 3
        self.action_low = 0
        self.action_high = 900
        self.action_size = 1

        # Goal
        self.target_pos = target_pos if target_pos is not None else np.array(
            [0., 0., 10.])
        self.box_size = 4.
        self.half_box_size = (self.box_size / 2.)
        self.ceiling = self.target_pos[2] + self.half_box_size
        self.floor = self.target_pos[2] - self.half_box_size
Beispiel #27
0
    def __init__(self,
                 target_pos,
                 init_pose=None,
                 init_velocities=None,
                 init_angle_velocities=None,
                 runtime=5.):
        """Initialize a Task object.
        Params
        ======
            init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles
            init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions
            init_angle_velocities: initial radians/second for each of the three Euler angles
            runtime: time limit for each episode
            target_pos: target/goal (x,y,z) position for the agent
        """
        # Simulation
        self.sim = PhysicsSim(init_pose, init_velocities,
                              init_angle_velocities, runtime)
        self.action_repeat = 1

        self.state_size = self.action_repeat * 6
        self.action_low = 0
        self.action_high = 900
        self.action_size = 4
        self.init_pose = self.sim.pose
        self.old_pose = self.sim.pose

        # Goal
        self.target_pos = target_pos
Beispiel #28
0
    def __init__(self,
                 init_pose=None,
                 init_velocities=None,
                 init_angle_velocities=None,
                 runtime=5.,
                 target_pos=None):
        """Initialize a Task object.
        Params
        ======
            init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles
            init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions
            init_angle_velocities: initial radians/second for each of the three Euler angles
            runtime: time limit for each episode
            target_pos: target/goal (x,y,z) position for the agent
        """
        # Simulation
        self.sim = PhysicsSim(init_pose, init_velocities,
                              init_angle_velocities, runtime)
        self.action_repeat = 3

        self.unique_state_size = np.concatenate(
            ([self.sim.pose] + [self.sim.v] + [self.sim.angular_v])).shape[0]

        self.state_size = self.action_repeat * self.unique_state_size
        self.action_low = 0
        self.action_high = 900
        self.action_size = 4

        # Origin
        self.init_pose = init_pose

        # Goal
        self.target_pos = target_pos if target_pos is not None else np.array(
            [0., 0., 10.])
Beispiel #29
0
    def __init__(self,
                 init_pose=None,
                 init_velocities=None,
                 init_angle_velocities=None,
                 runtime=5.,
                 target_pos=None):
        """Initialize a Task object.
        Params
        ======
            init_pose: initial position of the quadcopter in (x,y,z) dimensions and the Euler angles
            init_velocities: initial velocity of the quadcopter in (x,y,z) dimensions
            init_angle_velocities: initial radians/second for each of the three Euler angles
            runtime: time limit for each episode
            target_pos: target/goal (x,y,z) position for the agent
        """
        # Simulation
        self.sim = PhysicsSim(init_pose, init_velocities,
                              init_angle_velocities, runtime)
        self.action_repeat = 3

        self.state_size = self.action_repeat * 6
        self.action_low = 0
        self.action_high = 900
        self.action_size = 4

        # Goal
        if target_pos is None:
            print("Setting default init pose")
        self.target_pos = target_pos if target_pos is not None else np.array(
            [0., 0., 10.])
    def __init__(self,
                 runtime=5.,
                 target_pos=None,
                 init_pose=np.array([0.0, 0.0, 10.0, 0.0, 0.0, 0.0]),
                 init_velocities=np.array([0.0, 0.0, 0.0]),
                 init_angle_velocities=np.array([0.0, 0.0, 0.0]),
                 pos_noise=None,
                 vel_noise=None,
                 ang_noise=None,
                 ang_vel_noise=None):

        self.action_low = 400
        self.action_high = 420
        self.action_size = 1
        self.pos_noise = 0.25
        self.vel_noise = 0.15

        self.target_pos = target_pos
        self.ang_noise = ang_noise
        self.ang_vel_noise = ang_vel_noise

        self.sim = PhysicsSim(init_pose, init_velocities,
                              init_angle_velocities, runtime)
        self.state_size = len(self.get_state())
        self.action_b = (self.action_high + self.action_low) / 2.0
        self.action_m = (self.action_high - self.action_low) / 2.0