standardbots 2.0.0.dev1758730305__tar.gz → 2.0.0.dev1760378411__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.

Potentially problematic release.


This version of standardbots might be problematic. Click here for more details.

Files changed (18) hide show
  1. {standardbots-2.0.0.dev1758730305 → standardbots-2.0.0.dev1760378411}/PKG-INFO +1 -1
  2. {standardbots-2.0.0.dev1758730305 → standardbots-2.0.0.dev1760378411}/setup.py +1 -1
  3. {standardbots-2.0.0.dev1758730305 → standardbots-2.0.0.dev1760378411}/standardbots/auto_generated/apis.py +1 -1
  4. {standardbots-2.0.0.dev1758730305 → standardbots-2.0.0.dev1760378411}/standardbots/auto_generated/models.py +6 -97
  5. {standardbots-2.0.0.dev1758730305 → standardbots-2.0.0.dev1760378411}/standardbots.egg-info/PKG-INFO +1 -1
  6. {standardbots-2.0.0.dev1758730305 → standardbots-2.0.0.dev1760378411}/tests/test_apis.py +11 -12
  7. {standardbots-2.0.0.dev1758730305 → standardbots-2.0.0.dev1760378411}/README.md +0 -0
  8. {standardbots-2.0.0.dev1758730305 → standardbots-2.0.0.dev1760378411}/setup.cfg +0 -0
  9. {standardbots-2.0.0.dev1758730305 → standardbots-2.0.0.dev1760378411}/standardbots/__init__.py +0 -0
  10. {standardbots-2.0.0.dev1758730305 → standardbots-2.0.0.dev1760378411}/standardbots/auto_generated/__init__.py +0 -0
  11. {standardbots-2.0.0.dev1758730305 → standardbots-2.0.0.dev1760378411}/standardbots.egg-info/SOURCES.txt +0 -0
  12. {standardbots-2.0.0.dev1758730305 → standardbots-2.0.0.dev1760378411}/standardbots.egg-info/dependency_links.txt +0 -0
  13. {standardbots-2.0.0.dev1758730305 → standardbots-2.0.0.dev1760378411}/standardbots.egg-info/requires.txt +0 -0
  14. {standardbots-2.0.0.dev1758730305 → standardbots-2.0.0.dev1760378411}/standardbots.egg-info/top_level.txt +0 -0
  15. {standardbots-2.0.0.dev1758730305 → standardbots-2.0.0.dev1760378411}/tests/fixtures/__init__.py +0 -0
  16. {standardbots-2.0.0.dev1758730305 → standardbots-2.0.0.dev1760378411}/tests/fixtures/client_fixt.py +0 -0
  17. {standardbots-2.0.0.dev1758730305 → standardbots-2.0.0.dev1760378411}/tests/fixtures/robot_fixt.py +0 -0
  18. {standardbots-2.0.0.dev1758730305 → standardbots-2.0.0.dev1760378411}/tests/fixtures/routines_fixt.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: standardbots
3
- Version: 2.0.0.dev1758730305
3
+ Version: 2.0.0.dev1760378411
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-dev1758730305"
16
+ VERSION = "2.0.0-dev1760378411"
17
17
  # To install the library, run the following
18
18
  #
19
19
  # python setup.py install
@@ -1118,7 +1118,7 @@ class Default:
1118
1118
  models.TeleopState
1119
1119
  ]:
1120
1120
  """
1121
- Set ratio control parameters for movement and rotation
1121
+ Set ratio control parameters
1122
1122
  """
1123
1123
  path = "/api/v1/teleop/set-ratio-control"
1124
1124
  try:
@@ -1736,14 +1736,6 @@ def parse_max_joint_speeds(data: object) -> MaxJointSpeeds:
1736
1736
  def serialize_max_joint_speeds(data: MaxJointSpeeds) -> object:
1737
1737
  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]),]
1738
1738
 
