lookout-config 1.22.0__py3-none-any.whl → 1.24.0__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.
@@ -2,19 +2,319 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import List, Optional
5
+ from enum import Enum
6
+ from typing import Any, List, Optional
6
7
 
7
8
  from pydantic import BaseModel, Field
8
9
 
9
10
 
10
- class BowStbd(BaseModel):
11
+ class WebBridgeParameters(BaseModel):
12
+ address: Optional[str] = Field(
13
+ None, description="The host address to bind the WebSocket server to"
14
+ )
15
+ asset_uri_allowlist: Optional[List[str]] = Field(
16
+ None,
17
+ description="List of regular expressions (ECMAScript) of whitelisted parameter names.",
18
+ )
19
+ best_effort_qos_send_buffer_limit: Optional[int] = Field(
20
+ None,
21
+ description="Connection send buffer limit in bytes for 'best_effort' messages",
22
+ )
23
+ best_effort_qos_topic_whitelist: Optional[List[str]] = Field(
24
+ None,
25
+ description="List of regular expressions (ECMAScript) for topics that should be forced to use 'best_effort' QoS. Unmatched topics will use 'reliable' QoS if ALL publishers are 'reliable', 'best_effort' if any publishers are 'best_effort'.",
26
+ )
27
+ capabilities: Optional[List[str]] = Field(None, description="Server capabilities")
28
+ certfile: Optional[str] = Field(None, description="Path to the certificate to use for TLS")
29
+ client_topic_whitelist: Optional[List[str]] = Field(
30
+ None,
31
+ description="List of regular expressions (ECMAScript) of whitelisted parameter names.",
32
+ )
33
+ disable_load_message: Optional[bool] = Field(
34
+ None,
35
+ description="Do not publish as loaned message when publishing a client message",
36
+ )
37
+ include_hidden: Optional[bool] = Field(None, description="Include hidden topics and services")
38
+ keyfile: Optional[str] = Field(None, description="Path to the private key to use for TLS")
39
+ max_qos_depth: Optional[int] = Field(
40
+ None, description="Maximum depth used for the QoS profile of subscriptions."
41
+ )
42
+ min_qos_depth: Optional[int] = Field(
43
+ None, description="Minimum depth used for the QoS profile of subscriptions."
44
+ )
45
+ param_whitelist: Optional[List[str]] = Field(
46
+ None,
47
+ description="List of regular expressions (ECMAScript) of whitelisted parameter names.",
48
+ )
49
+ port: Optional[int] = Field(None, description="The TCP port to bind the WebSocket server to")
50
+ send_buffer_limit: Optional[int] = Field(
51
+ None,
52
+ description="Connection send buffer limit in bytes. Messages will be dropped when a connection's send buffer reaches this limit to avoid a queue of outdated messages building up.",
53
+ )
54
+ service_whitelist: Optional[List[str]] = Field(
55
+ None,
56
+ description="List of regular expressions (ECMAScript) of whitelisted service names.",
57
+ )
58
+ tls: Optional[bool] = Field(
59
+ None, description="Use Transport Layer Security for encrypted communication"
60
+ )
61
+ topic_whitelist: Optional[List[str]] = Field(
62
+ None,
63
+ description="List of regular expressions (ECMAScript) of whitelisted topic names.",
64
+ )
65
+ use_compression: Optional[bool] = Field(
66
+ None,
67
+ description="Use websocket compression (permessage-deflate). Suited for connections with smaller bandwidth, at the cost of additional CPU load.",
68
+ )
69
+
70
+
71
+ class Track(BaseModel):
72
+ stale_timeout: Optional[float] = Field(
73
+ None,
74
+ description="Time in seconds before a track is considered stale and removed",
75
+ )
76
+ spawn_radius: Optional[float] = Field(
77
+ None, description="Radius in meters around the vessel to spawn tracks"
78
+ )
79
+ sources_enabled: Optional[List[str]] = Field(
80
+ None, description="The sources of tracks that will spawn vessels in MIS-SIM"
81
+ )
82
+
83
+
84
+ class OceanDrift(BaseModel):
85
+ speed: Optional[float] = Field(None, description="in m/s")
86
+ direction: Optional[float] = Field(None, description="degrees clockwise from north")
87
+ period: Optional[float] = Field(None, description="in seconds")
88
+ period_amplitude: Optional[float] = Field(None, description="in m/s")
89
+
90
+
91
+ class VesselManagerParameters(BaseModel):
92
+ enabled: Optional[bool] = Field(
93
+ None, description="Whether to enable the vessel manager or not"
94
+ )
95
+ vessels: Optional[str] = Field(None, description="List of vessels")
96
+ hifi_mode: Optional[bool] = Field(
97
+ None, description="Should we use the low-fidelity topic suffix"
98
+ )
99
+ objects_publish_rate: Optional[float] = Field(
100
+ None, description="Rate at which to publish objects in Hz"
101
+ )
102
+ track: Optional[Track] = None
103
+ ocean_drift: Optional[OceanDrift] = None
104
+
105
+
106
+ class DiagnosticUpdater(BaseModel):
107
+ period: Optional[float] = Field(None, description="")
108
+ use_fqn: Optional[bool] = Field(None, description="")
109
+
110
+
111
+ class Storage(BaseModel):
112
+ directory: Optional[str] = Field(None, description="Directory containing recording bag files.")
113
+
114
+
115
+ class UploadQueue(BaseModel):
116
+ size: Optional[int] = Field(None, description="Max number of items in the upload queue.")
117
+
118
+
119
+ class Config(BaseModel):
120
+ access_key_id: Optional[str] = Field(None, description="AWS access key ID")
121
+ secret_access_key: Optional[str] = Field(None, description="AWS secret access key")
122
+ region: Optional[str] = Field(None, description="AWS region")
123
+ endpoint: Optional[str] = Field(None, description="AWS S3 endpoint URL")
124
+
125
+
126
+ class AwsS3(BaseModel):
127
+ config: Optional[Config] = Field(
128
+ None,
129
+ description="JSON schema used to configure and authenticate the remote destination.",
130
+ )
131
+
132
+
133
+ class Config1(BaseModel):
134
+ sas_url: Optional[str] = Field(None, description="Access URL including SAS token")
135
+
136
+
137
+ class AzureBlob(BaseModel):
138
+ config: Optional[Config1] = Field(
139
+ None,
140
+ description="JSON schema used to configure and authenticate the remote destination.",
141
+ )
142
+
143
+
144
+ class Config2(BaseModel):
145
+ account: Optional[str] = Field(None, description="OneDrive account name")
146
+ client_id: Optional[str] = Field(None, description="Client ID for OneDrive")
147
+ client_secret: Optional[str] = Field(None, description="Client secret for OneDrive")
148
+ tenant: Optional[str] = Field(None, description="Tenant ID for OneDrive")
149
+
150
+
151
+ class MicrosoftOnedrive(BaseModel):
152
+ config: Optional[Config2] = Field(
153
+ None,
154
+ description="JSON schema used to configure and authenticate the remote destination.",
155
+ )
156
+
157
+
158
+ class Config3(BaseModel):
159
+ host: Optional[str] = Field(None, description="SFTP host")
160
+ user: Optional[str] = Field(None, description="Host username")
161
+ pass_: Optional[str] = Field(None, alias="pass", description="Host password")
162
+
163
+
164
+ class Sftp(BaseModel):
165
+ config: Optional[Config3] = Field(
166
+ None,
167
+ description="JSON schema used to configure and authenticate the remote destination.",
168
+ )
169
+
170
+
171
+ class UploadDestination(BaseModel):
172
+ name: Optional[str] = Field(None, description="Identifying name of the upload destination.")
173
+ type: Optional[Any] = Field(None, description="Type of upload destination")
174
+ upload_path: Optional[str] = Field(
175
+ None, description="Path at the destination to upload files to."
176
+ )
177
+ aws_s3: Optional[AwsS3] = None
178
+ azure_blob: Optional[AzureBlob] = None
179
+ microsoft_onedrive: Optional[MicrosoftOnedrive] = None
180
+ sftp: Optional[Sftp] = None
181
+
182
+
183
+ class DataHubParameters(BaseModel):
184
+ port: Optional[int] = Field(None, description="Port for the HTTP server.")
185
+ storage: Optional[Storage] = None
186
+ upload_queue: Optional[UploadQueue] = None
187
+ upload_destination: Optional[UploadDestination] = None
188
+ diagnostic_updater: Optional[DiagnosticUpdater] = None
189
+
190
+
191
+ class Buffer(BaseModel):
192
+ enabled: Optional[bool] = Field(
193
+ None,
194
+ description="Enables a recording buffer to capture historical data prior to recording requests.",
195
+ )
196
+ size: Optional[int] = Field(None, description="Size (in bytes) of the recording buffer.")
197
+
198
+
199
+ class ResourceMonitor(BaseModel):
200
+ warning_threshold: Optional[float] = Field(
201
+ None, description="Storage usage threshold which triggers warning."
202
+ )
203
+ critical_threshold: Optional[float] = Field(
204
+ None, description="Storage usage threshold which triggers error."
205
+ )
206
+
207
+
208
+ class StateTimer(BaseModel):
209
+ publish_period: Optional[int] = Field(
210
+ None, description="Period (ms) to publish recording state updates."
211
+ )
212
+
213
+
214
+ class Storage1(BaseModel):
215
+ directory: Optional[str] = Field(None, description="Directory where recordings will be saved.")
216
+ plugin_name: Optional[Any] = Field(None, description="Storage plugin to use.")
217
+ plugin_profile: Optional[Any] = Field(
218
+ None,
219
+ description="Storage plugin preset profile to use to determine write speed and compression ratio. Only used for mcap storage plugin.",
220
+ )
221
+
222
+
223
+ class Topics(BaseModel):
224
+ exclude_regexs: Optional[List[str]] = Field(
225
+ None,
226
+ description="An array of regex patterns to use for topic EXCLUSION from the recording.",
227
+ )
228
+ include_regexs: Optional[List[str]] = Field(
229
+ None,
230
+ description="An array of regex patterns to use for topic INCLUSION in the recording.",
231
+ )
232
+
233
+
234
+ class TriggerTopic(BaseModel):
235
+ enabled: Optional[bool] = Field(
236
+ None,
237
+ description="Enables a trigger topic that can be used to start/stop recordings (example_interfaces/Bool).",
238
+ )
239
+
240
+
241
+ class DataRecorderParameters(BaseModel):
242
+ buffer: Optional[Buffer] = None
243
+ diagnostic_updater: Optional[DiagnosticUpdater] = None
244
+ resource_monitor: Optional[ResourceMonitor] = None
245
+ state_timer: Optional[StateTimer] = None
246
+ storage: Optional[Storage1] = None
247
+ topics: Optional[Topics] = None
248
+ trigger_topic: Optional[TriggerTopic] = None
249
+
250
+
251
+ class StateTimer1(BaseModel):
252
+ publish_period: Optional[int] = Field(
253
+ None, description="Period (ms) to publish playback state updates."
254
+ )
255
+
256
+
257
+ class Storage2(BaseModel):
258
+ directory: Optional[str] = Field(None, description="Directory to play recordings from.")
259
+ plugin_name: Optional[Any] = Field(None, description="Storage plugin to use.")
260
+
261
+
262
+ class DataPlayerParameters(BaseModel):
263
+ diagnostic_updater: Optional[DiagnosticUpdater] = None
264
+ state_timer: Optional[StateTimer1] = None
265
+ storage: Optional[Storage2] = None
266
+
267
+
268
+ class SimulatedClockParameters(BaseModel):
269
+ enabled: Optional[bool] = Field(
270
+ None, description="Whether to enable the simulated clock or not"
271
+ )
272
+ sim_speed: Optional[float] = Field(None, description="Speed at which to run the simulation")
273
+ publish_rate: Optional[float] = Field(
274
+ None, description="Rate at which to publish the clock at?"
275
+ )
276
+
277
+
278
+ class HifiVesselManagerParameters(BaseModel):
279
+ replay_mode: Optional[bool] = Field(None, description="Is the node in replay mode?")
280
+
281
+
282
+ class ScenarioRunnerParameters(BaseModel):
283
+ scenarios: Optional[List[str]] = Field(None, description="List of scenarios")
284
+
285
+
286
+ class NodeConfigurationModel(BaseModel):
287
+ node_name_regex: str = Field(..., title="Node Name Regex")
288
+ parameter_name_regexes: List[str] = Field(..., title="Parameter Name Regexes")
289
+
290
+
291
+ class ParameterPersistenceParameters(BaseModel):
292
+ params_path: Optional[str] = Field(
293
+ None, description="Path to the file where the parameters are stored"
294
+ )
295
+ file_header: Optional[str] = Field(
296
+ None, description="A message to add to the top of the params file"
297
+ )
298
+ path_within_file: Optional[str] = Field(
299
+ None, description="Path within the file to store the parameters"
300
+ )
301
+ persistent_parameters: Optional[List[NodeConfigurationModel]] = Field(
302
+ None, description="Regex describing which parameters should persist"
303
+ )
304
+ ignore_namespace: Optional[str] = Field(
305
+ None,
306
+ description="Which (if any) part of the node namespace to ignore. Treated as regex.",
307
+ )
308
+
309
+
310
+ class Bow(BaseModel):
11
311
  contains: Optional[List[str]] = Field(None, description="")
