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
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)
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
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)
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