lookout-config 1.22.0__py3-none-any.whl → 1.23.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,261 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ from enum import Enum
5
6
  from typing import 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 DataPlayerParameters(BaseModel):
112
+ bag_directory: Optional[str] = Field(None, description="")
113
+ diagnostic_updater: Optional[DiagnosticUpdater] = None
114
+ storage_id: Optional[str] = Field(None, description="")
115
+
116
+
117
+ class DataRecorderParameters(BaseModel):
118
+ bag_directory: Optional[str] = Field(None, description="")
119
+ diagnostic_updater: Optional[DiagnosticUpdater] = None
120
+ storage_id: Optional[str] = Field(None, description="")
121
+ storage_preset_profile: Optional[str] = Field(None, description="")
122
+ topic_exclude_regexs: Optional[List[str]] = Field(None, description="")
123
+ topic_include_regexs: Optional[List[str]] = Field(None, description="")
124
+ trigger_topic_active: Optional[bool] = Field(None, description="")
125
+
126
+
127
+ class TypeEnum(Enum):
128
+ aws_s3 = "aws_s3"
129
+ azure_blob = "azure_blob"
130
+ microsoft_onedrive = "microsoft_onedrive"
131
+ sftp = "sftp"
132
+
133
+
134
+ class Config(BaseModel):
135
+ access_key_id: Optional[str] = Field(None, description="AWS access key ID")
136
+ secret_access_key: Optional[str] = Field(None, description="AWS secret access key")
137
+ region: Optional[str] = Field(None, description="AWS region")
138
+ endpoint: Optional[str] = Field(None, description="AWS S3 endpoint URL")
139
+
140
+
141
+ class AwsS3(BaseModel):
142
+ config: Optional[Config] = Field(
143
+ None,
144
+ description="JSON schema used to configure and authenticate the remote destination.",
145
+ )
146
+
147
+
148
+ class Config1(BaseModel):
149
+ sas_url: Optional[str] = Field(None, description="Access URL including SAS token")
150
+
151
+
152
+ class AzureBlob(BaseModel):
153
+ config: Optional[Config1] = Field(
154
+ None,
155
+ description="JSON schema used to configure and authenticate the remote destination.",
156
+ )
157
+
158
+
159
+ class Config2(BaseModel):
160
+ account: Optional[str] = Field(None, description="OneDrive account name")
161
+ client_id: Optional[str] = Field(None, description="Client ID for OneDrive")
162
+ client_secret: Optional[str] = Field(None, description="Client secret for OneDrive")
163
+ tenant: Optional[str] = Field(None, description="Tenant ID for OneDrive")
164
+
165
+
166
+ class MicrosoftOnedrive(BaseModel):
167
+ config: Optional[Config2] = Field(
168
+ None,
169
+ description="JSON schema used to configure and authenticate the remote destination.",
170
+ )
171
+
172
+
173
+ class Config3(BaseModel):
174
+ host: Optional[str] = Field(None, description="SFTP host")
175
+ user: Optional[str] = Field(None, description="Host username")
176
+ pass_: Optional[str] = Field(None, alias="pass", description="Host password")
177
+
178
+
179
+ class Sftp(BaseModel):
180
+ config: Optional[Config3] = Field(
181
+ None,
182
+ description="JSON schema used to configure and authenticate the remote destination.",
183
+ )
184
+
185
+
186
+ class UploadDestination(BaseModel):
187
+ name: Optional[str] = Field(None, description="Identifying name of the upload destination.")
188
+ type: Optional[List[TypeEnum]] = Field(None, description="Type of upload destination")
189
+ upload_path: Optional[str] = Field(
190
+ None, description="Path at the destination to upload files to."
191
+ )
192
+ aws_s3: Optional[AwsS3] = None
193
+ azure_blob: Optional[AzureBlob] = None
194
+ microsoft_onedrive: Optional[MicrosoftOnedrive] = None
195
+ sftp: Optional[Sftp] = None
196
+
197
+
198
+ class DataHubParameters(BaseModel):
199
+ port: Optional[int] = Field(None, description="Port for the HTTP server.")
200
+ bag_directory: Optional[str] = Field(
201
+ None, description="Directory containing recording bag files."
202
+ )
203
+ upload_queue_size: Optional[int] = Field(
204
+ None, description="Max number of items in the upload queue."
205
+ )
206
+ upload_destination: Optional[UploadDestination] = None
207
+ diagnostic_updater: Optional[DiagnosticUpdater] = None
208
+
209
+
210
+ class SimulatedClockParameters(BaseModel):
211
+ enabled: Optional[bool] = Field(
212
+ None, description="Whether to enable the simulated clock or not"
213
+ )
214
+ sim_speed: Optional[float] = Field(None, description="Speed at which to run the simulation")
215
+ publish_rate: Optional[float] = Field(
216
+ None, description="Rate at which to publish the clock at?"
217
+ )
218
+
219
+
220
+ class HifiVesselManagerParameters(BaseModel):
221
+ replay_mode: Optional[bool] = Field(None, description="Is the node in replay mode?")
222
+
223
+
224
+ class ScenarioRunnerParameters(BaseModel):
225
+ scenarios: Optional[List[str]] = Field(None, description="List of scenarios")
226
+
227
+
228
+ class NodeConfigurationModel(BaseModel):
229
+ node_name_regex: str = Field(..., title="Node Name Regex")
230
+ parameter_name_regexes: List[str] = Field(..., title="Parameter Name Regexes")
231
+
232
+
233
+ class ParameterPersistenceParameters(BaseModel):
234
+ params_path: Optional[str] = Field(
235
+ None, description="Path to the file where the parameters are stored"
236
+ )
237
+ file_header: Optional[str] = Field(
238
+ None, description="A message to add to the top of the params file"
239
+ )
240
+ path_within_file: Optional[str] = Field(
241
+ None, description="Path within the file to store the parameters"
242
+ )
243
+ persistent_parameters: Optional[List[NodeConfigurationModel]] = Field(
244
+ None, description="Regex describing which parameters should persist"
245
+ )
246
+ ignore_namespace: Optional[str] = Field(
247
+ None,
248
+ description="Which (if any) part of the node namespace to ignore. Treated as regex.",
249
+ )
250
+
251
+
252
+ class Bow(BaseModel):
11
253
  contains: Optional[List[str]] = Field(None, description="")
