def __init__(self): args = sys.argv if "-r" in args: self.results_dir_name = args[args.index("-r") + 1] else: self.results_dir_name = "repeat_pilot_request" self.position_normaliser = DynamicNormalizer([-2.4, 2.4], [-1.0, 1.0]) self.position_deriv_normaliser = DynamicNormalizer([-1.75, 1.75], [-1.0, 1.0]) self.angle_normaliser = DynamicNormalizer([-3.14, 3.14], [-1.0, 1.0]) self.angle_deriv_normaliser = DynamicNormalizer([-0.02, 0.02], [-1.0, 1.0]) self.angle_dt_moving_window = SlidingWindow(5) self.last_150_episode_returns = SlidingWindow(150) self.thrusters = Thrusters() self.env = ROSBehaviourInterface() self.environment_info = EnvironmentInfo() sub_pilot_position_controller_output = rospy.Subscriber( "/pilot/position_pid_output", FloatArray, self.positionControllerCallback) self.prev_action = 0.0 self.pos_pid_output = np.zeros(6)
def __init__(self): args = sys.argv if "-r" in args: results_dir_name = args[args.index("-r") + 1] else: results_dir_name = "ga_pid_tuning" self.results_dir = "/home/gordon/data/tmp/{0}{1}".format( results_dir_name, 0) if not os.path.exists(self.results_dir): os.makedirs(self.results_dir) filename = os.path.basename(sys.argv[0]) os.system("cp {0} {1}".format(filename, self.results_dir)) os.system( "cp /home/gordon/rosbuild_ws/ros_simple_rl/src/ga_optimization/ga.py {0}" .format(self.results_dir)) # TODO - add DataFrame for evolution history and generation self.df_evolution_history = pd.DataFrame() self.f_evolution_history = open( "{0}{1}".format(self.results_dir, "/evolution_history.csv"), "w", 1) self.position_normaliser = DynamicNormalizer([-2.4, 2.4], [-1.0, 1.0]) self.position_deriv_normaliser = DynamicNormalizer([-1.75, 1.75], [-1.0, 1.0]) self.angle_normaliser = DynamicNormalizer([-3.14, 3.14], [-1.0, 1.0]) self.angle_deriv_normaliser = DynamicNormalizer([-0.02, 0.02], [-1.0, 1.0]) self.angle_dt_moving_window = SlidingWindow(5) self.last_150_episode_returns = SlidingWindow(150) self.thrusters = Thrusters() self.env = ROSBehaviourInterface() self.environment_info = EnvironmentInfo() self.baseline_response = optimal_control_response() sub_pilot_position_controller_output = rospy.Subscriber( "/pilot/position_pid_output", FloatArray, self.positionControllerCallback) self.prev_action = 0.0 self.pos_pid_output = np.zeros(6)
def __init__(self, env, results_parent_dir): self.results_dir = results_parent_dir self.position_normaliser = DynamicNormalizer([-2.4, 2.4], [-1.0, 1.0]) self.position_deriv_normaliser = DynamicNormalizer([-1.75, 1.75], [-1.0, 1.0]) self.angle_normaliser = DynamicNormalizer([-3.14, 3.14], [-1.0, 1.0]) self.angle_deriv_normaliser = DynamicNormalizer([-0.02, 0.02], [-1.0, 1.0]) self.angle_dt_moving_window = SlidingWindow(5) self.last_150_episode_returns = SlidingWindow(150) self.thrusters = Thrusters() self.env = env self.environment_info = EnvironmentInfo() sub_pilot_position_controller_output = rospy.Subscriber( "/pilot/position_pid_output", FloatArray, self.positionControllerCallback) self.prev_action = 0.0 self.pos_pid_output = np.zeros(6) self.baseline_response = optimal_control_response()
def __init__(self): args = sys.argv if "-r" in args: self.results_dir_name = args[args.index("-r") + 1] else: self.results_dir_name = "nessie_run" self.position_normaliser = DynamicNormalizer([-2.4, 2.4], [-1.0, 1.0]) self.position_deriv_normaliser = DynamicNormalizer([-1.75, 1.75], [-1.0, 1.0]) self.angle_normaliser = DynamicNormalizer([-3.14, 3.14], [-1.0, 1.0]) self.angle_deriv_normaliser = DynamicNormalizer([-0.02, 0.02], [-1.0, 1.0]) self.angle_dt_moving_window = SlidingWindow(5) self.last_150_episode_returns = SlidingWindow(150) self.thrusters = Thrusters() self.env = ROSBehaviourInterface() self.environment_info = EnvironmentInfo() self.ounoise = OUNoise() self.prev_action = 0.0
# initialise some global variables/objects # global normalisers position_normaliser = DynamicNormalizer([-1.0, 1.0], [-1.0, 1.0]) position_deriv_normaliser = DynamicNormalizer([-3.0, 3.0], [-1.0, 1.0]) distance_normaliser = DynamicNormalizer([0.0, 25.0], [-1.0, 1.0]) distance_reward_normaliser = DynamicNormalizer([0.0, 15.0], [0.0, 1.0]) angle_normaliser = DynamicNormalizer([-3.14, 3.14], [-1.0, 1.0]) angle_deriv_normaliser = DynamicNormalizer([-0.15, 0.15], [-1.0, 1.0]) angle_between_vectors = AngleBetweenVectors() angle_dt_moving_window = SlidingWindow(5) thrusters = Thrusters() nessie = ROSBehaviourInterface() environment_info = EnvironmentInfo() # Loop number of runs for run in range(CONFIG["num_runs"]): if CONFIG["test_policy"]: CONFIG["dir_of_policies_to_load"] = results_to_validate[run] if CONFIG["policy_test_type"] == "vali": results_dir_name = "validate_{0}".format( CONFIG["dir_of_policies_to_load"].split("/")[-1]) elif CONFIG["policy_test_type"] == "nessie": results_dir_name = "real_{0}".format( CONFIG["dir_of_policies_to_load"].split("/")[-1]) elif CONFIG["policy_test_type"] == "online_nessie": results_dir_name = "online_{0}".format( CONFIG["dir_of_policies_to_load"].split("/")[-1]) # Create logging directory and files
def on_rospyShutdown(): global episode_number, results_dir logNav(log_nav=False, dir_path=results_dir, file_name_descriptor=str(episode_number)) if __name__ == '__main__': args = sys.argv if "-r" in args: results_dir_name = args[args.index("-r") + 1] else: results_dir_name = "cacla_run" rospy.init_node("natural_actor_critic") navigation = Nav() environmental_data = EnvironmentInfo() angle_between_vectors = AngleBetweenVectors() ros_behaviour_interface = ROSBehaviourInterface() # Set ROS spin rate rate = rospy.Rate(CONFIG["spin_rate"]) rospy.on_shutdown(on_rospyShutdown) # Set Thruster Status thrusters = Thrusters() # initialise some global variables/objects # global normalisers yaw_velocity_normaliser = DynamicNormalizer([-1.0, 1.0], [0.0, 1.0]) surge_velocity_normaliser = DynamicNormalizer([-0.6, 0.6], [0.0, 1.0]) codependant_normaliser = DynamicNormalizer([-0.4, 0.4], [0.0, 1.0])