1739
- MaxJointTorques = Tuple[float,float,float,float,float,float,]
1740
-
1741
- def parse_max_joint_torques(data: object) -> MaxJointTorques:
1742
- return (parse_f_64(data[0]),parse_f_64(data[1]),parse_f_64(data[2]),parse_f_64(data[3]),parse_f_64(data[4]),parse_f_64(data[5]),)
1743
-
1744
- def serialize_max_joint_torques(data: MaxJointTorques) -> object:
1745
- 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]),]
1746
-
1747
1739
  class MovementKindEnum(Enum):
1748
1740
  Joint = "joint"
1749
1741
  """Enum Joint = `joint`"""
@@ -3164,8 +3156,7 @@ def serialize_sensor_config(data: SensorConfig) -> object:
3164
3156
  class SetRatioControlRequest:
3165
3157
  """Request to set ratio control parameters"""
3166
3158
  enabled: Union[bool, None] = None
3167
- movementValue: Union[float, None] = None
3168
- rotationValue: Union[float, None] = None
3159
+ value: Union[float, None] = None
3169
3160
 
3170
3161
  def validate_enabled(self, value: bool) -> Tuple[bool, str]:
3171
3162
  if value is None:
@@ -3176,21 +3167,12 @@ class SetRatioControlRequest:
3176
3167
 
3177
3168
  return [True, ""]
3178
3169
 
3179
- def validate_movementValue(self, value: float) -> Tuple[bool, str]:
3180
- if value is None:
3181
- return [True, ""]
3182
-
3183
- if not isinstance(value, float):
3184
- return [False, "movementValue must be of type float for SetRatioControlRequest, got " + type(value).__name__]
3185
-
3186
- return [True, ""]
3187
-
3188
- def validate_rotationValue(self, value: float) -> Tuple[bool, str]:
3170
+ def validate_value(self, value: float) -> Tuple[bool, str]:
3189
3171
  if value is None:
3190
3172
  return [True, ""]
3191
3173
 
3192
3174
  if not isinstance(value, float):
3193
- return [False, "rotationValue must be of type float for SetRatioControlRequest, got " + type(value).__name__]
3175
+ return [False, "value must be of type float for SetRatioControlRequest, got " + type(value).__name__]
3194
3176
 
3195
3177
  return [True, ""]
3196
3178
 
@@ -3199,25 +3181,20 @@ class SetRatioControlRequest:
3199
3181
  is_valid, error_str = self.validate_enabled(self.enabled)
3200
3182
  if not is_valid:
3201
3183
  raise TypeError(error_str)
3202
- is_valid, error_str = self.validate_movementValue(self.movementValue)
3203
- if not is_valid:
3204
- raise TypeError(error_str)
3205
- is_valid, error_str = self.validate_rotationValue(self.rotationValue)
3184
+ is_valid, error_str = self.validate_value(self.value)
3206
3185
  if not is_valid:
3207
3186
  raise TypeError(error_str)
3208
3187
 
3209
3188
  def parse_set_ratio_control_request(data: object):
3210
3189
  return SetRatioControlRequest(
3211
3190
  enabled=parse_bool(data["enabled"]) if "enabled" in data and data.get("enabled") is not None else None,
3212
- movementValue=parse_f_64(data["movementValue"]) if "movementValue" in data and data.get("movementValue") is not None else None,
3213
- rotationValue=parse_f_64(data["rotationValue"]) if "rotationValue" in data and data.get("rotationValue") is not None else None,
3191
+ value=parse_f_64(data["value"]) if "value" in data and data.get("value") is not None else None,
3214
3192
  )
3215
3193
 
3216
3194
  def serialize_set_ratio_control_request(data: SetRatioControlRequest) -> object:
3217
3195
  return {
3218
3196
  "enabled": None if data.enabled is None else serialize_bool(data.enabled),
3219
- "movementValue": None if data.movementValue is None else serialize_f_64(data.movementValue),
3220
- "rotationValue": None if data.rotationValue is None else serialize_f_64(data.rotationValue),
3197
+ "value": None if data.value is None else serialize_f_64(data.value),
3221
3198
  }
