machine-logic-sdk 3.0.1__tar.gz → 3.0.2__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.
Files changed (133) hide show
  1. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/PKG-INFO +1 -1
  2. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/irobot_move_sequence.py +7 -5
  3. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/robot/robot_move.py +4 -4
  4. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/robot/robot_move_sequence.py +3 -3
  5. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/tests/test_robot_move.py +15 -9
  6. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/tests/test_robot_move_sequence.py +2 -2
  7. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/pyproject.toml +1 -1
  8. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/README.md +0 -0
  9. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/__init__.py +0 -0
  10. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/decorators/__init__.py +0 -0
  11. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/decorators/deprecated.py +0 -0
  12. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/decorators/future_api.py +0 -0
  13. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/decorators/tests/__init__.py +0 -0
  14. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/decorators/tests/test_deprecated.py +0 -0
  15. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/decorators/tests/test_future_api.py +0 -0
  16. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/decorators/tests/test_undocumented.py +0 -0
  17. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/decorators/undocumented.py +0 -0
  18. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/__init__.py +0 -0
  19. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/event_listener.py +0 -0
  20. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/exception.py +0 -0
  21. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/handle.py +0 -0
  22. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/iac_motor.py +0 -0
  23. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/iactuator.py +0 -0
  24. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/iactuator_group.py +0 -0
  25. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/icalibration_frame.py +0 -0
  26. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/icamera.py +0 -0
  27. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/icartesian_target.py +0 -0
  28. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/idigital_input.py +0 -0
  29. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/idigital_io_shared.py +0 -0
  30. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/idigital_output.py +0 -0
  31. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/igeneric_joint_constraint.py +0 -0
  32. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/ijoint_target.py +0 -0
  33. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/imachine.py +0 -0
  34. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/imachine_motion.py +0 -0
  35. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/ipath_follower.py +0 -0
  36. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/ipneumatic.py +0 -0
  37. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/ireference_frame.py +0 -0
  38. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/irobot.py +0 -0
  39. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/irobot_alarm.py +0 -0
  40. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/iscene.py +0 -0
  41. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/machine_configuration.py +0 -0
  42. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/mqtt_client.py +0 -0
  43. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/tests/__init__.py +0 -0
  44. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/tests/test_batch_move.py +0 -0
  45. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/tests/test_event_listener.py +0 -0
  46. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/tests/test_icartesian_target.py +0 -0
  47. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/tests/test_idigital_input.py +0 -0
  48. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/tests/test_idigital_output.py +0 -0
  49. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/tests/test_igeneric_joint_constraint.py +0 -0
  50. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/tests/test_ijoint_target.py +0 -0
  51. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/tests/test_imachine.py +0 -0
  52. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/tests/test_ipath_follower.py +0 -0
  53. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/tests/test_ireference_frame.py +0 -0
  54. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/tests/test_irobot.py +0 -0
  55. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/tests/test_mqtt_client.py +0 -0
  56. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/types/__init__.py +0 -0
  57. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/types/ac_motor_details.py +0 -0
  58. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/types/actuator_details.py +0 -0
  59. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/types/batch_move.py +0 -0
  60. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/types/estop_status.py +0 -0
  61. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/types/input_details.py +0 -0
  62. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/types/output_details.py +0 -0
  63. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/types/path_follower_status.py +0 -0
  64. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/types/path_follower_tool.py +0 -0
  65. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/types/pneumatic_details.py +0 -0
  66. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/types/robot_calibration.py +0 -0
  67. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/types/robot_pose.py +0 -0
  68. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/types/robot_tcp.py +0 -0
  69. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/types/robot_types.py +0 -0
  70. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/types/scene_assets.py +0 -0
  71. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/util/__init__.py +0 -0
  72. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/ivention/util/inheritance.py +0 -0
  73. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/__init__.py +0 -0
  74. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/ac_motor.py +0 -0
  75. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/actuator.py +0 -0
  76. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/actuator_group.py +0 -0
  77. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/calibration_frame.py +0 -0
  78. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/camera.py +0 -0
  79. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/cartesian_target.py +0 -0
  80. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/digital_input.py +0 -0
  81. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/digital_output.py +0 -0
  82. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/env_conf.py +0 -0
  83. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/execution_engine_api.py +0 -0
  84. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/firmware_api.py +0 -0
  85. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/joint_target.py +0 -0
  86. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/machine.py +0 -0
  87. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/machine_motion.py +0 -0
  88. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/motion_profile.py +0 -0
  89. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/path_follower.py +0 -0
  90. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/pneumatic.py +0 -0
  91. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/reference_frame.py +0 -0
  92. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/robot/__init__.py +0 -0
  93. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/robot/generic_joint_constraint.py +0 -0
  94. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/robot/listener.py +0 -0
  95. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/robot/robot.py +0 -0
  96. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/robot/robot_alarm.py +0 -0
  97. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/robot/robot_state.py +0 -0
  98. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/robot/robot_utils.py +0 -0
  99. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/robot/vrmcs_client_adapter.py +0 -0
  100. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/scene.py +0 -0
  101. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/tests/MatrixAssertionsMixin.py +0 -0
  102. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/tests/__init__.py +0 -0
  103. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/tests/test_ac_motor.py +0 -0
  104. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/tests/test_actuator.py +0 -0
  105. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/tests/test_actuator_group.py +0 -0
  106. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/tests/test_calibration_frame.py +0 -0
  107. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/tests/test_cartesian_target.py +0 -0
  108. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/tests/test_compute_position_relative_to_base.py +0 -0
  109. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/tests/test_env_conf.py +0 -0
  110. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/tests/test_firmware_api.py +0 -0
  111. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/tests/test_joint_target.py +0 -0
  112. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/tests/test_listener.py +0 -0
  113. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/tests/test_machine.py +0 -0
  114. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/tests/test_path_follower.py +0 -0
  115. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/tests/test_pneumatic.py +0 -0
  116. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/tests/test_pose_conversions.py +0 -0
  117. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/tests/test_reference_frame.py +0 -0
  118. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/tests/test_robot.py +0 -0
  119. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/tests/test_robot_state.py +0 -0
  120. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/tests/test_robot_transforms.py +0 -0
  121. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/tests/test_scene.py +0 -0
  122. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/tests/test_vrmcs_client_adapter.py +0 -0
  123. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/utils/__init__.py +0 -0
  124. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/utils/compute_position_relative_to_base.py +0 -0
  125. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/utils/robot_pose_conversions.py +0 -0
  126. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/machinelogic/utils/robot_transforms.py +0 -0
  127. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/measurements/__init__.py +0 -0
  128. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/measurements/angle.py +0 -0
  129. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/measurements/distance.py +0 -0
  130. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/measurements/tests/__init__.py +0 -0
  131. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/measurements/tests/angle_test.py +0 -0
  132. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/measurements/tests/distance_test.py +0 -0
  133. {machine_logic_sdk-3.0.1 → machine_logic_sdk-3.0.2}/machinelogic/types/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: machine-logic-sdk
