antioch-py 2.0.4__tar.gz → 2.0.6__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 antioch-py might be problematic. Click here for more details.

Files changed (106) hide show
  1. {antioch_py-2.0.4/antioch_py.egg-info → antioch_py-2.0.6}/PKG-INFO +1 -1
  2. {antioch_py-2.0.4 → antioch_py-2.0.6}/README.md +22 -0
  3. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/session/scene.py +27 -6
  4. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/session/views/pir_sensor.py +1 -1
  5. {antioch_py-2.0.4 → antioch_py-2.0.6/antioch_py.egg-info}/PKG-INFO +1 -1
  6. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/message/pir.py +2 -1
  7. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/session/views/pir_sensor.py +17 -6
  8. {antioch_py-2.0.4 → antioch_py-2.0.6}/pyproject.toml +1 -1
  9. {antioch_py-2.0.4 → antioch_py-2.0.6}/MANIFEST.in +0 -0
  10. {antioch_py-2.0.4 → antioch_py-2.0.6}/README.pypi.md +0 -0
  11. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/__init__.py +0 -0
  12. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/message.py +0 -0
  13. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/module/__init__.py +0 -0
  14. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/module/clock.py +0 -0
  15. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/module/execution.py +0 -0
  16. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/module/input.py +0 -0
  17. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/module/module.py +0 -0
  18. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/module/node.py +0 -0
  19. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/module/token.py +0 -0
  20. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/session/__init__.py +0 -0
  21. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/session/ark.py +0 -0
  22. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/session/asset.py +0 -0
  23. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/session/error.py +0 -0
  24. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/session/record.py +0 -0
  25. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/session/session.py +0 -0
  26. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/session/task.py +0 -0
  27. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/session/views/__init__.py +0 -0
  28. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/session/views/animation.py +0 -0
  29. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/session/views/articulation.py +0 -0
  30. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/session/views/basis_curve.py +0 -0
  31. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/session/views/camera.py +0 -0
  32. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/session/views/collision.py +0 -0
  33. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/session/views/geometry.py +0 -0
  34. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/session/views/ground_plane.py +0 -0
  35. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/session/views/imu.py +0 -0
  36. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/session/views/joint.py +0 -0
  37. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/session/views/light.py +0 -0
  38. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/session/views/radar.py +0 -0
  39. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/session/views/rigid_body.py +0 -0
  40. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch/session/views/xform.py +0 -0
  41. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch_py.egg-info/SOURCES.txt +0 -0
  42. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch_py.egg-info/dependency_links.txt +0 -0
  43. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch_py.egg-info/entry_points.txt +0 -0
  44. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch_py.egg-info/requires.txt +0 -0
  45. {antioch_py-2.0.4 → antioch_py-2.0.6}/antioch_py.egg-info/top_level.txt +0 -0
  46. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/__init__.py +0 -0
  47. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/ark/__init__.py +0 -0
  48. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/ark/ark.py +0 -0
  49. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/ark/hardware.py +0 -0
  50. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/ark/kinematics.py +0 -0
  51. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/ark/module.py +0 -0
  52. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/ark/node.py +0 -0
  53. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/ark/scheduler.py +0 -0
  54. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/ark/sim.py +0 -0
  55. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/assets/__init__.py +0 -0
  56. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/constants.py +0 -0
  57. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/core/__init__.py +0 -0
  58. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/core/agent.py +0 -0
  59. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/core/auth.py +0 -0
  60. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/core/registry.py +0 -0
  61. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/core/task.py +0 -0
  62. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/message/__init__.py +0 -0
  63. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/message/annotation.py +0 -0
  64. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/message/array.py +0 -0
  65. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/message/base.py +0 -0
  66. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/message/camera.py +0 -0
  67. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/message/color.py +0 -0
  68. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/message/frame.py +0 -0
  69. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/message/image.py +0 -0
  70. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/message/imu.py +0 -0
  71. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/message/joint.py +0 -0
  72. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/message/log.py +0 -0
  73. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/message/point.py +0 -0
  74. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/message/point_cloud.py +0 -0
  75. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/message/pose.py +0 -0
  76. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/message/quaternion.py +0 -0
  77. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/message/radar.py +0 -0
  78. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/message/types.py +0 -0
  79. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/message/vector.py +0 -0
  80. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/rome/__init__.py +0 -0
  81. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/rome/client.py +0 -0
  82. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/rome/error.py +0 -0
  83. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/session/__init__.py +0 -0
  84. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/session/environment.py +0 -0
  85. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/session/sim.py +0 -0
  86. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/session/views/__init__.py +0 -0
  87. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/session/views/animation.py +0 -0
  88. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/session/views/articulation.py +0 -0
  89. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/session/views/basis_curve.py +0 -0
  90. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/session/views/camera.py +0 -0
  91. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/session/views/collision.py +0 -0
  92. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/session/views/geometry.py +0 -0
  93. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/session/views/ground_plane.py +0 -0
  94. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/session/views/imu.py +0 -0
  95. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/session/views/joint.py +0 -0
  96. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/session/views/light.py +0 -0
  97. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/session/views/radar.py +0 -0
  98. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/session/views/rigid_body.py +0 -0
  99. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/session/views/viewport.py +0 -0
  100. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/session/views/xform.py +0 -0
  101. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/utils/__init__.py +0 -0
  102. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/utils/comms.py +0 -0
  103. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/utils/logger.py +0 -0
  104. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/utils/time.py +0 -0
  105. {antioch_py-2.0.4 → antioch_py-2.0.6}/common/utils/usd.py +0 -0
  106. {antioch_py-2.0.4 → antioch_py-2.0.6}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: antioch-py