3222
3199
 
3223
3200
  class SignalMessageType(Enum):
@@ -3379,14 +3356,6 @@ def parse_string_array(data: object) -> StringArray:
3379
3356
  def serialize_string_array(data: StringArray) -> List[object]:
3380
3357
  return [serialize_str(item) for item in data]
3381
3358
 
3382
- TeleopErrorArray = List[str]
3383
-
3384
- def parse_teleop_error_array(data: object) -> TeleopErrorArray:
3385
- return [parse_str(item) for item in data]
3386
-
3387
- def serialize_teleop_error_array(data: TeleopErrorArray) -> List[object]:
3388
- return [serialize_str(item) for item in data]
3389
-
3390
3359
  class TeleopStatus(Enum):
3391
3360
  WaitForTeleop = "wait_for_teleop"
3392
3361
  """Enum WaitForTeleop = `wait_for_teleop`"""
@@ -4932,7 +4901,6 @@ class SpeedProfile:
4932
4901
  max_joint_speeds: Union[MaxJointSpeeds, None] = None
4933
4902
  max_joint_accelerations: Union[MaxJointAcclerations, None] = None
4934
4903
  max_tooltip_speed: Union[float, None] = None
4935
- max_joint_torques: Union[MaxJointTorques, None] = None
4936
4904
  base_acceleration_scaling: Union[float, None] = None
4937
4905
  base_velocity_scaling: Union[float, None] = None
4938
4906
  scaling_factor: Union[float, None] = None
@@ -4964,15 +4932,6 @@ class SpeedProfile:
4964
4932
 
4965
4933
  return [True, ""]
4966
4934
 
4967
- def validate_max_joint_torques(self, value: MaxJointTorques) -> Tuple[bool, str]:
4968
- if value is None:
4969
- return [True, ""]
4970
-
4971
- if not (isinstance(value, tuple) and len(value) == 6):
4972
- return [False, "max_joint_torques must be of type MaxJointTorques for SpeedProfile, got " + type(value).__name__]
4973
-
4974
- return [True, ""]
4975
-
4976
4935
  def validate_base_acceleration_scaling(self, value: float) -> Tuple[bool, str]:
4977
4936
  if value is None:
4978
4937
  return [True, ""]
@@ -5009,9 +4968,6 @@ class SpeedProfile:
5009
4968
  if not is_valid:
5010
4969
  raise TypeError(error_str)
5011
4970
  is_valid, error_str = self.validate_max_tooltip_speed(self.max_tooltip_speed)
5012
- if not is_valid:
5013
- raise TypeError(error_str)
5014
- is_valid, error_str = self.validate_max_joint_torques(self.max_joint_torques)
5015
4971
  if not is_valid:
5016
4972
  raise TypeError(error_str)
5017
4973
  is_valid, error_str = self.validate_base_acceleration_scaling(self.base_acceleration_scaling)
@@ -5029,7 +4985,6 @@ def parse_speed_profile(data: object):
5029
4985
  max_joint_speeds=parse_max_joint_speeds(data["max_joint_speeds"]) if "max_joint_speeds" in data and data.get("max_joint_speeds") is not None else None,
5030
4986
  max_joint_accelerations=parse_max_joint_acclerations(data["max_joint_accelerations"]) if "max_joint_accelerations" in data and data.get("max_joint_accelerations") is not None else None,
5031
4987
  max_tooltip_speed=parse_f_64(data["max_tooltip_speed"]) if "max_tooltip_speed" in data and data.get("max_tooltip_speed") is not None else None,
5032
- max_joint_torques=parse_max_joint_torques(data["max_joint_torques"]) if "max_joint_torques" in data and data.get("max_joint_torques") is not None else None,
5033
4988
  base_acceleration_scaling=parse_f_64(data["base_acceleration_scaling"]) if "base_acceleration_scaling" in data and data.get("base_acceleration_scaling") is not None else None,
