Esempio n. 1
0
def sensor_logger(request, result_base_folder, dcm, mem):
    """
    Return a dictionary with several objects for
    each X coordinate of all lasers segments
    """
    thread_flag = threading.Event()
    h_sides = ["Front", "Left", "Right"]
    v_sides = ["Left", "Right"]
    s_sides = ["Front", "Back"]
    bag = qha_tools.Bag(mem)
    dico = {}
    for each in h_sides:
        for i in range(1, 10):
            bag.add_object("Horizontal_X_seg" + str(i) + "_" + each, Laser(
                dcm, mem, each + "/Horizontal/Seg0" + str(i) + "/X/Sensor"))
        for i in range(10, 16):
            bag.add_object("Horizontal_X_seg" + str(i) + "_" + each, Laser(
                dcm, mem, each + "/Horizontal/Seg" + str(i) + "/X/Sensor"))
    for each in v_sides:
        bag.add_object("Vertical_X_seg01_" + each, Laser(
            dcm, mem, "Front/Vertical/" + each + "/Seg01/X/Sensor"))
    for each in s_sides:
        bag.add_object("Sonar_" + each, Sonar(
            dcm, mem, each))
    for i in range(1, 4):
        bag.add_object("Shovel_X_seg" + str(i), Laser(
            dcm, mem, "Front/Shovel/Seg0" + str(i) + "/X/Sensor"))
    logger = qha_tools.Logger()

    def log(logger, bag):
        """
        Docstring
        """
        t_0 = time.time()
        while not thread_flag.is_set():
            sensor_value = bag.value
            for each in sensor_value.keys():
                logger.log((each, sensor_value[each]))

            logger.log(("Time", time.time() - t_0))
        time.sleep(0.01)
    log_thread = threading.Thread(target=log, args=(logger, bag))
    log_thread.start()

    def fin():
        """Method executed after a joint test."""
        thread_flag.set()
        result_file_path1 = "/".join(
            [
                result_base_folder,
                "Front_sensors_distances"
            ]) + ".csv"
        logger.log_file_write(result_file_path1)

    request.addfinalizer(fin)
    return dico
Esempio n. 2
0
def log_joints(request, result_base_folder, dcm, mem, motion):
    """
    Return a dictionary with several objects for
    POD test
    """
    thread_flag = threading.Event()
    bag = qha_tools.Bag(mem)
    for each in motion.getBodyNames("Body"):
        if "Wheel" in each:
            bag.add_object(each + "_Actuator",
                           WheelSpeedActuator(dcm, mem, each))
            bag.add_object(each + "_Sensor",
                           WheelSpeedSensor(dcm, mem, each))
        else:
            bag.add_object(each + "_Actuator",
                           JointPositionActuator(dcm, mem, each))
            bag.add_object(each + "_Sensor",
                           JointPositionSensor(dcm, mem, each))
    bag.add_object("BackBumper", Bumper(dcm, mem, "Back"))
    bag.add_object(
        "robot_on_charging_station", ChargingStationSensor(dcm, mem))
    bag.add_object("battery_current", BatteryCurrentSensor(dcm, mem))
    logger = qha_tools.Logger()

    def log(logger, bag):
        """
        Docstring
        """
        t_0 = time.time()
        while not thread_flag.is_set():
            joints_value = bag.value
            for each in joints_value.keys():
                if "Wheel" in each or "Bumper" in each or \
                        "charging" in each or "battery" in each:
                    logger.log((each, joints_value[each]))
                else:
                    logger.log((each, joints_value[each] * (180 / pi)))

            logger.log(("Time", time.time() - t_0))
        time.sleep(0.01)

    log_thread = threading.Thread(target=log, args=(logger, bag))
    log_thread.start()

    def fin():
        """
        Docstring
        """
        thread_flag.set()
        result_file_path = "/".join(
            [
                result_base_folder,
                "Joint_Log"
            ]) + ".csv"
        logger.log_file_write(result_file_path)
    request.addfinalizer(fin)
