about summary refs log tree commit diff
path: root/lri-proto/proto/mirror_system.proto
blob: 4bb057ec27cad85351b9ee499e86718eb64697e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
syntax = "proto2";

package ltpb;

import "matrix3x3f.proto";
import "point3f.proto";
import "range2f.proto";

message MirrorSystem {
    required Point3F real_camera_location = 1;
    required Matrix3x3F real_camera_orientation = 2;
    required Point3F rotation_axis = 3;
    required Point3F point_on_rotation_axis = 4;
    required float distance_mirror_plane_to_point_on_rotation_axis = 5;
    required Point3F mirror_normal_at_zero_degrees = 6;
    required bool flip_img_around_x = 7;
    required Range2F mirror_angle_range = 8;
    optional float reprojection_error = 9;
}

message MirrorActuatorMapping {
    required TransformationType transformation_type = 1;
    enum TransformationType {
        MEAN_STD_NORMALIZE = 0;
        TAN_HALF_THETA = 1;
    }
    
    required float actuator_length_offset = 2;
    required float actuator_length_scale = 3;
    required float mirror_angle_offset = 4;
    required float mirror_angle_scale = 5;
    
    repeated ActuatorAnglePair actuator_angle_pair_vec = 6;
    message ActuatorAnglePair {
        required int32 hall_code = 1;
        required float angle = 2;
    }
    
    required QuadraticModel quadratic_model = 7;
    message QuadraticModel {
        required bool use_rplus_for_left_segment = 1;
        required bool use_rplus_for_right_segment = 2;
        required float inflection_value = 3;
        repeated float model_coeffs = 4 [packed = true];
    }
    
    optional float angle_to_hall_code_error = 8;
    optional float hall_code_to_angle_error = 9;
    optional Range2F hall_code_range = 10;
}