5034
4989
  base_velocity_scaling=parse_f_64(data["base_velocity_scaling"]) if "base_velocity_scaling" in data and data.get("base_velocity_scaling") is not None else None,
5035
4990
  scaling_factor=parse_f_64(data["scaling_factor"]) if "scaling_factor" in data and data.get("scaling_factor") is not None else None,
@@ -5040,7 +4995,6 @@ def serialize_speed_profile(data: SpeedProfile) -> object:
5040
4995
  "max_joint_speeds": None if data.max_joint_speeds is None else serialize_max_joint_speeds(data.max_joint_speeds),
5041
4996
  "max_joint_accelerations": None if data.max_joint_accelerations is None else serialize_max_joint_acclerations(data.max_joint_accelerations),
5042
4997
  "max_tooltip_speed": None if data.max_tooltip_speed is None else serialize_f_64(data.max_tooltip_speed),
5043
- "max_joint_torques": None if data.max_joint_torques is None else serialize_max_joint_torques(data.max_joint_torques),
5044
4998
  "base_acceleration_scaling": None if data.base_acceleration_scaling is None else serialize_f_64(data.base_acceleration_scaling),
5045
4999
  "base_velocity_scaling": None if data.base_velocity_scaling is None else serialize_f_64(data.base_velocity_scaling),
5046
5000
  "scaling_factor": None if data.scaling_factor is None else serialize_f_64(data.scaling_factor),
@@ -6603,7 +6557,6 @@ class BotTeleopDetails:
6603
6557
  isSecondary: Union[bool, None] = None
6604
6558
  isEnabled: Union[bool, None] = None
6605
6559
  status: Union[TeleopStatus, None] = None
6606
- errors: Union[TeleopErrorArray, None] = None
6607
6560
 
6608
6561
  def validate_botId(self, value: str) -> Tuple[bool, str]:
6609
6562
  if value is None:
@@ -6668,15 +6621,6 @@ class BotTeleopDetails:
6668
6621
 
6669
6622
  return [True, ""]
6670
6623
 
6671
- def validate_errors(self, value: TeleopErrorArray) -> Tuple[bool, str]:
6672
- if value is None:
6673
- return [True, ""]
6674
-
6675
- if not (isinstance(value, list) and all(isinstance(x, str) for x in value)):
6676
- return [False, "errors must be of type TeleopErrorArray for BotTeleopDetails, got " + type(value).__name__]
6677
-
6678
- return [True, ""]
6679
-
6680
6624
  def __post_init__(self):
6681
6625
  # Type check incoming model - raise error if invalid (required or wrong type)
6682
6626
  is_valid, error_str = self.validate_botId(self.botId)
@@ -6700,9 +6644,6 @@ class BotTeleopDetails:
6700
6644
  is_valid, error_str = self.validate_status(self.status)
6701
6645
  if not is_valid:
6702
6646
  raise TypeError(error_str)
6703
- is_valid, error_str = self.validate_errors(self.errors)
6704
- if not is_valid:
6705
- raise TypeError(error_str)
6706
6647
 
6707
6648
  def parse_bot_teleop_details(data: object):
6708
6649
  return BotTeleopDetails(
@@ -6713,7 +6654,6 @@ def parse_bot_teleop_details(data: object):
6713
6654
  isSecondary=parse_bool(data["isSecondary"]) if "isSecondary" in data and data.get("isSecondary") is not None else None,
6714
6655
  isEnabled=parse_bool(data["isEnabled"]) if "isEnabled" in data and data.get("isEnabled") is not None else None,
6715
6656
  status=parse_teleop_status(data["status"]) if "status" in data and data.get("status") is not None else None,
6716
- errors=parse_teleop_error_array(data["errors"]) if "errors" in data and data.get("errors") is not None else None,
6717
6657
  )
6718
6658
 