12
312
  path: Optional[str] = Field(None, description="")
13
313
  type: Optional[str] = Field(None, description="")
14
314
 
15
315
 
16
316
  class Analyzers(BaseModel):
17
- bow_stbd: Optional[BowStbd] = None
317
+ bow: Optional[Bow] = None
18
318
 
19
319
 
20
320
  class Cameras(BaseModel):
@@ -23,13 +323,7 @@ class Cameras(BaseModel):
23
323
  type: Optional[str] = Field(None, description="")
24
324
 
25
325
 
26
- class ObjectAlerts(BaseModel):
27
- find_and_remove_prefix: Optional[List[str]] = Field(None, description="")
28
- path: Optional[str] = Field(None, description="")
29
- type: Optional[str] = Field(None, description="")
30
-
31
-
32
- class ObjectTracker(BaseModel):
326
+ class Recorder(BaseModel):
33
327
  find_and_remove_prefix: Optional[List[str]] = Field(None, description="")
34
328
  path: Optional[str] = Field(None, description="")
35
329
  type: Optional[str] = Field(None, description="")
@@ -66,31 +360,28 @@ class VesselComputer(BaseModel):
66
360
 
67
361
  class DiagnosticAggregatorParameters(BaseModel):
68
362
  cameras: Optional[Cameras] = None
