def setUp(self): self.FRC = OSIRulesChecker() orient3d = Orientation3d() orient3d.roll = 5 orient3d.pitch = 2 orient3d.yaw = 2 self.linked_orient3d = LinkedProtoField(orient3d, "Orientation3d")
def setUp(self): self.FRC = OSIRulesChecker() pb_VECTOR3D = Vector3d() pb_VECTOR3D.x = 1 pb_VECTOR3D.y = 2 self.VECTOR3D = LinkedProtoField(pb_VECTOR3D, "Vector3D")
def setUp(self): self.FRC = OSIRulesChecker() pb_ORIENTATION3D = Orientation3d() pb_ORIENTATION3D.roll = 1 # pb_ORIENTATION3D.pitch = 2 --> pitch is not set pb_ORIENTATION3D.yaw = 2 self.ORIENTATION3D = LinkedProtoField(pb_ORIENTATION3D, "Orientation3d")
def setUp(self): self.FRC = OSIRulesChecker() sv = SensorView() linked_sv = LinkedProtoField(sv, name="SensorView") sid = sv.sensor_id sid.value = 0 self.linked_sid = LinkedProtoField(sid, name="sensor_id", parent=linked_sv) sv2 = SensorView() linked_sv2 = LinkedProtoField(sv2, name="SensorView") sid2 = sv2.sensor_id sid2.value = 2 self.linked_sid2 = LinkedProtoField(sid2, name="sensor_id", parent=linked_sv2)
def test_not_comply_greater(self): field_params_rule_params = [[2, 1], [0, -1], [1, 0], [1, -1], [-1, -2], [-1.3, -1.5], [0.9, -1.3]] for fr_param in field_params_rule_params: with self.subTest(fr_param=fr_param): self.assertFalse( self.FRC.is_greater_than( LinkedProtoField(value=fr_param[1]), Rule(verb="is_greater_than", params=fr_param[0])))
def test_not_comply_equal(self): field_params_rule_params = [[3, 3], [0, 0], [-1, -1], [-1.5, -1.5], [2.3, 2.3]] for fr_param in field_params_rule_params: with self.subTest(fr_param=fr_param): self.assertFalse( self.FRC.is_less_than( LinkedProtoField(value=fr_param[1]), Rule(verb="is_less_than", params=fr_param[0])))
def setUp(self): self.FRC = OSIRulesChecker() sv1 = SensorView() linked_sv1 = LinkedProtoField(sv1, name="SensorView") gt1 = sv1.global_ground_truth linked_gt1 = LinkedProtoField(gt1, name="global_ground_truth", parent=linked_sv1) gtlb1 = gt1.lane_boundary.add() linked_gtlb1 = LinkedProtoField(gtlb1, name="lane_boundary", parent=linked_gt1) bladd1 = gtlb1.boundary_line.add() bladd1.position.x = 1699.2042678176733 bladd1.position.y = 100.16895580204906 bladd1.position.z = 0.0 bladd1.width = 0.13 bladd1.height = 0.0 self.lb1 = LinkedProtoField(bladd1, name="boundary_line", parent=linked_gtlb1) self.lb1.path = 'SensorView.global_ground_truth.lane_boundary.boundary_line' # self.lb1.parent = sv2 = SensorView() linked_sv2 = LinkedProtoField(sv2, name="SensorView") gt2 = sv2.global_ground_truth linked_gt2 = LinkedProtoField(gt2, name="global_ground_truth", parent=linked_sv2) gtlb2 = gt2.lane_boundary.add() linked_gtlb2 = LinkedProtoField(gtlb2, name="lane_boundary", parent=linked_gt2) bladd2 = gtlb2.boundary_line.add() bladd2.position.x = 1699.2042678176733 bladd2.position.y = 100.16895580204906 bladd2.position.z = 0.0 bladd2.width = 0.14 bladd2.height = 0.13 self.lb2 = LinkedProtoField(bladd2, name="boundary_line", parent=linked_gtlb2) self.lb2.path = 'SensorView.global_ground_truth.lane_boundary.boundary_line'
def get_message_by_index(self, index): """ Get a message by its index. Try first to get it from the cache made by the method ``cache_messages_in_index_range``. """ message = self.message_cache.get(index, None) if message is not None: return message message = next(self.get_messages_in_index_range(index, index + 1)) return LinkedProtoField(message, name=self.type_name)
def test_comply_less(self): field_params_rule_params = [[2, 1], [0, -1], [1, 0], [1, -1], [-1, -2], [-1.3, -1.5], [0.9, -1.3]] for fr_param in field_params_rule_params: with self.subTest(fr_param=fr_param): self.assertTrue( self.FRC.is_less_than_or_equal_to( LinkedProtoField(value=fr_param[1]), Rule(verb="is_less_than_or_equal_to", params=fr_param[0])))
def test_comply_equal(self): field_params_rule_params = [[3, 3], [0, 0], [-1, -1], [-1.5, -1.5], [2.3, 2.3]] for fr_param in field_params_rule_params: with self.subTest(fr_param=fr_param): self.assertTrue( self.FRC.is_greater_than_or_equal_to( LinkedProtoField(value=fr_param[1]), Rule(verb="is_greater_than_or_equal_to", params=fr_param[0])))
def setUp(self): self.FRC = OSIRulesChecker() sv1 = SensorView() linked_sv1 = LinkedProtoField(sv1, name="SensorView") gt1 = sv1.global_ground_truth linked_gt1 = LinkedProtoField(gt1, name="global_ground_truth", parent=linked_sv1) gt1.host_vehicle_id.value = 0 hvid1 = gt1.host_vehicle_id self.linked_hvid1 = LinkedProtoField(hvid1, name="host_vehicle_id", parent=linked_gt1) sv2 = SensorView() linked_sv2 = LinkedProtoField(sv2, name="SensorView") gt2 = sv2.global_ground_truth linked_gt2 = LinkedProtoField(gt2, name="global_ground_truth", parent=linked_sv2) gt2.host_vehicle_id.value = 1 hvid1 = gt2.host_vehicle_id self.linked_hvid2 = LinkedProtoField(hvid1, name="host_vehicle_id", parent=linked_gt2)
def get_messages_in_index_range(self, begin, end): """ Yield an iterator over messages of indexes between begin and end included. """ if self.show_progress: progress_bar = Bar(max=len(self.message_offsets[begin:end])) print("Importing messages from trace file ...") else: progress_bar = None self.trace_file.seek(self.message_offsets[begin]) abs_first_offset = self.message_offsets[begin] abs_last_offset = (self.message_offsets[end] if end < len(self.message_offsets) else self.retrieved_trace_size) rel_message_offsets = [ abs_message_offset - abs_first_offset for abs_message_offset in self.message_offsets[begin:end] ] if self.path.lower().endswith((".txt.lzma", ".txt.xz", ".txt")): message_sequence_len = abs_last_offset - abs_first_offset - SEPARATOR_LENGTH serialized_messages_extract = self.trace_file.read( message_sequence_len) for rel_index, rel_message_offset in enumerate( rel_message_offsets): rel_begin = rel_message_offset rel_end = (rel_message_offsets[rel_index + 1] - SEPARATOR_LENGTH if rel_index + 1 < len(rel_message_offsets) else message_sequence_len) message = MESSAGES_TYPE[self.type_name]() serialized_message = serialized_messages_extract[ rel_begin:rel_end] message.ParseFromString(serialized_message) self.update_bar(progress_bar, rel_index) yield LinkedProtoField(message, name=self.type_name) elif self.path.lower().endswith((".osi.lzma", ".osi.xz", ".osi")): message_sequence_len = abs_last_offset - abs_first_offset serialized_messages_extract = self.trace_file.read( message_sequence_len) for rel_index, rel_message_offset in enumerate( rel_message_offsets): rel_begin = rel_message_offset + self._int_length rel_end = (rel_message_offsets[rel_index + 1] - self._int_length if rel_index + 1 < len(rel_message_offsets) else message_sequence_len) message = MESSAGES_TYPE[self.type_name]() serialized_message = serialized_messages_extract[ rel_begin:rel_end] message.ParseFromString(serialized_message) self.update_bar(progress_bar, rel_index) yield LinkedProtoField(message, name=self.type_name) else: raise Exception( f"The defined file format {self.path.split('/')[-1]} does not exist." ) if self.show_progress: self.update_bar(progress_bar, progress_bar.max) progress_bar.finish()
def test_not_comply(self): field = LinkedProtoField(value=2) rule = Rule(verb="is_different", params=2) compliance = self.FRC.is_different(field, rule) self.assertFalse(compliance)
def test_not_comply(self): field = LinkedProtoField(value=3) rule = Rule(verb="is_less_than_or_equal_to", params=2) compliance = self.FRC.is_equal_to(field, rule) self.assertFalse(compliance)
def test_comply_is_optional(self): self.assertTrue( self.FRC.is_optional(LinkedProtoField(value=1), Rule(verb="is_optional", params=None)))
def test_comply(self): field = LinkedProtoField(value=3) rule = Rule(verb="is_different_to", params=2) compliance = self.FRC.is_different_to(field, rule) self.assertTrue(compliance)