Esempio n. 3
0
def get_sensor_objects(request, result_base_folder, dcm, mem):
    """
    Return a dictionary with several objects for
    each X coordinate of all lasers segments
    """
    h_sides = ["Front", "Left", "Right"]
    v_sides = ["Left", "Right"]
    s_sides = ["Front", "Back"]
    bag = qha_tools.Bag(mem)
    dico = {}
    for each in h_sides:
        for i in range(1, 10):
            bag.add_object(
                "Horizontal_X_seg" + str(i) + "_" + each,
                Laser(dcm, mem,
                      each + "/Horizontal/Seg0" + str(i) + "/X/Sensor"))
        for i in range(10, 16):
            bag.add_object(
                "Horizontal_X_seg" + str(i) + "_" + each,
                Laser(dcm, mem,
                      each + "/Horizontal/Seg" + str(i) + "/X/Sensor"))
    for each in v_sides:
        bag.add_object(
            "Vertical_X_seg01_" + each,
            Laser(dcm, mem, "Front/Vertical/" + each + "/Seg01/X/Sensor"))
    for each in s_sides:
        bag.add_object("Sonar_" + each, Sonar(dcm, mem, each))
    for i in range(1, 4):
        bag.add_object(
            "Shovel_X_seg" + str(i),
            Laser(dcm, mem, "Front/Shovel/Seg0" + str(i) + "/X/Sensor"))

    logger_dist = qha_tools.Logger()
    logger_error = qha_tools.Logger()
    dico["logger_dist"] = logger_dist
    dico["logger_error"] = logger_error
    dico["bag"] = bag

    def fin():
        """Method executed after a joint test."""
        result_file_path1 = "/".join(
            [result_base_folder, "Dance_test_distances"]) + ".csv"
        logger_dist.log_file_write(result_file_path1)

    request.addfinalizer(fin)
    return dico
Esempio n. 4
0
def log_wheel(request, result_base_folder, dcm, mem):
    """
    Return a dictionary with several objects for
    POD test
    """
    thread_flag = threading.Event()
    bag = qha_tools.Bag(mem)
    wheels = ["WheelFR", "WheelFL", "WheelB"]
    for wheel in wheels:
        bag.add_object(
            wheel + "SpeedActuator", WheelSpeedActuator(dcm, mem, wheel))
        bag.add_object(
            wheel + "SpeedSensor", WheelSpeedSensor(dcm, mem, wheel))
        bag.add_object(
            wheel + "CurrentSensor", WheelCurrentSensor(dcm, mem, wheel))
    logger = qha_tools.Logger()

    def log(logger, bag):
        """
        Docstring
        """
        t_0 = time.time()
        while not thread_flag.is_set():
            wheel_value = bag.value
            for each in wheel_value.keys():
                logger.log((each, wheel_value[each]))
            logger.log(("Time", time.time() - t_0))
        time.sleep(0.01)

    log_thread = threading.Thread(target=log, args=(logger, bag))
    log_thread.start()

    def fin():
        """
        Docstring
        """
        thread_flag.set()
        result_file_path = "/".join(
            [
                result_base_folder,
                "wheel_Log"
            ]) + ".csv"
        logger.log_file_write(result_file_path)
    request.addfinalizer(fin)
Esempio n. 5
0
def bag_log(dcm, mem, joint_to_test):
    '''
    Docstring
    '''
    bag = qha_tools.Bag(mem)
    for each in joint_to_test:
        if "Wheel" in each:
            bag.add_object(each + "_Joint_Actuator",
                           WheelSpeedActuator(dcm, mem, each))
            bag.add_object(each + "_Joint_Sensor",
                           WheelSpeedSensor(dcm, mem, each))
        else:
            bag.add_object(each + "_Joint_Actuator",
                           JointPositionActuator(dcm, mem, each))
            bag.add_object(each + "_Joint_Sensor",
                           JointPositionSensor(dcm, mem, each))
        bag.add_object(each + "_Joint_Current",
                       JointCurrentSensor(dcm, mem, each))
    return bag