3
- Version: 2.0.4
3
+ Version: 2.0.6
4
4
  Summary: The Antioch Python SDK
5
5
  Author-email: Antioch Robotics <support@antioch.dev>
6
6
  License-Expression: MIT
@@ -30,3 +30,25 @@ Install the pre-commit hooks to auto-run `uv sync` and `ruff format` on Git comm
30
30
  ```bash
31
31
  uv run pre-commit install
32
32
  ```
33
+
34
+ ## Releasing to PyPI
35
+
36
+ The package is published to PyPI as `antioch-py`. To release a new version:
37
+
38
+ 1. **Bump the version** in `pyproject.toml` on a feature branch:
39
+
40
+ ```toml
41
+ version = "2.1.0"
42
+ ```
43
+
44
+ 2. **Merge to main** via pull request
45
+
46
+ That's it! The GitHub Action automatically detects the version bump and publishes to PyPI.
47
+
48
+ ### Versioning
49
+
50
+ Follow [semantic versioning](https://semver.org/):
51
+
52
+ - **MAJOR** (2.x.x → 3.0.0): Breaking API changes
53
+ - **MINOR** (2.0.x → 2.1.0): New features, backward compatible
54
+ - **PATCH** (2.0.0 → 2.0.1): Bug fixes, backward compatible
@@ -1334,21 +1334,28 @@ class Scene(SessionContainer):
1334
1334
  max_range: float = 12.0,
1335
1335
  horiz_fov_deg: float = 90.0,
1336
1336
  vert_fov_deg: float = 60.0,
1337
- num_elements: int = 2,
1338
1337
  rays_per_h: int = 64,
1339
1338
  rays_per_v: int = 16,
1340
1339
  gain: float = 0.01,
1341
1340
  hp_corner_hz: float = 0.1,
1342
- lp_corner_hz: float = 10.0,
1341
+ lp_corner_hz: float = 3.0,
1343
1342
  threshold: float | None = None,
1344
1343
  threshold_scale: float = 1.0,
1345
1344
  hold_time_s: float = 2.0,
1346
1345
  lens_transmission: float = 0.9,
1347
- lens_segments_h: int = 8,
1346
+ lens_segments_h: int = 6,
1347
+ vertical_gain_falloff: float = 0.5,
1348
+ element_fov_overlap_deg: float = 20.0,
1349
+ element_scatter_gain: float = 0.1,
1350
+ element_fov_transition_deg: float = 15.0,
1348
1351
  ambient_temp_c: float = 20.0,
1352
+ thermal_time_constant_s: float = 0.2,
1353
+ pyro_responsivity: float = 1.0,
1354
+ noise_amplitude: float = 0.0,
1349
1355
  target_delta_t: float = 10.0,
1350
1356
  target_distance: float = 5.0,
1351
1357
  target_emissivity: float = 0.98,
1358
+ target_velocity_mps: float = 1.0,
1352
1359
  world_pose: Pose | dict | None = None,
1353
1360
  local_pose: Pose | dict | None = None,
1354
1361
  ) -> PirSensor:
@@ -1364,7 +1371,6 @@ class Scene(SessionContainer):
1364
1371
  :param max_range: Maximum detection range in meters.
1365
1372
  :param horiz_fov_deg: Horizontal field of view in degrees.
1366
1373
  :param vert_fov_deg: Vertical field of view in degrees.