69
- object_alerts: Optional[ObjectAlerts] = None
70
- object_tracker: Optional[ObjectTracker] = None
71
363
  path: Optional[str] = Field(None, description="")
72
364
  publish_values: Optional[bool] = Field(None, description="")
365
+ recorder: Optional[Recorder] = None
73
366
  roi_detector: Optional[RoiDetector] = None
74
367
  roi_tracker: Optional[RoiTracker] = None
75
368
  vessel_computer: Optional[VesselComputer] = None
76
369
 
77
370
 
78
- class DiagnosticUpdater(BaseModel):
79
- period: Optional[float] = Field(None, description="")
80
- use_fqn: Optional[bool] = Field(None, description="")
81
-
82
-
83
371
  class RoiTrackerParameters(BaseModel):
84
372
  detection_threshold: Optional[float] = Field(
85
373
  None, description="Detections above this threshold will be tracked"
86
374
  )
87
375
  iou_threshold: Optional[float] = Field(
88
- None,
89
- description="IoU threshold for association of dets with propagated track boxes",
376
+ None, description="Iou association threshold for dets to tracks"
90
377
  )
378
+ secondary_assoc_threshold: Optional[float] = Field(
379
+ None, description="Secondary association threshold for dets to tracks"
380
+ )
381
+ secondary_assoc_method: Optional[str] = Field(None, description="Secondary association method")
91
382
  max_age: Optional[int] = Field(
92
383
  None,
93
- description="The maximum number of consecutive misses before the track state is deleted",
384
+ description="Maximum number of consecutive misses before the track is deleted",
94
385
  )
