antioch-py 2.0.7__py3-none-any.whl → 2.2.1__py3-none-any.whl

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 (58) hide show
  1. antioch/session/__init__.py +15 -13
  2. antioch/session/ark.py +22 -26
  3. antioch/session/objects/__init__.py +40 -0
  4. antioch/session/{views → objects}/animation.py +25 -52
  5. antioch/session/{views → objects}/articulation.py +30 -95
  6. antioch/session/{views → objects}/basis_curve.py +48 -54
  7. antioch/session/{views → objects}/camera.py +12 -39
  8. antioch/session/objects/collision.py +46 -0
  9. antioch/session/{views → objects}/geometry.py +6 -22
  10. antioch/session/{views → objects}/ground_plane.py +5 -20
  11. antioch/session/{views → objects}/imu.py +10 -30
  12. antioch/session/{views → objects}/joint.py +5 -20
  13. antioch/session/{views → objects}/light.py +14 -66
  14. antioch/session/{views → objects}/pir_sensor.py +20 -62
  15. antioch/session/objects/radar.py +62 -0
  16. antioch/session/{views → objects}/rigid_body.py +25 -110
  17. antioch/session/{views → objects}/xform.py +24 -24
  18. antioch/session/scene.py +116 -134
  19. antioch/session/session.py +34 -43
  20. antioch/session/task.py +2 -16
  21. {antioch_py-2.0.7.dist-info → antioch_py-2.2.1.dist-info}/METADATA +1 -1
  22. antioch_py-2.2.1.dist-info/RECORD +85 -0
  23. common/ark/ark.py +2 -0
  24. common/ark/hardware.py +1 -5
  25. common/ark/kinematics.py +1 -1
  26. common/constants.py +16 -2
  27. common/core/agent.py +28 -0
  28. common/core/auth.py +1 -3
  29. common/message/__init__.py +2 -0
  30. common/message/velocity.py +11 -0
  31. common/session/__init__.py +1 -24
  32. common/session/config.py +390 -0
  33. common/session/sim.py +36 -147
  34. antioch/session/views/__init__.py +0 -42
  35. antioch/session/views/collision.py +0 -75
  36. antioch/session/views/material.py +0 -54
  37. antioch/session/views/radar.py +0 -131
  38. antioch_py-2.0.7.dist-info/RECORD +0 -101
  39. common/session/views/__init__.py +0 -263
  40. common/session/views/animation.py +0 -73
  41. common/session/views/articulation.py +0 -184
  42. common/session/views/basis_curve.py +0 -102
  43. common/session/views/camera.py +0 -147
  44. common/session/views/collision.py +0 -59
  45. common/session/views/geometry.py +0 -102
  46. common/session/views/ground_plane.py +0 -41
  47. common/session/views/imu.py +0 -66
  48. common/session/views/joint.py +0 -81
  49. common/session/views/light.py +0 -96
  50. common/session/views/material.py +0 -25
  51. common/session/views/pir_sensor.py +0 -119
  52. common/session/views/radar.py +0 -107
  53. common/session/views/rigid_body.py +0 -236
  54. common/session/views/viewport.py +0 -21
  55. common/session/views/xform.py +0 -39
  56. {antioch_py-2.0.7.dist-info → antioch_py-2.2.1.dist-info}/WHEEL +0 -0
  57. {antioch_py-2.0.7.dist-info → antioch_py-2.2.1.dist-info}/entry_points.txt +0 -0
  58. {antioch_py-2.0.7.dist-info → antioch_py-2.2.1.dist-info}/top_level.txt +0 -0