3
- Version: 3.0.1
3
+ Version: 3.0.2
4
4
  Summary: SDK for controlling Vention hardware
5
5
  License: Proprietary
6
6
  Keywords: Vention,MachineLogic,SDK,Robot,Automation
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from abc import ABC, abstractmethod
4
- from typing import List, Union
4
+ from typing import List, Optional, Union
5
5
 
6
6
  from machinelogic.decorators.undocumented import undocumented, undocumented_property
7
7
  from machinelogic.ivention.types.robot_types import (
@@ -59,7 +59,7 @@ class IRobotMoveSequence(ABC):
59
59
  target: JointAnglesDegrees,
60
60
  velocity: DegreesPerSecond = 10.0,
61
61
  acceleration: DegreesPerSecondSquared = 10.0,
62
- blend_radius: Millimeters = 0.0,
62
+ blend_radius: Optional[Millimeters] = None,
63
63
  ) -> IRobotMoveSequence:
64
64
  """
65
65
  Append a joint move to the sequence.
@@ -68,7 +68,8 @@ class IRobotMoveSequence(ABC):
68
68
  target: A list of 6 target joint angles in degrees.
69
69
  velocity: Joint velocity in degrees per second
70
70
  acceleration: Joint acceleration in degrees per second squared
71
- blend_radius: Blend radius in millimeters for smooth transitions between moves
71
+ blend_radius: Blend radius in millimeters for smooth transitions between moves.
72
+ If None, the robot controller will use its default behavior (no blending).
72
73
 
73
74
  Returns:
74
75
  Self for method chaining
@@ -80,7 +81,7 @@ class IRobotMoveSequence(ABC):
80
81
  target: CartesianPose,
81
82
  velocity: MillimetersPerSecond = 100.0,
82
83
  acceleration: MillimetersPerSecondSquared = 100.0,
83
- blend_radius: Millimeters = 0.0,
84
+ blend_radius: Optional[Millimeters] = None,
84
85
  reference_frame: Union[CartesianPose, None] = None,
85
86
  ) -> IRobotMoveSequence:
86
87
  """