95
386
  min_hits: Optional[int] = Field(None, description="Min number of detections to create track")
96
387
  classification_history_window: Optional[int] = Field(
@@ -101,24 +392,14 @@ class RoiTrackerParameters(BaseModel):
101
392
  None, description="Reset the tracker if an old timestamp is received"
102
393
  )
103
394
  roi_topics: Optional[List[str]] = Field(
104
- None, description="List of topics to subscribe to for ROIs"
395
+ None, description="REQUIRES RESTART. List of topics to subscribe to for ROIs"
105
396
  )
106
397
  roi_track_topics: Optional[List[str]] = Field(
107
- None, description="List of topics to publish tracked ROIs"
398
+ None, description="REQUIRES RESTART. List of topics to publish tracked ROIs"
108
399
  )
109
400
  diagnostic_updater: Optional[DiagnosticUpdater] = None
110
401
 
111
402
 
112
- class DataRecorderParameters(BaseModel):
113
- bag_directory: Optional[str] = Field(None, description="")
114
- diagnostic_updater: Optional[DiagnosticUpdater] = None
115
- storage_id: Optional[str] = Field(None, description="")
116
- storage_preset_profile: Optional[str] = Field(None, description="")
117
- topic_exclude_regexs: Optional[List[str]] = Field(None, description="")
118
- topic_include_regexs: Optional[List[str]] = Field(None, description="")
119
- trigger_topic_active: Optional[bool] = Field(None, description="")
120
-
121
-
122
403
  class CoreUsageAverageERROR(BaseModel):
123
404
  max: Optional[float] = Field(None, description="")
124
405
  min: Optional[float] = Field(None, description="")
@@ -172,7 +453,7 @@ class RAM(BaseModel):
172
453
  Usage_Percent_WARN: Optional[UsagePercentWARN] = Field(None, alias="Usage Percent WARN")
173
454
 
174
455
 
175
- class DiagnosticUpdater2(BaseModel):
456
+ class DiagnosticUpdater4(BaseModel):
176
457
  CPU: Optional[CPU] = None
177
458
  Disk: Optional[Disk] = None
178
459
  RAM: Optional[RAM] = None
@@ -182,7 +463,7 @@ class DiagnosticUpdater2(BaseModel):
182
463
 
183
464
  class SystemResourceMonitorParameters(BaseModel):
184
465
  calculation_rate: Optional[float] = Field(None, description="")
185
- diagnostic_updater: Optional[DiagnosticUpdater2] = None
466
+ diagnostic_updater: Optional[DiagnosticUpdater4] = None
186
467
  diagnostics: Optional[bool] = Field(None, description="")
187
468
  diagnostics_log: Optional[bool] = Field(None, description="")
188
469
  disk_directories: Optional[List[str]] = Field(None, description="")
@@ -206,238 +487,8 @@ class GeolocationParameters(BaseModel):
206
487
  )
207
488
 
208
489
 