@@ -1,41 +0,0 @@
1
- from pydantic import Field
2
-
3
- from common.message import Message, Vector3
4
-
5
-
6
- class GroundPlaneConfig(Message):
7
- """
8
- Configuration for creating a ground plane.
9
- """
10
-
11
- size: float = Field(default=5000.0, description="Size of the ground plane in meters")
12
- z_position: float = Field(default=0.0, description="Z position of the ground plane")
13
- color: Vector3 = Field(default=Vector3.new(0.5, 0.5, 0.5), description="RGB color (0-1)")
14
- static_friction: float = Field(default=0.5, description="Static friction coefficient")
15
- dynamic_friction: float = Field(default=0.5, description="Dynamic friction coefficient")
16
- restitution: float = Field(default=0.0, description="Restitution (bounciness)")
17
-
18
-
19
- class GetGroundPlane(Message):
20
- """
21
- Get an existing ground plane.
22
- """
23
-
24
- path: str | None = Field(default=None, description="USD path of the ground plane prim")
25
-
26
-
27
- class GetGroundPlaneResponse(Message):
28
- """
29
- Response from getting a ground plane.
30
- """
31
-
32
- path: str
33
-
34
-
35
- class AddGroundPlane(Message):
36
- """
37
- Add a ground plane.
38
- """
39
-
40
- path: str = Field(description="USD path for the ground plane")
41
- config: GroundPlaneConfig
@@ -1,66 +0,0 @@
1
- from pydantic import Field
2
-
3
- from common.message import Message, Pose
4
-
5
-
6
- class ImuConfig(Message):
7
- """
8
- Configuration for IMU sensor.
9
- """
10
-
11
- frequency: int | None = Field(default=None, description="Sensor update frequency in Hz (optional, defaults to physics rate)")
12
- linear_acceleration_filter_size: int = Field(default=10, description="Filter window size for linear acceleration")
13
- angular_velocity_filter_size: int = Field(default=10, description="Filter window size for angular velocity")
14
- orientation_filter_size: int = Field(default=10, description="Filter window size for orientation")
15
-
16
-
17
- class GetImu(Message):
18
- """
19
- Get an existing IMU sensor.
20
- """
21
-
22
- path: str | None = Field(default=None, description="USD path of the IMU prim")
23
-
24
-
25
- class GetImuResponse(Message):
26
- """
27
- Response from getting an IMU.
28
- """
29
-
30
- path: str
31
-
32
-
33
- class AddImu(Message):
34
- """
35
- Add an IMU sensor.
36
- """
37
-
38
- path: str = Field(description="USD path for the IMU")
39
- config: ImuConfig
40
- world_pose: Pose | None = Field(default=None, description="World pose (position and orientation)")
41
- local_pose: Pose | None = Field(default=None, description="Local pose (translation and orientation)")
42
-
43
-
44
- class GetImuSample(Message):
45
- """
46
- Get IMU sensor sample.
47
- """
48
-
49
- path: str
50
-
51
-
52
- class BufferImuRead(Message):
53
- """
54
- Request to buffer current IMU data at simulation time.
55
- """
56
-
57
- path: str
58
-
59
-
60
- class GetBufferedImuRead(Message):
61
- """
62
- Request to get buffered IMU data at or before simulation time.
63
- """
64
-
65
- path: str
66
- read_sim_time: float
@@ -1,81 +0,0 @@
1
- from enum import Enum
2
-
3
- from pydantic import Field
4
-
5
- from common.message import Message, Pose
6
-
7
-
8
- class JointType(str, Enum):
9
- """
10
- Types of joints supported by the simulator.
11
- """
12
-
13
- REVOLUTE = "revolute"
14
- PRISMATIC = "prismatic"
15
- FIXED = "fixed"
16
- SPHERICAL = "spherical"
17
- DISTANCE = "distance"
18
- GENERIC = "generic"
19
-
20
-
21
- class JointAxis(str, Enum):
22
- """
23
- Axis of motion for joints.
24
- """
25
-
26
- X = "x"
27
- Y = "y"
28
- Z = "z"
29
-
30
-
31
- class JointConfig(Message):
32
- """
33
- Configuration for a joint object that connects two bodies.
34
- """
35
-
36
- # Joint relationships
37
- parent_path: str = Field(description="USD path to parent body")
38
- child_path: str = Field(description="USD path to child body")
39
-
40
- # Transform
41
- pose: Pose = Field(default_factory=Pose.identity, description="Joint pose relative to parent")
42
-
43
- # Joint properties
44
- joint_type: JointType = Field(default=JointType.FIXED, description="Type of joint motion allowed")
45
- axis: JointAxis = Field(default=JointAxis.X, description="Axis of motion for non-fixed joints")
46
-
47
- # Motion limits (for revolute: degrees, for prismatic: meters)
48
- lower_limit: float | None = Field(default=None, description="Lower motion limit")
49
- upper_limit: float | None = Field(default=None, description="Upper motion limit")
50
-
51
- # Physics properties
52
- friction: float = Field(default=0.01, description="Joint friction (unitless)")
53
- armature: float = Field(default=0.1, description="Joint armature (kg for prismatic, kg-m^2 for revolute)")
54
-
55
- # Special properties
56
- exclude_from_articulation: bool = Field(default=False, description="Whether to exclude this joint from articulation")
57
-
58
-
59
- class GetJoint(Message):
60
- """
61
- Get an existing joint.
62
- """
63
-
64
- path: str | None = Field(default=None, description="USD path of the joint prim")
65
-
66
-
67
- class GetJointResponse(Message):
68
- """
69
- Response from getting a joint.
70
- """
71
-
72
- path: str
73
-
74
-
75
- class AddJoint(Message):
76
- """
77
- Add a joint connecting two bodies.
78
- """
79
-
80
- path: str = Field(description="USD path for the joint")
81
- config: JointConfig
@@ -1,96 +0,0 @@
1
- from enum import Enum
2
-
3
- from pydantic import Field
4
-
5
- from common.message import Message, Pose, Vector3
6
-
7
-
8
- class LightType(str, Enum):
9
- """
10
- Supported light types.
11
- """
12
-
13
- SPHERE = "sphere"
14
- RECT = "rect"
15
- DISK = "disk"
16
- CYLINDER = "cylinder"
17
- DISTANT = "distant"
18
- DOME = "dome"
19
-
20
-
21
- class LightConfig(Message):
22
- """
23
- Configuration for creating a light.
24
- """
25
-
26
- light_type: LightType = Field(default=LightType.SPHERE, description="Light type")
27
- intensity: float = Field(default=30000.0, description="Light intensity")
28
- exposure: float = Field(default=10.0, description="Light exposure")
29
- color: Vector3 = Field(default_factory=Vector3.ones, description="RGB color (0-1)")
30
- radius: float = Field(default=0.1, description="Radius for sphere lights (meters)")
31
- width: float | None = Field(default=None, description="Width for rect lights (meters)")
32
- height: float | None = Field(default=None, description="Height for rect/cylinder lights (meters)")
33
- length: float | None = Field(default=None, description="Length for cylinder lights (meters)")
34
- angle: float | None = Field(default=None, description="Angle for distant lights (degrees)")
35
- texture_file: str | None = Field(default=None, description="Texture file for dome lights")
36
-
37
-
38
- class GetLight(Message):
39
- """
40
- Get an existing light source.
41
- """
42
-
43
- path: str | None = Field(default=None, description="USD path of the light prim")
44
-
45
-
46
- class GetLightResponse(Message):
47
- """
48
- Response from getting a light.
49
- """
50
-
51
- path: str
52
-
53
-
54
- class AddLight(Message):
55
- """
56
- Add a light source.
57
- """
58
-
59
- path: str = Field(description="USD path for the light")
60
- config: LightConfig
61
- world_pose: Pose | None = Field(default=None, description="World pose (position and orientation)")
62
- local_pose: Pose | None = Field(default=None, description="Local pose (translation and orientation)")
63
-
64
-
65
- class SetLightIntensity(Message):
66
- """
67
- Set light intensity.
68
- """
69
-
70
- path: str
71
- intensity: float
72
-
73
-
74
- class SetLightColor(Message):
75
- """
76
- Set light color.
77
- """
78
-
79
- path: str
80
- color: Vector3
81
-
82
-
83
- class EnableLight(Message):
84
- """
85
- Enable light.
86
- """
87
-
88
- path: str
89
-
90
-
91
- class DisableLight(Message):
92
- """
93
- Disable light.
94
- """
95
-
96
- path: str
@@ -1,25 +0,0 @@
1
- from pydantic import Field
2
-
3
- from common.message import Message
4
-
5
-
6
- class SetNonVisualMaterial(Message):
7
- """
8
- Set non-visual material properties on all Material prims in a subtree.
9
-
10
- These properties define how objects appear to RTX sensors (LiDAR and Radar).
11
- Based on Isaac Sim's isaacsim.sensors.rtx.nonvisual_materials system.
12
- """
13
-
14
- path: str = Field(description="USD path of the root prim to configure")
15
- base: str = Field(description="Base material type (e.g. 'aluminum', 'skin', 'plastic')")
16
- coating: str = Field(default="none", description="Coating type (e.g. 'none', 'paint', 'clearcoat')")
17
- attribute: str = Field(default="none", description="Material attribute (e.g. 'none', 'emissive', 'retroreflective')")
18
-
19
-
20
- class SetNonVisualMaterialResponse(Message):
21
- """
22
- Response from setting non-visual material.
23
- """
24
-
25
- materials_modified: int = Field(description="Number of Material prims modified")
@@ -1,119 +0,0 @@
1
- from pydantic import Field
2
-
3
- from common.message import Message, Pose
4
-
5
-
6
- class PirSensorConfig(Message):
7
- """
8
- Configuration for PIR (Passive Infrared) motion sensor.
9
-
10
- PIR sensors detect infrared radiation changes caused by moving warm objects.
11
- The sensor uses a dual-element design with interleaved zones for motion detection.
12
- """
13
-
14
- # Core sensor parameters
15
- update_rate_hz: float = Field(default=60.0, description="Sensor update frequency in Hz")
16
- max_range: float = Field(default=20.0, description="Maximum detection range in meters")
17
-
18
- # FOV configuration
19
- total_horiz_fov_deg: float = Field(default=150.0, description="Total horizontal coverage. Enables automatic fanning.")
20
- sensor_side_fov_deg: float = Field(default=45.0, description="Horizontal FOV for side sensors")
21
- sensor_center_fov_deg: float = Field(default=45.0, description="Horizontal FOV for center sensor")
22
-
23
- # Ray configuration
24
- sensor_rays_horiz: int = Field(default=128, description="Number of rays per sensor in horizontal direction")
25
- sensor_rays_vert: int = Field(default=16, description="Number of rays per sensor in vertical direction")
26
-
27
- # Sensor vertical angle range
28
- min_vertical_angle_center: float = Field(default=-30.0, description="Minimum vertical angle for center sensor in degrees")
29
- max_vertical_angle_center: float = Field(default=30.0, description="Maximum vertical angle for center sensor in degrees")
30
- min_vertical_angle_side: float = Field(default=-30.0, description="Minimum vertical angle for side sensors in degrees")
31
- max_vertical_angle_side: float = Field(default=30.0, description="Maximum vertical angle for side sensors in degrees")
32
-
33
- # DSP / electronics parameters
34
- gain_center: float = Field(default=0.015, description="Amplifier gain for center sensor")
35
- gain_sides: float = Field(default=0.01, description="Amplifier gain for side sensors")
36
- hp_corner_hz: float = Field(default=0.4, description="High-pass filter corner frequency in Hz")
37
- lp_corner_hz: float = Field(default=10.0, description="Low-pass filter corner frequency in Hz")
38
- blind_time_s: float = Field(default=0.5, description="Blind time after detection in seconds")
39
- pulse_counter: int = Field(default=2, description="Number of pulses required to trigger detection (1-4)")
40
- window_time_s: float = Field(default=2.0, description="Window time for pulse counting in seconds")
41
- count_mode: int = Field(default=0, description="Pulse counting mode (0: sign change required, 1: any crossing)")
42
-
43
- # Lens parameters
44
- lens_transmission: float = Field(default=0.9, description="Lens transmission coefficient (0-1)")
45
- lens_segments_h: int = Field(default=6, description="Number of horizontal lens segments (facets)")
46
-
47
- # Environment parameters
48
- ambient_temp_c: float = Field(default=20.0, description="Ambient temperature in Celsius")
49
-
50
- # Hard-coded theshold (if not none) overrides auto-calibration
51
- threshold: float | None = Field(default=None, description="Detection threshold (auto-calibrated if None)")
52
- threshold_scale: float = Field(default=1.0, description="Scale factor applied to auto-calibrated threshold")
53
-
54
- # Pyroelectric element parameters
55
- thermal_time_constant_s: float = Field(default=0.2, description="Element thermal time constant in seconds")
56
- pyro_responsivity: float = Field(default=4000.0, description="Pyroelectric responsivity scaling factor")
57
- noise_amplitude: float = Field(default=20e-6, description="Thermal/electronic noise amplitude")
58
-
59
- # Auto-threshold calibration parameters
60
- target_delta_t: float = Field(default=10.0, description="Target temperature difference for threshold calibration in Celsius")
61
- target_distance: float = Field(default=5.0, description="Target distance for threshold calibration in meters")
62
- target_emissivity: float = Field(default=0.98, description="Target emissivity for threshold calibration")
63
- target_velocity_mps: float = Field(default=1.0, description="Target velocity for threshold calibration in m/s")
64
-
65
-
66
- class GetPirSensor(Message):
67
- """
68
- Get an existing PIR sensor.
69
- """
70
-
71
- path: str | None = Field(default=None, description="USD path of the PIR sensor prim")
72
-
73
-
74
- class GetPirSensorResponse(Message):
75
- """
76
- Response from getting a PIR sensor.
77
- """
78
-
79
- path: str
80
-
81
-
82
- class AddPirSensor(Message):
83
- """
84
- Add a PIR sensor.
85
- """
86
-
87
- path: str = Field(description="USD path for the PIR sensor")
88
- config: PirSensorConfig = Field(default_factory=PirSensorConfig)
89
- world_pose: Pose | None = Field(default=None, description="World pose (position and orientation)")
90
- local_pose: Pose | None = Field(default=None, description="Local pose (translation and orientation)")
91
-
92
-
93
- class GetPirDetectionStatus(Message):
94
- """
95
- Get PIR sensor detection status.
96
- """
97
-
98
- path: str
99
-
100
-
101
- class SetPirDebugMode(Message):
102
- """
103
- Enable or disable debug visualization for a PIR sensor.
104
- """
105
-
106
- path: str
107
- enabled: bool = Field(description="Whether to enable debug ray visualization")
108
-
109
-
110
- class SetPirMaterial(Message):
111
- """
112
- Set PIR-specific thermal properties on a prim.
113
-
114
- These properties define how the prim appears to PIR sensors.
115
- """
116
-
117
- path: str = Field(description="USD path of the prim to configure")
118
- emissivity: float = Field(default=0.9, description="Material emissivity (0-1)")
119
- temperature_c: float | None = Field(default=None, description="Surface temperature in Celsius")
@@ -1,107 +0,0 @@
1
- from pydantic import Field
2
-
3
- from common.message import Message, Pose
4
-
5
-
6
- class RadarConfig(Message):
7
- """
8
- Configuration for RTX radar sensor.
9
-
10
- All parameters can be customized with sensible defaults provided.
11
- """
12
-
13
- # Core sensor parameters
14
- frequency: int = Field(default=10, description="Sensor update frequency in Hz")
15
-
16
- # Field of view (degrees from center, so total FOV is 2x these values)
17
- max_azimuth: float = Field(default=66.0, description="Maximum azimuth angle in degrees (±FOV from center)")
18
- max_elevation: float = Field(default=20.0, description="Maximum elevation angle in degrees (±FOV from center)")
19
-
20
- # Range parameters
21
- max_range: float = Field(default=200.0, description="Maximum detection range in meters")
22
- range_resolution: float = Field(default=0.4, description="Range resolution in meters")
23
-
24
- # Angular resolution at boresight (center of FOV)
25
- azimuth_resolution: float = Field(default=1.3, description="Azimuth resolution at boresight in degrees")
26
- elevation_resolution: float = Field(default=5.0, description="Elevation resolution at boresight in degrees")
27
-
28
- # Noise parameters (standard deviation for Gaussian noise)
29
- azimuth_noise: float = Field(default=0.0, description="Azimuth measurement noise standard deviation in radians")
30
- range_noise: float = Field(default=0.0, description="Range measurement noise standard deviation in meters")
31
-
32
-
33
- class GetRadar(Message):
34
- """
35
- Get an existing radar sensor.
36
- """
37
-
38
- path: str | None = Field(default=None, description="USD path of the radar prim")
39
-
40
-
41
- class GetRadarResponse(Message):
42
- """
43
- Response from getting a radar.
44
- """
45
-
46
- path: str
47
-
48
-
49
- class AddRadar(Message):
50
- """
51
- Add a radar sensor.
52
- """
53
-
54
- path: str = Field(description="USD path for the radar")
55
- config: RadarConfig
56
- world_pose: Pose | None = Field(default=None, description="World pose (position and orientation)")
57
- local_pose: Pose | None = Field(default=None, description="Local pose (translation and orientation)")
58
-
59
-
60
- class GetRadarScan(Message):
61
- """
62
- Get radar scan data.
63
- """
64
-
65
- path: str
66
-
67
-
68
- class SetRadarDebugMode(Message):
69
- """
70
- Enable or disable debug visualization for a radar sensor.
71
- """
72
-
73
- path: str
74
- enabled: bool = Field(description="Whether to enable debug visualization")
75
-
76
-
77
- class BufferRadarRead(Message):
78
- """
79
- Request to buffer current radar scan at simulation time.
80
- """
81
-
82
- path: str
83
-
84
-
85
- class GetBufferedRadarRead(Message):
86
- """
87
- Request to get buffered radar scan at or before simulation time.
88
- """
89
-
90
- path: str
91
- read_sim_time: float
92
-
93
-
94
- class SetRadarMaterial(Message):
95
- """
96
- Set radar-specific material properties on a prim and all materials in its subtree.
97
-
98
- These properties define how the prim appears to radar sensors.
99
- Based on RTX Sensor Non-Visual Materials system.
100
- """
101
-
102
- path: str = Field(description="USD path of the prim to configure")
103
- reflectivity: float | None = Field(default=None, description="Radar reflectivity (0-1)")
104
- metallic: float | None = Field(default=None, description="Metallic property (0-1)")
105
- roughness: float | None = Field(default=None, description="Surface roughness (0-1)")
106
- backscattering: float | None = Field(default=None, description="Backscattering coefficient")
107
- cross_section: float | None = Field(default=None, description="Radar cross section in dBsm")