standardbots 2.0.0.dev1736521463__tar.gz → 2.0.0.dev1736549071__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: standardbots
3
- Version: 2.0.0.dev1736521463
3
+ Version: 2.0.0.dev1736549071
4
4
  Summary: Standard Bots RO1 Robotics API
5
5
  Home-page:
6
6
  Author: Standard Bots Support
@@ -13,7 +13,7 @@
13
13
  from setuptools import setup, find_packages # noqa: H301
14
14
 
15
15
  NAME = "standardbots"
16
- VERSION = "2.0.0-dev1736521463"
16
+ VERSION = "2.0.0-dev1736549071"
17
17
  # To install the library, run the following
18
18
  #
19
19
  # python setup.py install
@@ -188,7 +188,7 @@ class Default:
188
188
  return self.control_gripper(
189
189
  body=models.GripperCommandRequest(
190
190
  kind=models.GripperKindEnum.DhCgi,
191
- dh_pgc=models.DHCGIGripperCommandRequest(
191
+ dh_cgi=models.DHCGIGripperCommandRequest(
192
192
  target_diameter, target_force, target_speed
193
193
  ),
194
194
  ),
@@ -713,7 +713,7 @@ class Camera:
713
713
  None
714
714
  ]:
715
715
  """
716
- Retrieve the latest RGB frame from the camera.
716
+ Retrieve the latest RGB frame from the camera. In JPEG format.
717
717
  """
718
718
  path = "/api/v1/camera/frame/rgb"
719
719
  try:
@@ -1372,6 +1372,66 @@ def parse_joint_rotations(data: object) -> JointRotations:
1372
1372
  def serialize_joint_rotations(data: JointRotations) -> object:
1373
1373
  return [serialize_f_64(data[0]),serialize_f_64(data[1]),serialize_f_64(data[2]),serialize_f_64(data[3]),serialize_f_64(data[4]),serialize_f_64(data[5]),]
1374
1374
 
1375
+ @dataclass
1376
+ class JointStateDisturbance:
1377
+ """Disturbance of a joint"""
1378
+ disturbance: Union[float, None] = None
1379
+ amperageDisturbance: Union[float, None] = None
1380
+ windupDisturbance: Union[float, None] = None
1381
+
1382
+ def validate_disturbance(self, value: float) -> Tuple[bool, str]:
1383
+ if value is None:
1384
+ return [True, ""]
1385
+
1386
+ if not isinstance(value, float):
1387
+ return [False, "disturbance must be of type float for JointStateDisturbance, got " + type(value).__name__]
1388
+
1389
+ return [True, ""]
1390
+
1391
+ def validate_amperageDisturbance(self, value: float) -> Tuple[bool, str]:
1392
+ if value is None:
1393
+ return [True, ""]
1394
+
1395
+ if not isinstance(value, float):
1396
+ return [False, "amperageDisturbance must be of type float for JointStateDisturbance, got " + type(value).__name__]
1397
+
1398
+ return [True, ""]
1399
+
1400
+ def validate_windupDisturbance(self, value: float) -> Tuple[bool, str]:
1401
+ if value is None:
1402
+ return [True, ""]
1403
+
1404
+ if not isinstance(value, float):
1405
+ return [False, "windupDisturbance must be of type float for JointStateDisturbance, got " + type(value).__name__]
1406
+
1407
+ return [True, ""]
1408
+
1409
+ def __post_init__(self):
1410
+ # Type check incoming model - raise error if invalid (required or wrong type)
1411
+ is_valid, error_str = self.validate_disturbance(self.disturbance)
1412
+ if not is_valid:
1413
+ raise TypeError(error_str)
1414
+ is_valid, error_str = self.validate_amperageDisturbance(self.amperageDisturbance)
1415
+ if not is_valid:
1416
+ raise TypeError(error_str)
1417
+ is_valid, error_str = self.validate_windupDisturbance(self.windupDisturbance)
1418
+ if not is_valid:
1419
+ raise TypeError(error_str)
1420
+
1421
+ def parse_joint_state_disturbance(data: object):
1422
+ return JointStateDisturbance(
1423
+ disturbance=parse_f_64(data["disturbance"]) if "disturbance" in data and data.get("disturbance") is not None else None,
1424
+ amperageDisturbance=parse_f_64(data["amperageDisturbance"]) if "amperageDisturbance" in data and data.get("amperageDisturbance") is not None else None,
1425
+ windupDisturbance=parse_f_64(data["windupDisturbance"]) if "windupDisturbance" in data and data.get("windupDisturbance") is not None else None,
1426
+ )
1427
+
1428
+ def serialize_joint_state_disturbance(data: JointStateDisturbance) -> object:
1429
+ return {
1430
+ "disturbance": None if data.disturbance is None else serialize_f_64(data.disturbance),
1431
+ "amperageDisturbance": None if data.amperageDisturbance is None else serialize_f_64(data.amperageDisturbance),
1432
+ "windupDisturbance": None if data.windupDisturbance is None else serialize_f_64(data.windupDisturbance),
1433
+ }
1434
+
1375
1435
  class LinearGripDirectionEnum(Enum):
1376
1436
  Inward = "inward"
1377
1437
  """Move gripper inward to grip. Measure grip position based on interior of gripper fingers and exterior of object"""
@@ -2655,7 +2715,7 @@ def serialize_camera_intrinsics_response(data: CameraIntrinsicsResponse) -> obje
2655
2715
 
2656
2716
  @dataclass
2657
2717
  class CameraFrameRequest:
2658
- """Request for a single camera frame."""
2718
+ """Request for a single camera frame. In JPEG format."""
2659
2719
  camera_settings: Union[CameraSettings, None] = None
2660
2720
 
2661
2721
  def validate_camera_settings(self, value: CameraSettings) -> Tuple[bool, str]:
@@ -2959,81 +3019,6 @@ def serialize_tooltip_position_response(data: TooltipPositionResponse) -> object
2959
3019
  "pose": None if data.pose is None else serialize_cartesian_pose(data.pose),
2960
3020
  }