12
254
  path: Optional[str] = Field(None, description="")
13
255
  type: Optional[str] = Field(None, description="")
14
256
 
15
257
 
16
258
  class Analyzers(BaseModel):
17
- bow_stbd: Optional[BowStbd] = None
259
+ bow: Optional[Bow] = None
18
260
 
19
261
 
20
262
  class Cameras(BaseModel):
@@ -23,13 +265,7 @@ class Cameras(BaseModel):
23
265
  type: Optional[str] = Field(None, description="")
24
266
 
25
267
 
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):
268
+ class Recorder(BaseModel):
33
269
  find_and_remove_prefix: Optional[List[str]] = Field(None, description="")
34
270
  path: Optional[str] = Field(None, description="")
35
271
  type: Optional[str] = Field(None, description="")
@@ -66,31 +302,28 @@ class VesselComputer(BaseModel):
66
302
 
67
303
  class DiagnosticAggregatorParameters(BaseModel):
68
304
  cameras: Optional[Cameras] = None
69
- object_alerts: Optional[ObjectAlerts] = None
70
- object_tracker: Optional[ObjectTracker] = None
71
305
  path: Optional[str] = Field(None, description="")
72
306
  publish_values: Optional[bool] = Field(None, description="")
307
+ recorder: Optional[Recorder] = None
73
308
  roi_detector: Optional[RoiDetector] = None
74
309
  roi_tracker: Optional[RoiTracker] = None
75
310
  vessel_computer: Optional[VesselComputer] = None
76
311
 
77
312
 
