def __init__(self, record_file): self.firstvalid = False self.logger = Logger.get_logger("RtkRecord") self.record_file = record_file self.logger.info("Record file to: " + record_file) try: self.file_handler = open(record_file, 'w') except IOError: self.logger.error("Open file %s failed" % (record_file)) self.file_handler.close() sys.exit(1) self.write( "x,y,z,speed,acceleration,curvature," "curvature_change_rate,time,theta,gear,s,throttle,brake,steering\n" ) self.localization = localization_pb2.LocalizationEstimate() self.chassis = chassis_pb2.Chassis() self.chassis_received = False self.cars = 0.0 self.startmoving = False self.terminating = False self.carcurvature = 0.0 self.prev_carspeed = 0.0 vehicle_config = vehicle_config_pb2.VehicleConfig() proto_utils.get_pb_from_text_file( "/apollo/modules/common/data/vehicle_param.pb.txt", vehicle_config) self.vehicle_param = vehicle_config.vehicle_param
def parse_error(path): vehicles = multi_vehicle_utils.get_vehicle(path) pb_value = vehicle_config_pb2.VehicleConfig() for vehicle in vehicles: conf = os.path.join(path, vehicle, ConfFile) try: proto_utils.get_pb_from_text_file(conf, pb_value) return False except text_format.ParseError: glog.error('Error: Cannot parse %s as binary or text proto' % conf) return True
def __init__(self, record_file, node, speedmultiplier, completepath, replan): """Init player.""" self.firstvalid = False self.logger = Logger.get_logger(tag="RtkPlayer") self.logger.info("Load record file from: %s" % record_file) try: file_handler = open(record_file, 'r') except IOError: self.logger.error("Cannot find file: " + record_file) file_handler.close() sys.exit(0) self.data = genfromtxt(file_handler, delimiter=',', names=True) file_handler.close() self.localization = localization_pb2.LocalizationEstimate() self.chassis = chassis_pb2.Chassis() self.padmsg = pad_msg_pb2.PadMessage() self.localization_received = False self.chassis_received = False self.planning_pub = node.create_writer('/apollo/planning', planning_pb2.ADCTrajectory) self.speedmultiplier = speedmultiplier / 100 self.terminating = False self.sequence_num = 0 b, a = signal.butter(6, 0.05, 'low') self.data['acceleration'] = signal.filtfilt(b, a, self.data['acceleration']) self.start = 0 self.end = 0 self.closestpoint = 0 self.automode = False self.replan = (replan == 't') self.completepath = (completepath == 't') self.estop = False self.logger.info("Planning Ready") vehicle_config = vehicle_config_pb2.VehicleConfig() proto_utils.get_pb_from_text_file( "/apollo/modules/common/data/vehicle_param.pb.txt", vehicle_config) self.vehicle_param = vehicle_config.vehicle_param
def missing_field(path): vehicles = multi_vehicle_utils.get_vehicle(path) glog.info("vehicles in missing field: %s" % vehicles) for vehicle in vehicles: conf_file = os.path.join(path, vehicle, ConfFile) glog.info("conf_file: %s" % conf_file) # reset for each vehicle to avoid overwrite pb_value = vehicle_config_pb2.VehicleConfig() conf = proto_utils.get_pb_from_text_file(conf_file, pb_value) glog.info("vehicles conf %s" % conf) if not check_vehicle_id(conf): return True # required field fields = [conf.vehicle_param.brake_deadzone, conf.vehicle_param.throttle_deadzone, conf.vehicle_param.max_acceleration, conf.vehicle_param.max_deceleration] for field in fields: if math.isnan(field): return True return False