209
- class NodeConfigurationModel(BaseModel):
210
- node_name_regex: str = Field(..., title="Node Name Regex")
211
- parameter_name_regexes: List[str] = Field(..., title="Parameter Name Regexes")
212
- dedicated_file_path: Optional[str] = Field("", title="Dedicated File Path")
213
-
214
-
215
- class ParameterPersistenceParameters(BaseModel):
216
- params_path: Optional[str] = Field(
217
- None, description="Path to the file where the parameters are stored"
218
- )
219
- file_header: Optional[str] = Field(
220
- None, description="A message to add to the top of the params file"
221
- )
222
- path_within_file: Optional[str] = Field(
223
- None, description="Path within the file to store the parameters"
224
- )
225
- persistent_parameters: Optional[List[NodeConfigurationModel]] = Field(
226
- None, description="Regex describing which parameters should persist"
227
- )
228
- ignore_namespace: Optional[str] = Field(
229
- None,
230
- description="Which (if any) part of the node namespace to ignore. Treated as regex.",
231
- )
232
-
233
-
234
- class DiagnosticUpdater3(BaseModel):
235
- period: Optional[float] = Field(None, description="")
236
- use_fqn: Optional[bool] = Field(None, description="")
237
-
238
-
239
- class DetectorOnnxParameters(BaseModel):
240
- enabled: Optional[bool] = Field(None, description="Should the detector be enabled")
241
- use_nms: Optional[bool] = Field(None, description="Use NMS to suppress overlapping boxes")
242
- rate: Optional[float] = Field(
243
- None, description="REQUIRES RESTART. Batch inference callback rate"
244
- )
245
- image_buffer_size: Optional[int] = Field(
246
- None, description="Number of images to store in buffer for batch inference"
247
- )
248
- onnx_batch_size: Optional[int] = Field(
249
- None, description="Only for .onnx models. Batch size for inference"
250
- )
251
- threshold: Optional[float] = Field(
252
- None, description="Only publish rois above this objectness threshold"
253
- )
254
- nms_iou_threshold: Optional[float] = Field(
255
- None,
256
- description="Keeps the highest-scoring ROI where overlaps (IoU >= threshold) occur. Threshold=1 allows all overlaps; 0 suppresses any overlap. Used when use_nms=True",
257
- )
258
- model_path: Optional[str] = Field(None, description="Path to the onnx or trt engine model")
259
- best_effort: Optional[bool] = Field(
260
- None, description="REQUIRES RESTART. Enable BEST_EFFORT reliability for frame subscriber"
261
- )
262
- ignore_regions: Optional[str] = Field(
263
- None, description="REQUIRES RESTART. Region of image for detector to ignore"
264
- )
265
- camera_frame_topics: Optional[List[str]] = Field(
266
- None, description="REQUIRES RESTART. Topics to subscribe to for camera frames"
267
- )
268
- roi_topics: Optional[List[str]] = Field(
269
- None, description="REQUIRES RESTART. Topics to publish ROIs to"
270
- )
271
- class_names: Optional[List[str]] = Field(
272
- None,
273
- description="REQUIRES RESTART. Only needed if using TensorRT. Class names to be listed in the order they were trained on",
274
- )
275
- diagnostic_updater: Optional[DiagnosticUpdater3] = None
276
-
277
-
278
- class VesselOffsetsParameters(BaseModel):
279
- frame_prefix: Optional[str] = Field(None, description="")
280
- ignore_timestamp: Optional[bool] = Field(None, description="")
281
- publish_frequency: Optional[float] = Field(None, description="")
282
- robot_description: Optional[str] = Field(None, description="")
283
-
284
-
285
- class Ais(BaseModel):
286
- heading_format: Optional[str] = Field(
287
- None, description="Heading format for AIS messages. 'radians' or 'degrees'"
288
- )
289
-
290
-
291
- class ObjectTrackerParameters(BaseModel):
292
- ownship_name: Optional[str] = Field(None, description="")
293
- ownship_mmsi: Optional[str] = Field(None, description="The MMSI of the ego vessel to ignore")
294
- sources_fused: Optional[List[str]] = Field(None, description="")
295
- sources_enabled: Optional[List[str]] = Field(None, description="")
296
- required_times_seen_arpa: Optional[int] = Field(None, description="")
297
- sources_back_projected: Optional[List[str]] = Field(
298
- None, description="Project various sensor sources e.g. ais, arpa into the image"
299
- )
300
- use_geopose: Optional[bool] = Field(None, description="")
301
- use_geopose_altitude: Optional[bool] = Field(None, description="")
302
- max_time_diff: Optional[float] = Field(None, description="")
303
- frame_id_base_link: Optional[str] = Field(None, description="")
304
- horizon_padding: Optional[int] = Field(None, description="")
305
- bearing_angle_tolerance: Optional[float] = Field(
306
- None,
307
- description="The maximum difference in bearing (degrees) between the object and the track for the object to be associated with the track.",
308
- )
309
- range_angle_tolerance: Optional[float] = Field(
310
- None,
311
- description="The maximum difference in range (m) between the object and the track for the object to be associated with the track.",
312
- )
313
- range_sensor_height: Optional[float] = Field(
314
- None, description="The height of the range sensor (m)"
315
- )
316
- max_age_til_stale_rois: Optional[float] = Field(None, description="Age til stale (seconds)")
317
- max_age_til_stale_arpa: Optional[float] = Field(None, description="Age til stale (seconds)")
318
- max_age_til_stale_ais: Optional[float] = Field(None, description="Age til stale (seconds)")
319
- max_age_til_stale_objects: Optional[float] = Field(None, description="Age til stale (seconds)")
320
- roi_pf_sensitivity: Optional[float] = Field(None, description="Particle filter sensitivity")
321
- roi_pf_dist_percentile: Optional[int] = Field(
322
- None,
323
- description="Particle filter distance percentile (to mean) for confident particles",
324
- )
325
- roi_pf_min_measurements: Optional[int] = Field(
326
- None, description="Particle filter min number of measurements"
327
- )
328
- roi_pf_polygon_max_history: Optional[int] = Field(
329
- None, description="Particle filter polygon max history"
330
- )
331
- roi_pf_polygon_max_update_hz: Optional[int] = Field(
332
- None, description="Particle filter polygon max update hz"
333
- )
334
- roi_pf_measurement_pixel_error: Optional[float] = Field(
335
- None, description="Particle filter pixel error (noise) for measurement update"
336
- )
337
- roi_pf_max_hist_mean_seconds: Optional[float] = Field(
338
- None,
339
- description="Particle filter maximum temporal filtering window for cloud means",
340
- )
341
- roi_pf_cloud_exp_decay_rate: Optional[float] = Field(
342
- None,
343
- description="Particle filter decay rate for particle cloud when no measurements",
344
- )
345
- publish_rate: Optional[float] = Field(None, description="Publish rate (Hz)")
346
- publish_particles: Optional[bool] = Field(
347
- None, description="Publish particles to a pointcloud topic"
348
- )
349
- camera_info_topics: Optional[List[str]] = Field(
350
- None, description="List of camera info topics to use for geolocation"
351
- )
352
- roi_track_topics: Optional[List[str]] = Field(None, description="List of roi_track topics")
353
- ais: Optional[Ais] = None
354
- exclusion_zone_radius: Optional[float] = Field(
355
- None,
356
- description="Objects that are within this zone when first detected are ignored.",
357
- )
358
- diagnostic_updater: Optional[DiagnosticUpdater3] = None
359
-
360
-
361
- class ObjectHistoryParameters(BaseModel):
362
- filter: Optional[str] = Field(None, description="")
363
- alerts: Optional[List[str]] = Field(None, description="")
364
- object_stale_timeout: Optional[float] = Field(
365
- None, description="How long to wait before removing object from history"
366
- )
367
- notifications_use_sim_time: Optional[bool] = Field(
368
- None, description="Whether to use the sim time for alerts"
369
- )
370
- diagnostic_updater: Optional[DiagnosticUpdater3] = None
371
-
372
-
373
- class LookoutGreenstreamBringupParameters(BaseModel):
374
- launch_package: Optional[str] = Field(None, description="")
375
- launch_executable: Optional[str] = Field(None, description="")
376
-
377
-
378
- class LookoutConfigManagerParameters(BaseModel):
379
- launch_package: Optional[str] = Field(None, description="")
380
- launch_executable: Optional[str] = Field(None, description="")
381
-
382
-
383
- class WebBridgeParameters(BaseModel):
384
- address: Optional[str] = Field(
385
- None, description="The host address to bind the WebSocket server to"
386
- )
387
- asset_uri_allowlist: Optional[List[str]] = Field(
388
- None,
389
- description="List of regular expressions (ECMAScript) of whitelisted parameter names.",
390
- )
391
- best_effort_qos_send_buffer_limit: Optional[int] = Field(
392
- None,
393
- description="Connection send buffer limit in bytes for 'best_effort' messages",
394
- )
395
- best_effort_qos_topic_whitelist: Optional[List[str]] = Field(
396
- None,
397
- description="List of regular expressions (ECMAScript) for topics that should be forced to use 'best_effort' QoS. Unmatched topics will use 'reliable' QoS if ALL publishers are 'reliable', 'best_effort' if any publishers are 'best_effort'.",
398
- )
399
- capabilities: Optional[List[str]] = Field(None, description="Server capabilities")
400
- certfile: Optional[str] = Field(None, description="Path to the certificate to use for TLS")
401
- client_topic_whitelist: Optional[List[str]] = Field(
402
- None,
403
- description="List of regular expressions (ECMAScript) of whitelisted parameter names.",
404
- )
405
- disable_load_message: Optional[bool] = Field(
406
- None,
407
- description="Do not publish as loaned message when publishing a client message",
408
- )
409
- include_hidden: Optional[bool] = Field(None, description="Include hidden topics and services")
410
- keyfile: Optional[str] = Field(None, description="Path to the private key to use for TLS")
411
- max_qos_depth: Optional[int] = Field(
412
- None, description="Maximum depth used for the QoS profile of subscriptions."
413
- )
414
- min_qos_depth: Optional[int] = Field(
415
- None, description="Minimum depth used for the QoS profile of subscriptions."
416
- )
417
- param_whitelist: Optional[List[str]] = Field(
418
- None,
419
- description="List of regular expressions (ECMAScript) of whitelisted parameter names.",
420
- )
421
- port: Optional[int] = Field(None, description="The TCP port to bind the WebSocket server to")
422
- send_buffer_limit: Optional[int] = Field(
423
- None,
424
- description="Connection send buffer limit in bytes. Messages will be dropped when a connection's send buffer reaches this limit to avoid a queue of outdated messages building up.",
425
- )
426
- service_whitelist: Optional[List[str]] = Field(
427
- None,
428
- description="List of regular expressions (ECMAScript) of whitelisted service names.",
429
- )
430
- tls: Optional[bool] = Field(
431
- None, description="Use Transport Layer Security for encrypted communication"
432
- )
433
- topic_whitelist: Optional[List[str]] = Field(
434
- None,
435
- description="List of regular expressions (ECMAScript) of whitelisted topic names.",
436
- )
437
- use_compression: Optional[bool] = Field(
438
- None,
439
- description="Use websocket compression (permessage-deflate). Suited for connections with smaller bandwidth, at the cost of additional CPU load.",
440
- )
490
+ class StubRoiPublisherParameters(BaseModel):
491
+ rate: Optional[float] = Field(None, description="Rate of detection (per second)")
441
492
 