78
- class DiagnosticUpdater(BaseModel):
79
- period: Optional[float] = Field(None, description="")
80
- use_fqn: Optional[bool] = Field(None, description="")
81
-
82
-
83
313
  class RoiTrackerParameters(BaseModel):
84
314
  detection_threshold: Optional[float] = Field(
85
315
  None, description="Detections above this threshold will be tracked"
86
316
  )
87
317
  iou_threshold: Optional[float] = Field(
88
- None,
89
- description="IoU threshold for association of dets with propagated track boxes",
318
+ None, description="Iou association threshold for dets to tracks"
90
319
  )
320
+ secondary_assoc_threshold: Optional[float] = Field(
321
+ None, description="Secondary association threshold for dets to tracks"
322
+ )
323
+ secondary_assoc_method: Optional[str] = Field(None, description="Secondary association method")
91
324
  max_age: Optional[int] = Field(
92
325
  None,
93
- description="The maximum number of consecutive misses before the track state is deleted",
326
+ description="Maximum number of consecutive misses before the track is deleted",
94
327
  )
95
328
  min_hits: Optional[int] = Field(None, description="Min number of detections to create track")
96
329
  classification_history_window: Optional[int] = Field(
@@ -101,24 +334,14 @@ class RoiTrackerParameters(BaseModel):
101
334
  None, description="Reset the tracker if an old timestamp is received"
102
335
  )
103
336
  roi_topics: Optional[List[str]] = Field(
104
- None, description="List of topics to subscribe to for ROIs"
337
+ None, description="REQUIRES RESTART. List of topics to subscribe to for ROIs"
105
338
  )
106
339
  roi_track_topics: Optional[List[str]] = Field(
107
- None, description="List of topics to publish tracked ROIs"
340
+ None, description="REQUIRES RESTART. List of topics to publish tracked ROIs"
108
341
  )
109
342
  diagnostic_updater: Optional[DiagnosticUpdater] = None
110
343
 
111
344
 
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
345
  class CoreUsageAverageERROR(BaseModel):
123
346
  max: Optional[float] = Field(None, description="")
124
347
  min: Optional[float] = Field(None, description="")
@@ -172,7 +395,7 @@ class RAM(BaseModel):
172
395
  Usage_Percent_WARN: Optional[UsagePercentWARN] = Field(None, alias="Usage Percent WARN")
173
396
 
174
397
 
175
- class DiagnosticUpdater2(BaseModel):
398
+ class DiagnosticUpdater4(BaseModel):
176
399
  CPU: Optional[CPU] = None
177
400
  Disk: Optional[Disk] = None
178
401
  RAM: Optional[RAM] = None
@@ -182,7 +405,7 @@ class DiagnosticUpdater2(BaseModel):
182
405
 
183
406
  class SystemResourceMonitorParameters(BaseModel):
184
407
  calculation_rate: Optional[float] = Field(None, description="")
185
- diagnostic_updater: Optional[DiagnosticUpdater2] = None
408
+ diagnostic_updater: Optional[DiagnosticUpdater4] = None
186
409
  diagnostics: Optional[bool] = Field(None, description="")
187
410
  diagnostics_log: Optional[bool] = Field(None, description="")
188
411
  disk_directories: Optional[List[str]] = Field(None, description="")
@@ -206,238 +429,8 @@ class GeolocationParameters(BaseModel):
206
429
  )
207
430
 
208
431
 
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
- )
432
+ class StubRoiPublisherParameters(BaseModel):
433
+ rate: Optional[float] = Field(None, description="Rate of detection (per second)")
441
434
 
442
435
 
443
436
  class Camera(BaseModel):
@@ -467,6 +460,10 @@ class Rtsp(BaseModel):
467
460
  ip_address: Optional[str] = Field(None, description="RTSP Camera IP address")
468
461
  port: Optional[int] = Field(None, description="RTSP Camera port")
469
462
  stream: Optional[str] = Field(None, description="RTSP Camera stream")
463
+ reference_meta_timestamp: Optional[bool] = Field(
464
+ None,
465
+ description="Enable reference meta timestamp for RTSP stream so that topic is published with the camera timestamp",
466
+ )
470
467
 