@@ -90,7 +91,8 @@ class IRobotMoveSequence(ABC):
90
91
  target: Target Cartesian pose [x, y, z, rx, ry, rz] in mm and degrees
91
92
  velocity: Linear velocity in millimeters per second
92
93
  acceleration: Linear acceleration in millimeters per second squared
93
- blend_radius: Blend radius in millimeters for smooth transitions between moves
94
+ blend_radius: Blend radius in millimeters for smooth transitions between moves.
95
+ If None, the robot controller will use its default behavior (no blending).
94
96
  reference_frame: Optional reference frame for the target pose. If None, uses robot base frame.
95
97
 
96
98
  Returns:
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import math
4
- from typing import Union, cast
4
+ from typing import Optional, Union, cast
5
5
 
6
6
  from vrmcs.types import (
7
7
  CartesianConstraints,
@@ -38,7 +38,7 @@ class RobotMove:
38
38
  target: Union[CartesianPose, JointAnglesDegrees],
39
39
  velocity: Union[DegreesPerSecond, MillimetersPerSecond],
40
40
  acceleration: Union[DegreesPerSecondSquared, MillimetersPerSecondSquared],
41
- blend_radius: Millimeters,
41
+ blend_radius: Optional[Millimeters] = None,
42
42
  ):
43
43
  self.move_type = move_type
44
44
  self.target = target
@@ -72,7 +72,7 @@ class RobotMove:
72
72
  move_type=MoveType.MOVE_TYPE_JOINT,
73
73
  joint_goal=joint_goal,
74
74
  joint_constraints=joint_constraints,
75
- blend_radius=self.blend_radius / 1000.0, # mm to meters
75
+ blend_radius=(None if self.blend_radius is None else self.blend_radius / 1000.0),
76
76
  )
77
77
 
78
78
  def _to_vrmcs_cartesian_segment(self) -> MoveSegment:
@@ -112,5 +112,5 @@ class RobotMove:
112
112
  move_type=MoveType.MOVE_TYPE_CARTESIAN,
113
113
  cartesian_goal=cartesian_goal,
114
114
  cartesian_constraints=cartesian_constraints,
115
- blend_radius=self.blend_radius / 1000.0, # mm to meters
115
+ blend_radius=(None if self.blend_radius is None else self.blend_radius / 1000.0),
116
116
  )
@@ -2,7 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import TYPE_CHECKING, Any, List, Union
5
+ from typing import TYPE_CHECKING, Any, List, Optional, Union
6
6
 
7
7
  from vrmcs.types import MoveType
8
8
 
@@ -58,7 +58,7 @@ class RobotMoveSequence(IRobotMoveSequence):
58
58
  target: JointAnglesDegrees,
59
59
  velocity: DegreesPerSecond = 10.0,
60
60
  acceleration: DegreesPerSecondSquared = 10.0,
61
- blend_radius: Millimeters = 0.0,
61
+ blend_radius: Optional[Millimeters] = None,
62
62
  ) -> RobotMoveSequence:
63
63
  self.moves.append(
64
64
  RobotMove(
@@ -76,7 +76,7 @@ class RobotMoveSequence(IRobotMoveSequence):
76
76
  target: CartesianPose,
77
77
  velocity: MillimetersPerSecond = 100.0,
78
78
  acceleration: MillimetersPerSecondSquared = 100.0,
79
- blend_radius: Millimeters = 0.0,
79
+ blend_radius: Optional[Millimeters] = None,
80
80
  reference_frame: Union[CartesianPose, None] = None,
81
81
  ) -> RobotMoveSequence:
82
82
  if reference_frame is None:
@@ -173,7 +173,6 @@ class TestRobotMove(unittest.TestCase):
173
173
  target=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
174
174
  velocity=10.0,
175
175
  acceleration=5.0,
176
- blend_radius=0.0,
177
176
  )
178
177
 
179
178
  with self.assertRaises(ValueError) as context:
@@ -181,8 +180,20 @@ class TestRobotMove(unittest.TestCase):
181
180
 
182
181
  self.assertIn("Unknown move type", str(context.exception))
183
182
 