2961
3021
 
2962
- @dataclass
2963
- class JointState:
2964
- """State of a joint"""
2965
- braked: Union[bool, None] = None
2966
- connectionStatus: Union[ConnectionStatus, None] = None
2967
- inCollision: Union[bool, None] = None
2968
- disturbance: Union[float, None] = None
2969
-
2970
- def validate_braked(self, value: bool) -> Tuple[bool, str]:
2971
- if value is None:
2972
- return [True, ""]
2973
-
2974
- if not isinstance(value, bool):
2975
- return [False, "braked must be of type bool for JointState, got " + type(value).__name__]
2976
-
2977
- return [True, ""]
2978
-
2979
- def validate_connectionStatus(self, value: ConnectionStatus) -> Tuple[bool, str]:
2980
- if value is None:
2981
- return [True, ""]
2982
-
2983
- if not ((isinstance(value, str) and ConnectionStatus in ['connected', 'disconnected', 'ready']) or isinstance(value, ConnectionStatus)):
2984
- return [False, "connectionStatus must be of type ConnectionStatus for JointState, got " + type(value).__name__]
2985
-
2986
- return [True, ""]
2987
-
2988
- def validate_inCollision(self, value: bool) -> Tuple[bool, str]:
2989
- if value is None:
2990
- return [True, ""]
2991
-
2992
- if not isinstance(value, bool):
2993
- return [False, "inCollision must be of type bool for JointState, got " + type(value).__name__]
2994
-
2995
- return [True, ""]
2996
-
2997
- def validate_disturbance(self, value: float) -> Tuple[bool, str]:
2998
- if value is None:
2999
- return [True, ""]
3000
-
3001
- if not isinstance(value, float):
3002
- return [False, "disturbance must be of type float for JointState, got " + type(value).__name__]
3003
-
3004
- return [True, ""]
3005
-
3006
- def __post_init__(self):
3007
- # Type check incoming model - raise error if invalid (required or wrong type)
3008
- is_valid, error_str = self.validate_braked(self.braked)
3009
- if not is_valid:
3010
- raise TypeError(error_str)
3011
- is_valid, error_str = self.validate_connectionStatus(self.connectionStatus)
3012
- if not is_valid:
3013
- raise TypeError(error_str)
3014
- is_valid, error_str = self.validate_inCollision(self.inCollision)
3015
- if not is_valid:
3016
- raise TypeError(error_str)
3017
- is_valid, error_str = self.validate_disturbance(self.disturbance)
3018
- if not is_valid:
3019
- raise TypeError(error_str)
3020
-
3021
- def parse_joint_state(data: object):
3022
- return JointState(
3023
- braked=parse_bool(data["braked"]) if "braked" in data and data.get("braked") is not None else None,
3024
- connectionStatus=parse_connection_status(data["connectionStatus"]) if "connectionStatus" in data and data.get("connectionStatus") is not None else None,
3025
- inCollision=parse_bool(data["inCollision"]) if "inCollision" in data and data.get("inCollision") is not None else None,
3026
- disturbance=parse_f_64(data["disturbance"]) if "disturbance" in data and data.get("disturbance") is not None else None,
3027
- )
3028
-
3029
- def serialize_joint_state(data: JointState) -> object:
3030
- return {
3031
- "braked": None if data.braked is None else serialize_bool(data.braked),
3032
- "connectionStatus": None if data.connectionStatus is None else serialize_connection_status(data.connectionStatus),
3033
- "inCollision": None if data.inCollision is None else serialize_bool(data.inCollision),
3034
- "disturbance": None if data.disturbance is None else serialize_f_64(data.disturbance),
3035
- }
3036
-
3037
3022
  EnvironmentVariablesList = List[EnvironmentVariable]