471
468
 
472
469
  class Test(BaseModel):
@@ -603,7 +600,12 @@ class Publish(BaseModel):
603
600
  topic: Optional[Topic] = None
604
601
 
605
602
 
606
- class PipelineBowStbdColorParameters(BaseModel):
603
+ class DiagnosticUpdater5(BaseModel):
604
+ period: Optional[float] = Field(None, description="")
605
+ use_fqn: Optional[bool] = Field(None, description="")
606
+
607
+
608
+ class PipelineBowColorParameters(BaseModel):
607
609
  namespace_vessel_application: Optional[str] = Field(
608
610
  None,
609
611
  description="The namespace of the vessel and application, separated by '/'",
@@ -619,46 +621,39 @@ class PipelineBowStbdColorParameters(BaseModel):
619
621
  source: Optional[Source] = None
620
622
  undistort: Optional[Undistort] = None
621
623
  publish: Optional[Publish] = None
622
- diagnostic_updater: Optional[DiagnosticUpdater3] = None
624
+ diagnostic_updater: Optional[DiagnosticUpdater5] = None
623
625
 
624
626
 
625
- class GstRosimagesinkBowStbdColorParameters(BaseModel):
627
+ class GstRosimagesinkBowColorParameters(BaseModel):
626
628
  pass
627
629
 
628
630
 
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
- )
631
+ class LookoutConfigManagerParameters(BaseModel):
632
+ launch_package: Optional[str] = Field(None, description="")
633
+ launch_executable: Optional[str] = Field(None, description="")
634
+
635
+
636
+ class LookoutGreenstreamBringupParameters(BaseModel):
637
+ launch_package: Optional[str] = Field(None, description="")
638
+ launch_executable: Optional[str] = Field(None, description="")
646
639
 
647
640
 
648
641
  class LaunchParameters(BaseModel):
642
+ web_bridge: Optional[WebBridgeParameters] = None
643
+ vessel_manager: Optional[VesselManagerParameters] = None
644
+ data_player: Optional[DataPlayerParameters] = None
645
+ data_recorder: Optional[DataRecorderParameters] = None
646
+ data_hub: Optional[DataHubParameters] = None
647
+ simulated_clock: Optional[SimulatedClockParameters] = None
648
+ hifi_vessel_manager: Optional[HifiVesselManagerParameters] = None
649
+ scenario_runner: Optional[ScenarioRunnerParameters] = None
650
+ parameter_persistence: Optional[ParameterPersistenceParameters] = None
649
651
  diagnostic_aggregator: Optional[DiagnosticAggregatorParameters] = None
650
652
  roi_tracker: Optional[RoiTrackerParameters] = None
651
- data_recorder: Optional[DataRecorderParameters] = None
652
653
  system_resource_monitor: Optional[SystemResourceMonitorParameters] = None
653
654
  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
655
+ stub_roi_publisher: Optional[StubRoiPublisherParameters] = None
656
+ pipeline_bow_color: Optional[PipelineBowColorParameters] = None
657
+ gst_rosimagesink_bow_color: Optional[GstRosimagesinkBowColorParameters] = None
660
658
  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
659
+ 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.23.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
@@ -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=Dyi6dcu2_6LB1iZ7cmobHJ-iaJcbeySNS22fpZuNTxk,25664
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.23.0.dist-info/METADATA,sha256=-ELvb5GmOtY6TphxVY8L5aeVTDds59YZK15TDEIREE4,1442
10
+ lookout_config-1.23.0.dist-info/WHEEL,sha256=beeZ86-EfXScwlR_HKu4SllMC9wUEj_8Z_4FJ3egI2w,91
11
+ lookout_config-1.23.0.dist-info/top_level.txt,sha256=IiZRgJhNrNL87uLMQm9lQRrMCqJnTOl7aYlA7zRSYyg,15
12
+ lookout_config-1.23.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
13
+ lookout_config-1.23.0.dist-info/RECORD,,