6719
6659
  def serialize_bot_teleop_details(data: BotTeleopDetails) -> object:
@@ -6725,7 +6665,6 @@ def serialize_bot_teleop_details(data: BotTeleopDetails) -> object:
6725
6665
  "isSecondary": None if data.isSecondary is None else serialize_bool(data.isSecondary),
6726
6666
  "isEnabled": None if data.isEnabled is None else serialize_bool(data.isEnabled),
6727
6667
  "status": None if data.status is None else serialize_teleop_status(data.status),
6728
- "errors": None if data.errors is None else serialize_teleop_error_array(data.errors),
6729
6668
  }
6730
6669
 
6731
6670
  @dataclass
@@ -8244,7 +8183,6 @@ def serialize_get_messages_response(data: GetMessagesResponse) -> object:
8244
8183
  class RecorderConfig:
8245
8184
  """Config of the recorder"""
8246
8185
  isSecondary: Union[bool, None] = None
8247
- isInference: Union[bool, None] = None
8248
8186
  userId: Union[str, None] = None
8249
8187
  taskId: Union[str, None] = None
8250
8188
  bots: Union[RecorderBotDetailsList, None] = None
@@ -8261,15 +8199,6 @@ class RecorderConfig:
8261
8199
 
8262
8200
  return [True, ""]
8263
8201
 
8264
- def validate_isInference(self, value: bool) -> Tuple[bool, str]:
8265
- if value is None:
8266
- return [True, ""]
8267
-
8268
- if not isinstance(value, bool):
8269
- return [False, "isInference must be of type bool for RecorderConfig, got " + type(value).__name__]
8270
-
8271
- return [True, ""]
8272
-
8273
8202
  def validate_userId(self, value: str) -> Tuple[bool, str]:
8274
8203
  if value is None:
8275
8204
  return [True, ""]
@@ -8327,9 +8256,6 @@ class RecorderConfig:
8327
8256
  def __post_init__(self):
8328
8257
  # Type check incoming model - raise error if invalid (required or wrong type)
8329
8258
  is_valid, error_str = self.validate_isSecondary(self.isSecondary)
8330
- if not is_valid:
8331
- raise TypeError(error_str)
8332
- is_valid, error_str = self.validate_isInference(self.isInference)
8333
8259
  if not is_valid:
8334
8260
  raise TypeError(error_str)
8335
8261
  is_valid, error_str = self.validate_userId(self.userId)
@@ -8354,7 +8280,6 @@ class RecorderConfig:
8354
8280
  def parse_recorder_config(data: object):