442
493
 
443
494
  class Camera(BaseModel):
@@ -467,6 +518,10 @@ class Rtsp(BaseModel):
467
518
  ip_address: Optional[str] = Field(None, description="RTSP Camera IP address")
468
519
  port: Optional[int] = Field(None, description="RTSP Camera port")
469
520
  stream: Optional[str] = Field(None, description="RTSP Camera stream")
521
+ reference_meta_timestamp: Optional[bool] = Field(
522
+ None,
523
+ description="Enable reference meta timestamp for RTSP stream so that topic is published with the camera timestamp",
524
+ )
470
525
 
471
526
 
472
527
  class Test(BaseModel):
@@ -603,7 +658,12 @@ class Publish(BaseModel):
603
658
  topic: Optional[Topic] = None
604
659
 
605
660
 
606
- class PipelineBowStbdColorParameters(BaseModel):
661
+ class DiagnosticUpdater5(BaseModel):
662
+ period: Optional[float] = Field(None, description="")
663
+ use_fqn: Optional[bool] = Field(None, description="")
664
+
665
+
666
+ class PipelineBowColorParameters(BaseModel):
607
667
  namespace_vessel_application: Optional[str] = Field(
608
668
  None,
609
669
  description="The namespace of the vessel and application, separated by '/'",
@@ -619,46 +679,39 @@ class PipelineBowStbdColorParameters(BaseModel):
619
679
  source: Optional[Source] = None
620
680
  undistort: Optional[Undistort] = None
621
681
  publish: Optional[Publish] = None
622
- diagnostic_updater: Optional[DiagnosticUpdater3] = None
682
+ diagnostic_updater: Optional[DiagnosticUpdater5] = None
623
683
 
624
684
 
625
- class GstRosimagesinkBowStbdColorParameters(BaseModel):
685
+ class GstRosimagesinkBowColorParameters(BaseModel):
626
686
  pass
627
687
 
628
688
 
629
- class InfoBowStbdColorParameters(BaseModel):
630
- frame_id: Optional[str] = Field(None, description="Frame id / Camera id")
631
- model: Optional[str] = Field(None, description="Camera model")
632
- type: Optional[str] = Field(None, description="Camera type")
633
- pixel_width: Optional[int] = Field(None, description="Pixel width (pixels)")
634
- pixel_height: Optional[int] = Field(None, description="Pixel height (pixels)")
635
- distortion_model: Optional[str] = Field(None, description="Distortion model type")
636
- distortion_params: Optional[List[float]] = Field(None, description="Distortion parameters")
637
- k_intrinsic: Optional[List[float]] = Field(None, description="Intrinsic matrix")
638
- distortion_kmat_alpha: Optional[float] = Field(
639
- None,
640
- description="Free scaling parameter for undistorted image between 0 (all pixels are valid), and 1 (all source pixels are retained i.e. max distortion FOV)",
641
- )
642
- publish_camera_info: Optional[bool] = Field(
643
- None,
644
- description="If false, will subscribe to an existing camera info topic instead for camera_info_distorted",
645
- )
689
+ class LookoutConfigManagerParameters(BaseModel):
690
+ launch_package: Optional[str] = Field(None, description="")
691
+ launch_executable: Optional[str] = Field(None, description="")
692
+
693
+
694
+ class LookoutGreenstreamBringupParameters(BaseModel):
695
+ launch_package: Optional[str] = Field(None, description="")
696
+ launch_executable: Optional[str] = Field(None, description="")
646
697
 
647
698
 
648
699
  class LaunchParameters(BaseModel):
700
+ web_bridge: Optional[WebBridgeParameters] = None
701
+ vessel_manager: Optional[VesselManagerParameters] = None
702
+ data_player: Optional[DataPlayerParameters] = None
703
+ data_recorder: Optional[DataRecorderParameters] = None
704
+ data_hub: Optional[DataHubParameters] = None
705
+ simulated_clock: Optional[SimulatedClockParameters] = None
706
+ hifi_vessel_manager: Optional[HifiVesselManagerParameters] = None
707
+ scenario_runner: Optional[ScenarioRunnerParameters] = None
708
+ parameter_persistence: Optional[ParameterPersistenceParameters] = None
649
709
  diagnostic_aggregator: Optional[DiagnosticAggregatorParameters] = None
650
710
  roi_tracker: Optional[RoiTrackerParameters] = None
651
- data_recorder: Optional[DataRecorderParameters] = None
652
711
  system_resource_monitor: Optional[SystemResourceMonitorParameters] = None
653
712
  geolocation: Optional[GeolocationParameters] = None
654
- parameter_persistence: Optional[ParameterPersistenceParameters] = None
655
- detector_onnx: Optional[DetectorOnnxParameters] = None
656
- vessel_offsets: Optional[VesselOffsetsParameters] = None
657
- object_tracker: Optional[ObjectTrackerParameters] = None
658
- object_history: Optional[ObjectHistoryParameters] = None
659
- lookout_greenstream_bringup: Optional[LookoutGreenstreamBringupParameters] = None
713
+ stub_roi_publisher: Optional[StubRoiPublisherParameters] = None
714
+ pipeline_bow_color: Optional[PipelineBowColorParameters] = None
715
+ gst_rosimagesink_bow_color: Optional[GstRosimagesinkBowColorParameters] = None
660
716
  lookout_config_manager: Optional[LookoutConfigManagerParameters] = None
661
- web_bridge: Optional[WebBridgeParameters] = None
662
- pipeline_bow_stbd_color: Optional[PipelineBowStbdColorParameters] = None
663
- gst_rosimagesink_bow_stbd_color: Optional[GstRosimagesinkBowStbdColorParameters] = None
664
- info_bow_stbd_color: Optional[InfoBowStbdColorParameters] = None
717
+ lookout_greenstream_bringup: Optional[LookoutGreenstreamBringupParameters] = None
@@ -15,6 +15,11 @@
15
15
  "title": "Type",
16
16
  "type": "string"
17
17
  },