3038
3023
 
3039
3024
  def parse_environment_variables_list(data: object) -> EnvironmentVariablesList:
@@ -3345,6 +3330,81 @@ def serialize_arm_joint_rotations(data: ArmJointRotations) -> object:
3345
3330
  "joints": serialize_joint_rotations(data.joints),
3346
3331
  }
3347
3332
 
3333
+ @dataclass
3334
+ class JointState:
3335
+ """State of a joint"""
3336
+ braked: Union[bool, None] = None
3337
+ connectionStatus: Union[ConnectionStatus, None] = None
3338
+ inCollision: Union[bool, None] = None
3339
+ disturbance: Union[JointStateDisturbance, None] = None
3340
+
3341
+ def validate_braked(self, value: bool) -> Tuple[bool, str]:
3342
+ if value is None:
3343
+ return [True, ""]
3344
+
3345
+ if not isinstance(value, bool):
3346
+ return [False, "braked must be of type bool for JointState, got " + type(value).__name__]
3347
+
3348
+ return [True, ""]
3349
+
3350
+ def validate_connectionStatus(self, value: ConnectionStatus) -> Tuple[bool, str]:
3351
+ if value is None:
3352
+ return [True, ""]
3353
+
3354
+ if not ((isinstance(value, str) and ConnectionStatus in ['connected', 'disconnected', 'ready']) or isinstance(value, ConnectionStatus)):
3355
+ return [False, "connectionStatus must be of type ConnectionStatus for JointState, got " + type(value).__name__]
3356
+
3357
+ return [True, ""]
3358
+
3359
+ def validate_inCollision(self, value: bool) -> Tuple[bool, str]:
3360
+ if value is None:
3361
+ return [True, ""]
3362
+
3363
+ if not isinstance(value, bool):
3364
+ return [False, "inCollision must be of type bool for JointState, got " + type(value).__name__]
3365
+
3366
+ return [True, ""]
3367
+
3368
+ def validate_disturbance(self, value: JointStateDisturbance) -> Tuple[bool, str]:
3369
+ if value is None:
3370
+ return [True, ""]
3371
+
3372
+ if not isinstance(value, JointStateDisturbance):
3373
+ return [False, "disturbance must be of type JointStateDisturbance for JointState, got " + type(value).__name__]
3374
+
3375
+ return [True, ""]
3376
+
3377
+ def __post_init__(self):
3378
+ # Type check incoming model - raise error if invalid (required or wrong type)
3379
+ is_valid, error_str = self.validate_braked(self.braked)
3380
+ if not is_valid:
3381
+ raise TypeError(error_str)
3382
+ is_valid, error_str = self.validate_connectionStatus(self.connectionStatus)
3383
+ if not is_valid:
3384
+ raise TypeError(error_str)
3385
+ is_valid, error_str = self.validate_inCollision(self.inCollision)
3386
+ if not is_valid:
3387
+ raise TypeError(error_str)
3388
+ is_valid, error_str = self.validate_disturbance(self.disturbance)
3389
+ if not is_valid:
3390
+ raise TypeError(error_str)
3391
+
3392
+ def parse_joint_state(data: object):
3393
+ return JointState(
3394
+ braked=parse_bool(data["braked"]) if "braked" in data and data.get("braked") is not None else None,
3395
+ connectionStatus=parse_connection_status(data["connectionStatus"]) if "connectionStatus" in data and data.get("connectionStatus") is not None else None,
3396
+ inCollision=parse_bool(data["inCollision"]) if "inCollision" in data and data.get("inCollision") is not None else None,
3397
+ disturbance=parse_joint_state_disturbance(data["disturbance"]) if "disturbance" in data and data.get("disturbance") is not None else None,
3398
+ )
3399
+
3400
+ def serialize_joint_state(data: JointState) -> object:
3401
+ return {
3402
+ "braked": None if data.braked is None else serialize_bool(data.braked),
3403
+ "connectionStatus": None if data.connectionStatus is None else serialize_connection_status(data.connectionStatus),
3404
+ "inCollision": None if data.inCollision is None else serialize_bool(data.inCollision),
3405
+ "disturbance": None if data.disturbance is None else serialize_joint_state_disturbance(data.disturbance),
3406
+ }
3407
+
3348
3408
  @dataclass