1367
- :param num_elements: Number of sensing elements (typically 2).
1368
1374
  :param rays_per_h: Number of rays in horizontal direction.
1369
1375
  :param rays_per_v: Number of rays in vertical direction.
1370
1376
  :param gain: Amplifier gain.
@@ -1374,11 +1380,19 @@ class Scene(SessionContainer):
1374
1380
  :param threshold_scale: Scale factor applied to auto-calibrated threshold.
1375
1381
  :param hold_time_s: Detection hold time in seconds.
1376
1382
  :param lens_transmission: Lens transmission coefficient (0-1).
1377
- :param lens_segments_h: Number of horizontal lens segments for interleaved pattern.
1383
+ :param lens_segments_h: Number of horizontal lens segments (sinusoidal sensitivity peaks).
1384
+ :param vertical_gain_falloff: Exponent for elevation-based gain reduction (0=uniform).
1385
+ :param element_fov_overlap_deg: Half-angle of center region where both elements see well (degrees).
1386
+ :param element_scatter_gain: Minimum gain for blocked element due to scatter/reflections (0-1).
1387
+ :param element_fov_transition_deg: Width of soft transition from full gain to scatter gain (degrees).
1378
1388
  :param ambient_temp_c: Ambient temperature in Celsius.
1389
+ :param thermal_time_constant_s: Pyroelectric element thermal time constant in seconds.
1390
+ :param pyro_responsivity: Pyroelectric responsivity scaling factor.
1391
+ :param noise_amplitude: Thermal/electronic noise amplitude.
1379
1392
  :param target_delta_t: Target temperature difference for threshold calibration in Celsius.
1380
1393
  :param target_distance: Target distance for threshold calibration in meters.
1381
1394
  :param target_emissivity: Target emissivity for threshold calibration.
1395
+ :param target_velocity_mps: Target velocity for threshold calibration in m/s.
1382
1396
  :param world_pose: Optional world pose.
1383
1397
  :param local_pose: Optional local pose.
1384
1398
  :return: The PIR sensor instance.
@@ -1390,7 +1404,6 @@ class Scene(SessionContainer):
1390
1404
  max_range=max_range,
1391
1405
  horiz_fov_deg=horiz_fov_deg,
1392
1406
  vert_fov_deg=vert_fov_deg,
1393
- num_elements=num_elements,
1394
1407
  rays_per_h=rays_per_h,
1395
1408
  rays_per_v=rays_per_v,
1396
1409
  gain=gain,
@@ -1401,10 +1414,18 @@ class Scene(SessionContainer):
1401
1414
  hold_time_s=hold_time_s,
1402
1415
  lens_transmission=lens_transmission,
1403
1416
  lens_segments_h=lens_segments_h,
1417
+ vertical_gain_falloff=vertical_gain_falloff,
1418
+ element_fov_overlap_deg=element_fov_overlap_deg,
1419
+ element_scatter_gain=element_scatter_gain,
1420
+ element_fov_transition_deg=element_fov_transition_deg,
1404
1421
  ambient_temp_c=ambient_temp_c,
1422
+ thermal_time_constant_s=thermal_time_constant_s,
1423
+ pyro_responsivity=pyro_responsivity,
1424
+ noise_amplitude=noise_amplitude,
1405
1425
  target_delta_t=target_delta_t,
1406
1426
  target_distance=target_distance,
1407
1427
  target_emissivity=target_emissivity,
1428
+ target_velocity_mps=target_velocity_mps,
1408
1429
  )
1409
1430
 
