From 1456b341c42a271c9edfb05917dd69337f273433 Mon Sep 17 00:00:00 2001 From: bruno-f-cruz <7049351+bruno-f-cruz@users.noreply.github.com> Date: Fri, 12 Jul 2024 11:34:14 -0700 Subject: [PATCH] Allow non-integer numeric values in axis limits --- .../calibration/aind_manipulator.py | 8 ++--- .../aind_manipulator_calibration_rig.json | 34 +++++++++---------- .../AindManipulatorCalibrationRig.cs | 10 +++--- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/DataSchemas/aind_behavior_services/calibration/aind_manipulator.py b/src/DataSchemas/aind_behavior_services/calibration/aind_manipulator.py index e3cd9a8d..7393416e 100644 --- a/src/DataSchemas/aind_behavior_services/calibration/aind_manipulator.py +++ b/src/DataSchemas/aind_behavior_services/calibration/aind_manipulator.py @@ -7,7 +7,7 @@ from pydantic import BaseModel, Field TASK_LOGIC_VERSION = "0.2.0" -RIG_VERSION = "0.0.0" +RIG_VERSION = "0.1.0" class Axis(IntEnum): @@ -63,13 +63,13 @@ class AxisConfiguration(BaseModel): title="Configures the time between step motor pulses (us) used when starting or stopping a movement", ) motor_operation_mode: MotorOperationMode = Field(default=MotorOperationMode.QUIET, title="Motor operation mode") - max_limit: int = Field(default=24000, title="Maximum limit. A value of 0 disables this limit.") - min_limit: int = Field(default=-1, title="Minimum limit. A value of 0 disables this limit.") + max_limit: float = Field(default=25, title="Maximum limit in SI units. A value of 0 disables this limit.") + min_limit: float = Field(default=-0.01, title="Minimum limit in SI units. A value of 0 disables this limit.") class AindManipulatorCalibrationInput(BaseModel): full_step_to_mm: ManipulatorPosition = Field( - default=(ManipulatorPosition(x=0.010, y1=0.010, y2=0.010, z=0.010)), title="Full step to mm" + default=(ManipulatorPosition(x=0.010, y1=0.010, y2=0.010, z=0.010)), title="Full step to mm. Used to convert steps to SI Units" ) axis_configuration: List[AxisConfiguration] = Field( default=[ diff --git a/src/DataSchemas/schemas/aind_manipulator_calibration_rig.json b/src/DataSchemas/schemas/aind_manipulator_calibration_rig.json index 5863af76..2d2f53f3 100644 --- a/src/DataSchemas/schemas/aind_manipulator_calibration_rig.json +++ b/src/DataSchemas/schemas/aind_manipulator_calibration_rig.json @@ -78,7 +78,7 @@ "y2": 0.01, "z": 0.01 }, - "title": "Full step to mm" + "title": "Full step to mm. Used to convert steps to SI Units" }, "axis_configuration": { "default": [ @@ -89,8 +89,8 @@ "microstep_resolution": 0, "maximum_step_interval": 2000, "motor_operation_mode": 0, - "max_limit": 24000, - "min_limit": -1 + "max_limit": 25.0, + "min_limit": -0.01 }, { "axis": 3, @@ -99,8 +99,8 @@ "microstep_resolution": 0, "maximum_step_interval": 2000, "motor_operation_mode": 0, - "max_limit": 24000, - "min_limit": -1 + "max_limit": 25.0, + "min_limit": -0.01 }, { "axis": 1, @@ -109,8 +109,8 @@ "microstep_resolution": 0, "maximum_step_interval": 2000, "motor_operation_mode": 0, - "max_limit": 24000, - "min_limit": -1 + "max_limit": 25.0, + "min_limit": -0.01 }, { "axis": 4, @@ -119,8 +119,8 @@ "microstep_resolution": 0, "maximum_step_interval": 2000, "motor_operation_mode": 0, - "max_limit": 24000, - "min_limit": -1 + "max_limit": 25.0, + "min_limit": -0.01 } ], "items": { @@ -299,14 +299,14 @@ "title": "Motor operation mode" }, "max_limit": { - "default": 24000, - "title": "Maximum limit. A value of 0 disables this limit.", - "type": "integer" + "default": 25, + "title": "Maximum limit in SI units. A value of 0 disables this limit.", + "type": "number" }, "min_limit": { - "default": -1, - "title": "Minimum limit. A value of 0 disables this limit.", - "type": "integer" + "default": -0.01, + "title": "Minimum limit in SI units. A value of 0 disables this limit.", + "type": "number" } }, "required": [ @@ -379,8 +379,8 @@ }, "properties": { "version": { - "const": "0.0.0", - "default": "0.0.0", + "const": "0.1.0", + "default": "0.1.0", "title": "Version", "type": "string" }, diff --git a/src/Extensions/AindManipulatorCalibrationRig.cs b/src/Extensions/AindManipulatorCalibrationRig.cs index c58d78fa..66cef6a0 100644 --- a/src/Extensions/AindManipulatorCalibrationRig.cs +++ b/src/Extensions/AindManipulatorCalibrationRig.cs @@ -532,9 +532,9 @@ public partial class AxisConfiguration private MotorOperationMode _motorOperationMode = AindBehaviorServices.AindManipulatorCalibrationRig.MotorOperationMode.Quiet; - private int _maxLimit = 24000; + private double _maxLimit = 25D; - private int _minLimit = -1; + private double _minLimit = -0.01D; public AxisConfiguration() { @@ -642,7 +642,7 @@ public MotorOperationMode MotorOperationMode } [Newtonsoft.Json.JsonPropertyAttribute("max_limit")] - public int MaxLimit + public double MaxLimit { get { @@ -655,7 +655,7 @@ public int MaxLimit } [Newtonsoft.Json.JsonPropertyAttribute("min_limit")] - public int MinLimit + public double MinLimit { get { @@ -897,7 +897,7 @@ public enum MotorOperationMode public partial class CalibrationRig { - private string _version = "0.0.0"; + private string _version = "0.1.0"; private string _computerName;