3349
3409
  class LinearUnit:
3350
3410
  """Reusable Abstraction for linear units (eg distance, position, offset)
@@ -4863,6 +4923,74 @@ def serialize_arm_position_update_request_response_event_stream_details(data: Ar
4863
4923
  "subscriptions": serialize_arm_position_update_request_response_event_stream_subscriptions_list(data.subscriptions),
4864
4924
  }
4865
4925
 
4926
+ @dataclass
4927
+ class Routine:
4928
+ """Robot Routine containing steps to automate robot movement and operations"""
4929
+ id: Union[str, None] = None
4930
+ name: Union[str, None] = None
4931
+ environment_variables: Union[EnvironmentVariablesList, None] = None
4932
+
4933
+ def validate_id(self, value: str) -> Tuple[bool, str]:
4934
+ if value is None:
4935
+ return [True, ""]
4936
+
4937
+ if not isinstance(value, str):
4938
+ return [False, "id must be of type str for Routine, got " + type(value).__name__]
4939
+
4940
+ return [True, ""]
4941
+
4942
+ def validate_name(self, value: str) -> Tuple[bool, str]:
4943
+ if value is None:
4944
+ return [True, ""]
4945
+
4946
+ if not isinstance(value, str):
4947
+ return [False, "name must be of type str for Routine, got " + type(value).__name__]
4948
+
4949
+ return [True, ""]
4950
+
4951
+ def validate_environment_variables(self, value: EnvironmentVariablesList) -> Tuple[bool, str]:
4952
+ if value is None:
4953
+ return [True, ""]
4954
+
4955
+ if not (isinstance(value, list) and all(isinstance(x, EnvironmentVariable) for x in value)):
4956
+ return [False, "environment_variables must be of type EnvironmentVariablesList for Routine, got " + type(value).__name__]
4957
+
4958
+ return [True, ""]
4959
+
4960
+ def __post_init__(self):
4961
+ # Type check incoming model - raise error if invalid (required or wrong type)
4962
+ is_valid, error_str = self.validate_id(self.id)
4963
+ if not is_valid:
4964
+ raise TypeError(error_str)
4965
+ is_valid, error_str = self.validate_name(self.name)
4966
+ if not is_valid:
4967
+ raise TypeError(error_str)
4968
+ is_valid, error_str = self.validate_environment_variables(self.environment_variables)
4969
+ if not is_valid:
4970
+ raise TypeError(error_str)
4971
+
4972
+ def parse_routine(data: object):
4973
+ return Routine(
4974
+ id=parse_str(data["id"]) if "id" in data and data.get("id") is not None else None,
4975
+ name=parse_str(data["name"]) if "name" in data and data.get("name") is not None else None,
4976
+ environment_variables=parse_environment_variables_list(data["environment_variables"]) if "environment_variables" in data and data.get("environment_variables") is not None else None,
4977
+ )
4978
+
4979
+ def serialize_routine(data: Routine) -> object:
4980
+ return {
4981
+ "id": None if data.id is None else serialize_str(data.id),
4982
+ "name": None if data.name is None else serialize_str(data.name),
4983
+ "environment_variables": None if data.environment_variables is None else serialize_environment_variables_list(data.environment_variables),
4984
+ }
4985
+
4986
+ ArmJointRotationsList = List[ArmJointRotations]
4987
+
4988
+ def parse_arm_joint_rotations_list(data: object) -> ArmJointRotationsList:
4989
+ return [parse_arm_joint_rotations(item) for item in data]
4990
+
4991
+ def serialize_arm_joint_rotations_list(data: ArmJointRotationsList) -> List[object]:
4992
+ return [serialize_arm_joint_rotations(item) for item in data]
4993
+
4866
4994
  @dataclass
4867
4995
  class JointsStateResponse:
4868
4996
  """Response to a query for the current state of the joints"""
@@ -4968,74 +5096,6 @@ def serialize_joints_state_response(data: JointsStateResponse) -> object:
4968
5096
  "J5": None if data.J5 is None else serialize_joint_state(data.J5),
4969
5097
  }
4970
5098
 
4971
- @dataclass
4972
- class Routine:
4973
- """Robot Routine containing steps to automate robot movement and operations"""
4974
- id: Union[str, None] = None
4975
- name: Union[str, None] = None
4976
- environment_variables: Union[EnvironmentVariablesList, None] = None
4977
-
4978
- def validate_id(self, value: str) -> Tuple[bool, str]:
4979
- if value is None:
4980
- return [True, ""]
4981
-
4982
- if not isinstance(value, str):
4983
- return [False, "id must be of type str for Routine, got " + type(value).__name__]
4984
-
4985
- return [True, ""]
4986
-
4987
- def validate_name(self, value: str) -> Tuple[bool, str]:
4988
- if value is None:
4989
- return [True, ""]
4990
-
4991
- if not isinstance(value, str):
4992
- return [False, "name must be of type str for Routine, got " + type(value).__name__]
4993
-
4994
- return [True, ""]
4995
-
4996
- def validate_environment_variables(self, value: EnvironmentVariablesList) -> Tuple[bool, str]:
4997
- if value is None:
4998
- return [True, ""]
4999
-
5000
- if not (isinstance(value, list) and all(isinstance(x, EnvironmentVariable) for x in value)):
5001
- return [False, "environment_variables must be of type EnvironmentVariablesList for Routine, got " + type(value).__name__]
5002
-
5003
- return [True, ""]
5004
-
5005
- def __post_init__(self):
5006
- # Type check incoming model - raise error if invalid (required or wrong type)
5007
- is_valid, error_str = self.validate_id(self.id)
5008
- if not is_valid:
5009
- raise TypeError(error_str)
5010
- is_valid, error_str = self.validate_name(self.name)
5011
- if not is_valid:
5012
- raise TypeError(error_str)
5013
- is_valid, error_str = self.validate_environment_variables(self.environment_variables)
5014
- if not is_valid:
5015
- raise TypeError(error_str)
5016
-
5017
- def parse_routine(data: object):
5018
- return Routine(
5019
- id=parse_str(data["id"]) if "id" in data and data.get("id") is not None else None,
5020
- name=parse_str(data["name"]) if "name" in data and data.get("name") is not None else None,
5021
- environment_variables=parse_environment_variables_list(data["environment_variables"]) if "environment_variables" in data and data.get("environment_variables") is not None else None,
5022
- )
5023
-
5024
- def serialize_routine(data: Routine) -> object:
5025
- return {
5026
- "id": None if data.id is None else serialize_str(data.id),
5027
- "name": None if data.name is None else serialize_str(data.name),
5028
- "environment_variables": None if data.environment_variables is None else serialize_environment_variables_list(data.environment_variables),
5029
- }
5030
-
5031
- ArmJointRotationsList = List[ArmJointRotations]
5032
-
5033
- def parse_arm_joint_rotations_list(data: object) -> ArmJointRotationsList:
5034
- return [parse_arm_joint_rotations(item) for item in data]
5035
-
5036
- def serialize_arm_joint_rotations_list(data: ArmJointRotationsList) -> List[object]:
5037
- return [serialize_arm_joint_rotations(item) for item in data]
5038
-
5039
5099
  @dataclass
5040
5100
  class OnRobot2FG14GripperCommandRequest:
5041
5101
  """Control the OnRobot 2FG14 gripper (end effector) of the robot
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: standardbots
3
- Version: 2.0.0.dev1736521463
3
+ Version: 2.0.0.dev1736549071
4
4
  Summary: Standard Bots RO1 Robotics API
5
5
  Home-page:
6
6
  Author: Standard Bots Support