8355
8281
  return RecorderConfig(
8356
8282
  isSecondary=parse_bool(data["isSecondary"]) if "isSecondary" in data and data.get("isSecondary") is not None else None,
8357
- isInference=parse_bool(data["isInference"]) if "isInference" in data and data.get("isInference") is not None else None,
8358
8283
  userId=parse_str(data["userId"]) if "userId" in data and data.get("userId") is not None else None,
8359
8284
  taskId=parse_str(data["taskId"]) if "taskId" in data and data.get("taskId") is not None else None,
8360
8285
  bots=parse_recorder_bot_details_list(data["bots"]) if "bots" in data and data.get("bots") is not None else None,
@@ -8366,7 +8291,6 @@ def parse_recorder_config(data: object):
8366
8291
  def serialize_recorder_config(data: RecorderConfig) -> object:
8367
8292
  return {
8368
8293
  "isSecondary": None if data.isSecondary is None else serialize_bool(data.isSecondary),
8369
- "isInference": None if data.isInference is None else serialize_bool(data.isInference),
8370
8294
  "userId": None if data.userId is None else serialize_str(data.userId),
8371
8295
  "taskId": None if data.taskId is None else serialize_str(data.taskId),
8372
8296
  "bots": None if data.bots is None else serialize_recorder_bot_details_list(data.bots),
@@ -8914,7 +8838,6 @@ class TeleopState:
8914
8838
  config: Union[TeleopConfig, None] = None
8915
8839
  status: Union[TeleopStatus, None] = None
8916
8840
  botsInSync: Union[bool, None] = None
8917
- errors: Union[TeleopErrorArray, None] = None
8918
8841
 
8919
8842
  def validate_config(self, value: TeleopConfig) -> Tuple[bool, str]:
8920
8843
  if value is None:
@@ -8943,15 +8866,6 @@ class TeleopState:
8943
8866
 
8944
8867
  return [True, ""]
8945
8868
 
8946
- def validate_errors(self, value: TeleopErrorArray) -> Tuple[bool, str]:
8947
- if value is None:
8948
- return [True, ""]
8949
-
8950
- if not (isinstance(value, list) and all(isinstance(x, str) for x in value)):
8951
- return [False, "errors must be of type TeleopErrorArray for TeleopState, got " + type(value).__name__]
8952
-
8953
- return [True, ""]
8954
-
8955
8869
  def __post_init__(self):
8956
8870
  # Type check incoming model - raise error if invalid (required or wrong type)
8957
8871
  is_valid, error_str = self.validate_config(self.config)
@@ -8963,16 +8877,12 @@ class TeleopState:
8963
8877
  is_valid, error_str = self.validate_botsInSync(self.botsInSync)
8964
8878
  if not is_valid:
8965
8879
  raise TypeError(error_str)
8966
- is_valid, error_str = self.validate_errors(self.errors)
8967
- if not is_valid:
8968
- raise TypeError(error_str)
8969
8880
 
8970
8881
  def parse_teleop_state(data: object):
8971
8882
  return TeleopState(
8972
8883
  config=parse_teleop_config(data["config"]) if "config" in data and data.get("config") is not None else None,
8973
8884
  status=parse_teleop_status(data["status"]) if "status" in data and data.get("status") is not None else None,
8974
8885
  botsInSync=parse_bool(data["botsInSync"]) if "botsInSync" in data and data.get("botsInSync") is not None else None,
8975
- errors=parse_teleop_error_array(data["errors"]) if "errors" in data and data.get("errors") is not None else None,
8976
8886
  )
8977
8887
 
8978
8888
  def serialize_teleop_state(data: TeleopState) -> object:
@@ -8980,7 +8890,6 @@ def serialize_teleop_state(data: TeleopState) -> object:
8980
8890
  "config": None if data.config is None else serialize_teleop_config(data.config),
8981
8891
  "status": None if data.status is None else serialize_teleop_status(data.status),
8982
8892
  "botsInSync": None if data.botsInSync is None else serialize_bool(data.botsInSync),
8983
- "errors": None if data.errors is None else serialize_teleop_error_array(data.errors),
8984
8893
  }
8985
8894
 
8986
8895
  @dataclass
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: standardbots
3
- Version: 2.0.0.dev1758730305
3
+ Version: 2.0.0.dev1760378411
4
4
  Summary: Standard Bots RO1 Robotics API
5
5
  Home-page:
6
6
  Author: Standard Bots Support
@@ -1231,7 +1231,7 @@ class TestPostMovementPositionArm:
1231
1231
 
1232
1232
  target_position_res = client.movement.position.get_arm_position()
1233
1233
  target_joint_pose_rounded = tuple(
1234
- round(val, 2) for val in target_position_res.data.joint_rotations
1234
+ round(val, 3) for val in target_position_res.data.joint_rotations
1235
1235
  )
1236
1236
 
1237
1237
  # check if robot successfully moved to target pose
@@ -1246,7 +1246,7 @@ class TestPostMovementPositionArm:
1246
1246
  initial_position_res = client.movement.position.get_arm_position()
1247
1247
 
1248
1248
  initial_joint_pose_rounded = tuple(
1249
- round(val, 2) for val in initial_position_res.data.joint_rotations
1249
+ round(val, 3) for val in initial_position_res.data.joint_rotations
1250
1250
  )
1251
1251
  # check if pose correctly moved to initial pose
1252
1252
  assert initial_joint_pose_rounded == initial_position
@@ -1266,7 +1266,7 @@ class TestPostMovementPositionArm:
1266
1266
  initial_position = (0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
1267
1267
  pose_res = client.movement.position.get_arm_position()
1268
1268
  initial_joint_pose_rounded = tuple(
1269
- round(val, 2) for val in pose_res.data.joint_rotations
1269
+ round(val, 3) for val in pose_res.data.joint_rotations
1270
1270
  )
1271
1271
 
1272
1272
  # if robot is not in initial position, move it to initial position
@@ -1298,7 +1298,7 @@ class TestPostMovementPositionArm:
1298
1298
 
1299
1299
  pose_res = client.movement.position.get_arm_position()
1300
1300
  joint_pose_rounded = tuple(
1301
- round(val, 2) for val in pose_res.data.joint_rotations
1301
+ round(val, 3) for val in pose_res.data.joint_rotations
1302
1302
  )
1303
1303
 
1304
1304
  # check if robot successfully moved into initial pose
@@ -1346,9 +1346,9 @@ class TestPostMovementPositionArm:
1346
1346
  pose_res = client.movement.position.get_arm_position()
1347
1347
  target_tooltip = pose_res.data.tooltip_position.position
1348
1348
 
1349
- assert approx_equal(target_tooltip.x, target_tooltip_position.x, 2)
1350
- assert approx_equal(target_tooltip.y, target_tooltip_position.y, 2)
1351
- assert approx_equal(target_tooltip.z, target_tooltip_position.z, 2)
1349
+ assert approx_equal(target_tooltip.x, target_tooltip_position.x)
1350
+ assert approx_equal(target_tooltip.y, target_tooltip_position.y)
1351
+ assert approx_equal(target_tooltip.z, target_tooltip_position.z)
1352
1352
 
1353
1353
  pose_body = models.ArmPositionUpdateRequest(
1354
1354
  kind=models.ArmPositionUpdateRequestKindEnum.TooltipPosition,
@@ -1369,9 +1369,9 @@ class TestPostMovementPositionArm:
1369
1369
  pose_res = client.movement.position.get_arm_position()
1370
1370
  tooltip_position = pose_res.data.tooltip_position.position
1371
1371
 
1372
- assert approx_equal(tooltip_position.x, initial_tooltip_position.x, 2)
1373
- assert approx_equal(tooltip_position.y, initial_tooltip_position.y, 2)
1374
- assert approx_equal(tooltip_position.z, initial_tooltip_position.z, 2)
1372
+ assert approx_equal(tooltip_position.x, initial_tooltip_position.x)
1373
+ assert approx_equal(tooltip_position.y, initial_tooltip_position.y)
1374
+ assert approx_equal(tooltip_position.z, initial_tooltip_position.z)
1375
1375
 
1376
1376
  def test_tooltip_positions_to_target_and_back(
1377
1377
  self, client_live: StandardBotsRobot
@@ -3317,13 +3317,12 @@ class TestPostMovementPositionArmControlled:
3317
3317
  assert not approx_equal(joint, target_position[i], 2), (
3318
3318
  f"Joint {i} is approximately equal to target position (should not reach goal) (actual={joint}, expected={target_position[i]})"
3319
3319
  )
3320
- time.sleep(2)
3321
3320
 
3322
3321
  # Now retrieve the failure
3323
3322
  assert heartbeat_data.event is not None
3324
3323
  assert heartbeat_data.event.kind == models.ArmPositionUpdateKindEnum.Failure
3325
3324
  assert heartbeat_data.event.failure is not None
3326
- assert heartbeat_data.event.failure.reason == "Failed to generate a motion plan"
3325
+ assert heartbeat_data.event.failure.reason == "Error while running motion"
3327
3326
 
3328
3327
  def test_move_then_stop_heartbeat(
3329
3328
  self,