1410
1431
  return PirSensor.add(
@@ -81,7 +81,7 @@ class PirSensor(SessionContainer):
81
81
  """
82
82
  Get current detection status.
83
83
 
84
- :return: Detection status with is_detected, signal_strength, threshold, and element_power.
84
+ :return: Detection status with is_detected, signal_strength, threshold, element_flux, and element_signal.
85
85
  """
86
86
 
87
87
  status = self._session.query_sim_rpc(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: antioch-py
3
- Version: 2.0.4
3
+ Version: 2.0.6
4
4
  Summary: The Antioch Python SDK
5
5
  Author-email: Antioch Robotics <support@antioch.dev>
6
6
  License-Expression: MIT
@@ -12,4 +12,5 @@ class PirStatus(Message):
12
12
  is_detected: bool = Field(description="Whether motion is currently detected")
13
13
  signal_strength: float = Field(description="Current analog signal value after filtering")
14
14
  threshold: float = Field(description="Current detection threshold")
15
- element_power: list[float] = Field(default_factory=list, description="Power received on each sensing element")
15
+ element_flux: list[float] = Field(default_factory=list, description="Raw accumulated IR flux per element")
16
+ element_signal: list[float] = Field(default_factory=list, description="Pyroelectric voltage signal per element (proportional to dT/dt)")
@@ -12,28 +12,33 @@ class PirSensorConfig(Message):
12
12
  """
13
13
 
14
14
  # Core sensor parameters
15
- update_rate_hz: float = Field(default=10.0, description="Sensor update frequency in Hz")
15
+ update_rate_hz: float = Field(default=60.0, description="Sensor update frequency in Hz")
16
16
  max_range: float = Field(default=12.0, description="Maximum detection range in meters")
17
17
 
18
18
  # Field of view
19
19
  horiz_fov_deg: float = Field(default=90.0, description="Horizontal field of view in degrees")
20
20
  vert_fov_deg: float = Field(default=60.0, description="Vertical field of view in degrees")
21
21
 
22
- # Sensing elements
23
- num_elements: int = Field(default=2, description="Number of sensing elements (typically 2)")
24
- rays_per_h: int = Field(default=64, description="Number of rays in horizontal direction")
22
+ # Ray configuration
23
+ rays_per_h: int = Field(default=128, description="Number of rays in horizontal direction")
25
24
  rays_per_v: int = Field(default=16, description="Number of rays in vertical direction")
26
25
 
27
26
  # DSP / electronics parameters
28
27
  gain: float = Field(default=0.01, description="Amplifier gain")
29
28
  hp_corner_hz: float = Field(default=0.1, description="High-pass filter corner frequency in Hz")
30
- lp_corner_hz: float = Field(default=10.0, description="Low-pass filter corner frequency in Hz")
29
+ lp_corner_hz: float = Field(default=1.0, description="Low-pass filter corner frequency in Hz")
31
30
 
32
31
  hold_time_s: float = Field(default=2.0, description="Detection hold time in seconds")
33
32
 
34
33
  # Lens parameters
35
34
  lens_transmission: float = Field(default=0.9, description="Lens transmission coefficient (0-1)")
36
- lens_segments_h: int = Field(default=8, description="Number of horizontal lens segments for interleaved pattern")
35
+ lens_segments_h: int = Field(default=6, description="Number of horizontal lens segments (facets)")
36
+ vertical_gain_falloff: float = Field(default=0.5, description="Exponent for elevation-based gain reduction (0=uniform)")
37
+
38
+ # Element vignetting parameters (models window blocking effect)
39
+ element_fov_overlap_deg: float = Field(default=20.0, description="Half-angle of center region where both elements see well (degrees)")
40
+ element_scatter_gain: float = Field(default=0.1, description="Minimum gain for blocked element due to scatter/reflections (0-1)")
41
+ element_fov_transition_deg: float = Field(default=15.0, description="Width of soft transition from full gain to scatter gain (degrees)")
37
42
 
38
43
  # Environment parameters
39
44
  ambient_temp_c: float = Field(default=20.0, description="Ambient temperature in Celsius")
@@ -42,10 +47,16 @@ class PirSensorConfig(Message):
42
47
  threshold: float | None = Field(default=None, description="Detection threshold (auto-calibrated if None)")
43
48
  threshold_scale: float = Field(default=1.0, description="Scale factor applied to auto-calibrated threshold")
44
49
 
50
+ # Pyroelectric element parameters
51
+ thermal_time_constant_s: float = Field(default=0.2, description="Element thermal time constant in seconds")
52
+ pyro_responsivity: float = Field(default=1.0, description="Pyroelectric responsivity scaling factor")
53
+ noise_amplitude: float = Field(default=0.0, description="Thermal/electronic noise amplitude")
54
+
45
55
  # Auto-threshold calibration parameters
46
56
  target_delta_t: float = Field(default=10.0, description="Target temperature difference for threshold calibration in Celsius")
47
57
  target_distance: float = Field(default=5.0, description="Target distance for threshold calibration in meters")
48
58
  target_emissivity: float = Field(default=0.98, description="Target emissivity for threshold calibration")
59
+ target_velocity_mps: float = Field(default=1.0, description="Target velocity for threshold calibration in m/s")
49
60
 
50
61
 
51
62
  class GetPirSensor(Message):
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "antioch-py"
3
- version = "2.0.4"
3
+ version = "2.0.6"
4
4
  description = "The Antioch Python SDK"
5
5
  readme = "README.pypi.md"
6
6
  license = "MIT"
File without changes
File without changes
File without changes
File without changes
File without changes