about summary refs log tree commit diff
path: root/lri-proto/proto/mirror_system.proto
diff options
context:
space:
mode:
authorgennyble <gen@nyble.dev>2023-09-10 02:44:01 -0500
committergennyble <gen@nyble.dev>2023-09-10 02:44:01 -0500
commita962ba9c853a797e9a41b2830ec0181b167d8cd9 (patch)
tree7de53dfcaf87c5d4b43f2e8b38161eb193c136ad /lri-proto/proto/mirror_system.proto
parent70187683361d97a8b5a251567323c323c90302f2 (diff)
downloadlri-rs-a962ba9c853a797e9a41b2830ec0181b167d8cd9.tar.gz
lri-rs-a962ba9c853a797e9a41b2830ec0181b167d8cd9.zip
reorg
Diffstat (limited to 'lri-proto/proto/mirror_system.proto')
-rw-r--r--lri-proto/proto/mirror_system.proto50
1 files changed, 50 insertions, 0 deletions
diff --git a/lri-proto/proto/mirror_system.proto b/lri-proto/proto/mirror_system.proto
new file mode 100644
index 0000000..4bb057e
--- /dev/null
+++ b/lri-proto/proto/mirror_system.proto
@@ -0,0 +1,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;
+}