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.
- lookout_config/launch_parameters.py +350 -297
- lookout_config/schemas/lookout.schema.json +5 -9
- {lookout_config-1.22.0.dist-info → lookout_config-1.24.0.dist-info}/METADATA +2 -2
- {lookout_config-1.22.0.dist-info → lookout_config-1.24.0.dist-info}/RECORD +7 -7
- {lookout_config-1.22.0.dist-info → lookout_config-1.24.0.dist-info}/WHEEL +0 -0
- {lookout_config-1.22.0.dist-info → lookout_config-1.24.0.dist-info}/top_level.txt +0 -0
- {lookout_config-1.22.0.dist-info → lookout_config-1.24.0.dist-info}/zip-safe +0 -0
@@ -2,19 +2,319 @@
|
|
2
2
|
|
3
3
|
from __future__ import annotations
|
4
4
|
|
5
|
-
from
|
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
|
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
|
-
|
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
|
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="
|
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
|
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[
|
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
|
210
|
-
|
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
|
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[
|
682
|
+
diagnostic_updater: Optional[DiagnosticUpdater5] = None
|
623
683
|
|
624
684
|
|
625
|
-
class
|
685
|
+
class GstRosimagesinkBowColorParameters(BaseModel):
|
626
686
|
pass
|
627
687
|
|
628
688
|
|
629
|
-
class
|
630
|
-
|
631
|
-
|
632
|
-
|
633
|
-
|
634
|
-
|
635
|
-
|
636
|
-
|
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
|
-
|
655
|
-
|
656
|
-
|
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
|
-
|
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.
|
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.
|
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=
|
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=
|
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.
|
10
|
-
lookout_config-1.
|
11
|
-
lookout_config-1.
|
12
|
-
lookout_config-1.
|
13
|
-
lookout_config-1.
|
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,,
|
File without changes
|
File without changes
|
File without changes
|