18
+ "publish_camera_info": {
19
+ "default": true,
20
+ "title": "Publish Camera Info",
21
+ "type": "boolean"
22
+ },
18
23
  "ptz": {
19
24
  "default": false,
20
25
  "title": "Ptz",
@@ -52,9 +57,6 @@
52
57
  "type": {
53
58
  "const": "fastdds",
54
59
  "default": "fastdds",
55
- "enum": [
56
- "fastdds"
57
- ],
58
60
  "title": "Type",
59
61
  "type": "string"
60
62
  },
@@ -85,9 +87,6 @@
85
87
  "type": {
86
88
  "const": "simple",
87
89
  "default": "simple",
88
- "enum": [
89
- "simple"
90
- ],
91
90
  "title": "Type",
92
91
  "type": "string"
93
92
  },
@@ -112,9 +111,6 @@
112
111
  "type": {
113
112
  "const": "zenoh",
114
113
  "default": "zenoh",
115
- "enum": [
116
- "zenoh"
117
- ],
118
114
  "title": "Type",
119
115
  "type": "string"
120
116
  },
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: lookout_config
3
- Version: 1.22.0
3
+ Version: 1.24.0
4
4
  Summary: A library for reading / writing Lookout config files
5
5
  Home-page: https://github.com/Greenroom-Robotics/lookout
6
6
  Author: Greenroom Robotics
@@ -19,7 +19,7 @@ Requires-Dist: setuptools
19
19
  Requires-Dist: dacite
20
20
  Requires-Dist: PyYAML
21
21
  Requires-Dist: dc-schema
22
- Requires-Dist: greenstream-config==3.20.0
22
+ Requires-Dist: greenstream-config==3.22.0
23
23
  Requires-Dist: gr-urchin
24
24
 
25
25
  # Lookout Config
@@ -2,12 +2,12 @@ lookout_config/__init__.py,sha256=NKLSlCn7mb8HRbkOB6i6EBpvROLGRlZRcnHc5nm1zTk,17
2
2
  lookout_config/generate_schemas.py,sha256=yFNvrZ6gie1tnTM_1TO8_wBa0lFHJAABSI3ZAZqw_Wg,457
3
3
  lookout_config/generate_urdf.py,sha256=O5n0hNsRJwTgQnWdPZIg_LgpxlDQOzWv5IccjT7yDS4,2719
4
4
  lookout_config/helpers.py,sha256=3GkGRPDzQ67I5srwcWoI8PI1dgrWvTsUwA8-yRUttLM,603
5
- lookout_config/launch_parameters.py,sha256=xipX8OIV3Vm9jtz2EXk0Zsj-_R6EqenqyM0ogpBwmtk,27878
5
+ lookout_config/launch_parameters.py,sha256=t1A7J2icXkYs3KeRQQd-O8S6Bxol25oGi5KxS7ldqS0,27499
6
6
  lookout_config/types.py,sha256=HMrHST658SpGVKrocsCe66E6x0aaYkBiYzTD-quY-Ys,4323
7
- lookout_config/schemas/lookout.schema.json,sha256=2j5Ace_niCr2k23DDWr8AOBlbuPZF6Gb8eBElAQvfYE,10636
7
+ lookout_config/schemas/lookout.schema.json,sha256=NIekpXaauGsFJthrDfLkQzXCrQrVYmRRAynLlzYuym4,10615
8
8
  lookout_config/test/lookout_config_test.py,sha256=TdOzIEWnyrckhmK7OtShtoWwSAP8QDCiKalNhvScd2U,73
9
- lookout_config-1.22.0.dist-info/METADATA,sha256=ENksX-krq1Cefj5h08ayvdgu2NgKbVbgi_03RELHaCs,1442
10
- lookout_config-1.22.0.dist-info/WHEEL,sha256=beeZ86-EfXScwlR_HKu4SllMC9wUEj_8Z_4FJ3egI2w,91
11
- lookout_config-1.22.0.dist-info/top_level.txt,sha256=IiZRgJhNrNL87uLMQm9lQRrMCqJnTOl7aYlA7zRSYyg,15
12
- lookout_config-1.22.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
13
- lookout_config-1.22.0.dist-info/RECORD,,
9
+ lookout_config-1.24.0.dist-info/METADATA,sha256=W6oZ0bptKa4J5ptET2FmNsqCRqYbp00-A7CmAddvBNY,1442
10
+ lookout_config-1.24.0.dist-info/WHEEL,sha256=beeZ86-EfXScwlR_HKu4SllMC9wUEj_8Z_4FJ3egI2w,91
11
+ lookout_config-1.24.0.dist-info/top_level.txt,sha256=IiZRgJhNrNL87uLMQm9lQRrMCqJnTOl7aYlA7zRSYyg,15
12
+ lookout_config-1.24.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
13
+ lookout_config-1.24.0.dist-info/RECORD,,