184
- def test_to_vrmcs_segment_zero_blend_radius(self) -> None:
185
- """Test to_vrmcs_segment with zero blend radius."""
183
+ def test_to_vrmcs_segment_none_blend_radius(self) -> None:
184
+ """Test to_vrmcs_segment with None blend radius omits the field."""
185
+ move = RobotMove(
186
+ move_type=MoveType.MOVE_TYPE_JOINT,
187
+ target=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
188
+ velocity=10.0,
189
+ acceleration=5.0,
190
+ )
191
+
192
+ segment = move.to_vrmcs_segment()
193
+ self.assertIsNone(segment.blend_radius)
194
+
195
+ def test_to_vrmcs_segment_explicit_zero_blend_radius(self) -> None:
196
+ """Test to_vrmcs_segment with explicit zero blend radius sends 0.0."""
186
197
  move = RobotMove(
187
198
  move_type=MoveType.MOVE_TYPE_JOINT,
188
199
  target=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
@@ -192,6 +203,7 @@ class TestRobotMove(unittest.TestCase):
192
203
  )
193
204
 
194
205
  segment = move.to_vrmcs_segment()
206
+ self.assertIsNotNone(segment.blend_radius)
195
207
  self.assertEqual(segment.blend_radius, 0.0)
196
208
 
197
209
  def test_to_vrmcs_segment_joint_angle_conversion(self) -> None:
@@ -202,7 +214,6 @@ class TestRobotMove(unittest.TestCase):
202
214
  target=target,
203
215
  velocity=10.0,
204
216
  acceleration=5.0,
205
- blend_radius=0.0,
206
217
  )
207
218
 
208
219
  segment = move.to_vrmcs_segment()
@@ -228,7 +239,6 @@ class TestRobotMove(unittest.TestCase):
228
239
  target=[0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
229
240
  velocity=velocity,
230
241
  acceleration=acceleration,
231
- blend_radius=0.0,
232
242
  )
233
243
 
234
244
  segment = move.to_vrmcs_segment()
@@ -248,7 +258,6 @@ class TestRobotMove(unittest.TestCase):
248
258
  target=target,
249
259
  velocity=100.0,
250
260
  acceleration=50.0,
251
- blend_radius=0.0,
252
261
  )
253
262
 
254
263
  segment = move.to_vrmcs_segment()
@@ -268,7 +277,6 @@ class TestRobotMove(unittest.TestCase):
268
277
  target=[100.0, 200.0, 300.0, 0.0, 90.0, 180.0],
269
278
  velocity=velocity,
270
279
  acceleration=acceleration,
271
- blend_radius=0.0,
272
280
  )
273
281
 
274
282
  segment = move.to_vrmcs_segment()
@@ -285,7 +293,6 @@ class TestRobotMove(unittest.TestCase):
285
293
  target=target,
286
294
  velocity=100.0,
287
295
  acceleration=50.0,
288
- blend_radius=0.0,
289
296
  )
290
297
 
291
298
  move.to_vrmcs_segment()
@@ -300,7 +307,6 @@ class TestRobotMove(unittest.TestCase):
300
307
  target=target,
301
308
  velocity=100.0,
302
309
  acceleration=50.0,
303
- blend_radius=0.0,
304
310
  )
305
311
 
306
312
  segment = move.to_vrmcs_segment()
@@ -86,7 +86,7 @@ class TestRobotMoveSequence(unittest.TestCase):
86
86
  self.assertEqual(move.target, target)
87
87
  self.assertEqual(move.velocity, 10.0) # default velocity
88
88
  self.assertEqual(move.acceleration, 10.0) # default acceleration
89
- self.assertEqual(move.blend_radius, 0.0) # default blend radius
89
+ self.assertIsNone(move.blend_radius) # default blend radius
90
90
 
91
91
  def test_movel_basic(self) -> None:
92
92
  """Test basic append_movel functionality."""
@@ -135,7 +135,7 @@ class TestRobotMoveSequence(unittest.TestCase):
135
135
  self.assertEqual(move.target, target)
136
136
  self.assertEqual(move.velocity, 100.0) # default velocity
137
137
  self.assertEqual(move.acceleration, 100.0) # default acceleration
138
- self.assertEqual(move.blend_radius, 0.0) # default blend radius
138
+ self.assertIsNone(move.blend_radius) # default blend radius
139
139
 
140
140
  def test_movel_with_reference_frame(self) -> None:
141
141
  """Test append_movel with reference frame transformation."""
@@ -11,7 +11,7 @@ addopts = "--cov --cov-report html:'../../coverage/projects/machine-code/libs/ma
11
11
 
12
12
  [tool.poetry]
13
13
  name = "machine-logic-sdk"
14
- version = "3.0.1"
14
+ version = "3.0.2"
15
15
  description = "SDK for controlling Vention hardware"
16
16
  authors = [ "VentionCo" ]
17
17
  license = "Proprietary"