コード例 #1
0
    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)
コード例 #2
0
    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)
コード例 #3
0
    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()
コード例 #4
0
    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
コード例 #5
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
コード例 #6
0
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])