lookout-config 1.8.0__py3-none-any.whl → 1.10.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.
@@ -29,7 +29,7 @@ def generate_urdf(
29
29
  ):
30
30
  mesh_path = f"package://lookout_bringup/meshes/{config.offsets.name}"
31
31
  file_path = f"/tmp/vessel_{config.mode.value}.urdf"
32
- camera_links, camera_joints = get_cameras_urdf(config.cameras, [], add_optical_frame) # type: ignore
32
+ camera_links, camera_joints = get_cameras_urdf(config.cameras, add_optical_frame) # type: ignore
33
33
 
34
34
  urdf = URDF(
35
35
  name="origins",
@@ -2,8 +2,68 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from pydantic import BaseModel
5
+ from typing import List, Optional
6
+
7
+ from pydantic import BaseModel, Field
8
+
9
+
10
+ class WebBridgeParameters(BaseModel):
11
+ address: Optional[str] = Field(
12
+ None, description="The host address to bind the WebSocket server to"
13
+ )
14
+ asset_uri_allowlist: Optional[List[str]] = Field(
15
+ None,
16
+ description="List of regular expressions (ECMAScript) of whitelisted parameter names.",
17
+ )
18
+ capabilities: Optional[List[str]] = Field(None, description="Server capabilities")
19
+ certfile: Optional[str] = Field(None, description="Path to the certificate to use for TLS")
20
+ client_topic_whitelist: Optional[List[str]] = Field(
21
+ None,
22
+ description="List of regular expressions (ECMAScript) of whitelisted parameter names.",
23
+ )
24
+ disable_load_message: Optional[bool] = Field(
25
+ None,
26
+ description="Do not publish as loaned message when publishing a client message",
27
+ )
28
+ include_hidden: Optional[bool] = Field(None, description="Include hidden topics and services")
29
+ keyfile: Optional[str] = Field(None, description="Path to the private key to use for TLS")
30
+ max_qos_depth: Optional[int] = Field(
31
+ None, description="Maximum depth used for the QoS profile of subscriptions."
32
+ )
33
+ min_qos_depth: Optional[int] = Field(
34
+ None, description="Minimum depth used for the QoS profile of subscriptions."
35
+ )
36
+ param_whitelist: Optional[List[str]] = Field(
37
+ None,
38
+ description="List of regular expressions (ECMAScript) of whitelisted parameter names.",
39
+ )
40
+ port: Optional[int] = Field(None, description="The TCP port to bind the WebSocket server to")
41
+ send_buffer_limit: Optional[int] = Field(
42
+ None,
43
+ 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.",
44
+ )
45
+ service_whitelist: Optional[List[str]] = Field(
46
+ None,
47
+ description="List of regular expressions (ECMAScript) of whitelisted service names.",
48
+ )
49
+ tls: Optional[bool] = Field(
50
+ None, description="Use Transport Layer Security for encrypted communication"
51
+ )
52
+ topic_whitelist: Optional[List[str]] = Field(
53
+ None,
54
+ description="List of regular expressions (ECMAScript) of whitelisted topic names.",
55
+ )
56
+ use_compression: Optional[bool] = Field(
57
+ None,
58
+ description="Use websocket compression (permessage-deflate). Suited for connections with smaller bandwidth, at the cost of additional CPU load.",
59
+ )
60
+
61
+
62
+ class LookoutGreenstreamBringupParameters(BaseModel):
63
+ launch_package: Optional[str] = Field(None, description="")
64
+ launch_executable: Optional[str] = Field(None, description="")
6
65
 
7
66
 
8
67
  class LaunchParameters(BaseModel):
9
- pass
68
+ web_bridge: Optional[WebBridgeParameters] = None
69
+ lookout_greenstream_bringup: Optional[LookoutGreenstreamBringupParameters] = None
@@ -10,116 +10,20 @@
10
10
  "title": "Order",
11
11
  "type": "integer"
12
12
  },
13
- "elements": {
14
- "items": {
15
- "type": "string"
16
- },
17
- "title": "Elements",
18
- "type": "array"
19
- },
20
- "pixel_width": {
21
- "title": "Pixel Width",
22
- "type": "integer"
23
- },
24
- "pixel_height": {
25
- "title": "Pixel Height",
26
- "type": "integer"
27
- },
28
- "camera_frame_topic": {
29
- "anyOf": [
30
- {
31
- "type": "string"
32
- },
33
- {
34
- "type": "null"
35
- }
36
- ],
37
- "title": "Camera Frame Topic"
38
- },
39
- "camera_info_topic": {
40
- "anyOf": [
41
- {
42
- "type": "string"
43
- },
44
- {
45
- "type": "null"
46
- }
47
- ],
48
- "title": "Camera Info Topic"
49
- },
50
- "k_intrinsic": {
51
- "anyOf": [
52
- {
53
- "items": {
54
- "type": "number"
55
- },
56
- "type": "array"
57
- },
58
- {
59
- "type": "null"
60
- }
61
- ],
62
- "title": "K Intrinsic"
63
- },
64
- "distortion_parameters": {
65
- "anyOf": [
66
- {
67
- "items": {
68
- "type": "number"
69
- },
70
- "type": "array"
71
- },
72
- {
73
- "type": "null"
74
- }
75
- ],
76
- "title": "Distortion Parameters"
77
- },
78
- "distortion_model": {
79
- "default": "plumb_bob",
80
- "title": "Distortion Model",
81
- "type": "string"
82
- },
83
- "publish_camera_info": {
84
- "default": true,
85
- "title": "Publish Camera Info",
86
- "type": "boolean"
87
- },
88
- "distortion_kmat_alpha": {
89
- "default": 0.5,
90
- "title": "Distortion Kmat Alpha",
91
- "type": "number"
92
- },
93
- "offsets": {
94
- "anyOf": [
95
- {
96
- "$ref": "#/$defs/Offsets"
97
- },
98
- {
99
- "type": "null"
100
- }
101
- ],
102
- "default": null
103
- },
104
13
  "type": {
105
14
  "default": "color",
106
15
  "title": "Type",
107
16
  "type": "string"
108
17
  },
109
- "ros_throttle_time": {
110
- "default": 1e-07,
111
- "title": "Ros Throttle Time",
112
- "type": "number"
113
- },
114
- "undistort_image": {
18
+ "ptz": {
115
19
  "default": false,
116
- "title": "Undistort Image",
20
+ "title": "Ptz",
117
21
  "type": "boolean"
118
22
  },
119
- "ptz": {
23
+ "camera_offsets": {
120
24
  "anyOf": [
121
25
  {
122
- "$ref": "#/$defs/PTZOnvif"
26
+ "$ref": "#/$defs/Offsets"
123
27
  },
124
28
  {
125
29
  "type": "null"
@@ -127,6 +31,14 @@
127
31
  ],
128
32
  "default": null
129
33
  },
34
+ "ptz_offsets": {
35
+ "default": [],
36
+ "items": {
37
+ "$ref": "#/$defs/PTZOffsets"
38
+ },
39
+ "title": "Ptz Offsets",
40
+ "type": "array"
41
+ },
130
42
  "ignore_regions": {
131
43
  "items": {
132
44
  "$ref": "#/$defs/Polygon"
@@ -137,12 +49,7 @@
137
49
  },
138
50
  "required": [
139
51
  "name",
140
- "order",
141
- "elements",
142
- "pixel_width",
143
- "pixel_height",
144
- "camera_frame_topic",
145
- "camera_info_topic"
52
+ "order"
146
53
  ],
147
54
  "title": "CameraExtended",
148
55
  "type": "object"
@@ -261,71 +168,21 @@
261
168
  "title": "Offsets",
262
169
  "type": "object"
263
170
  },
264
- "PTZComponent": {
171
+ "PTZOffsets": {
265
172
  "properties": {
266
- "move_type": {
267
- "enum": [
268
- "pan",
269
- "tilt",
270
- "zoom"
271
- ],
272
- "title": "Move Type",
273
- "type": "string"
274
- },
275
- "home": {
276
- "title": "Home",
277
- "type": "number"
278
- },
279
- "joint_offsets": {
280
- "anyOf": [
281
- {
282
- "$ref": "#/$defs/Offsets"
283
- },
284
- {
285
- "type": "null"
286
- }
287
- ],
288
- "default": null
289
- },
290
- "joint_limits": {
291
- "anyOf": [
292
- {
293
- "$ref": "#/$defs/PTZLimits"
294
- },
295
- {
296
- "type": "null"
297
- }
298
- ],
299
- "default": null
300
- },
301
- "joystick_axis_index": {
173
+ "roll": {
302
174
  "anyOf": [
303
175
  {
304
- "type": "integer"
176
+ "type": "number"
305
177
  },
306
178
  {
307
179
  "type": "null"
308
180
  }
309
181
  ],
310
182
  "default": null,
311
- "title": "Joystick Axis Index"
183
+ "title": "Roll"
312
184
  },
313
- "reverse_joystick_input": {
314
- "default": false,
315
- "title": "Reverse Joystick Input",
316
- "type": "boolean"
317
- }
318
- },
319
- "required": [
320
- "move_type",
321
- "home"
322
- ],
323
- "title": "PTZComponent",
324
- "type": "object"
325
- },
326
- "PTZControlSettings": {
327
- "properties": {
328
- "absolute_move_tolerance": {
185
+ "pitch": {
329
186
  "anyOf": [
330
187
  {
331
188
  "type": "number"
@@ -334,22 +191,22 @@
334
191
  "type": "null"
335
192
  }
336
193
  ],
337
- "default": 0.0175,
338
- "title": "Absolute Move Tolerance"
194
+ "default": null,
195
+ "title": "Pitch"
339
196
  },
340
- "query_timeout": {
197
+ "yaw": {
341
198
  "anyOf": [
342
199
  {
343
- "type": "integer"
200
+ "type": "number"
344
201
  },
345
202
  {
346
203
  "type": "null"
347
204
  }
348
205
  ],
349
- "default": 2,
350
- "title": "Query Timeout"
206
+ "default": null,
207
+ "title": "Yaw"
351
208
  },
352
- "check_camera_rate": {
209
+ "forward": {
353
210
  "anyOf": [
354
211
  {
355
212
  "type": "number"
@@ -358,10 +215,10 @@
358
215
  "type": "null"
359
216
  }
360
217
  ],
361
- "default": 1.0,
362
- "title": "Check Camera Rate"
218
+ "default": null,
219
+ "title": "Forward"
363
220
  },
364
- "publish_rate": {
221
+ "left": {
365
222
  "anyOf": [
366
223
  {
367
224
  "type": "number"
@@ -370,106 +227,34 @@
370
227
  "type": "null"
371
228
  }
372
229
  ],
373
- "default": 10.0,
374
- "title": "Publish Rate"
230
+ "default": null,
231
+ "title": "Left"
375
232
  },
376
- "wsdl_dir": {
233
+ "up": {
377
234
  "anyOf": [
378
235
  {
379
- "type": "string"
236
+ "type": "number"
380
237
  },
381
238
  {
382
239
  "type": "null"
383
240
  }
384
241
  ],
385
- "default": "/home/ros/.local/lib/python3.12/site-packages/wsdl",
386
- "title": "Wsdl Dir"
242
+ "default": null,
243
+ "title": "Up"
387
244
  },
388
- "continuous_state_publishing": {
389
- "anyOf": [
390
- {
391
- "type": "boolean"
392
- },
393
- {
394
- "type": "null"
395
- }
245
+ "type": {
246
+ "enum": [
247
+ "pan",
248
+ "tilt"
396
249
  ],
397
- "default": true,
398
- "title": "Continuous State Publishing"
399
- },
400
- "frd_to_flu_transform": {
401
- "default": true,
402
- "title": "Frd To Flu Transform",
403
- "type": "boolean"
404
- }
405
- },
406
- "title": "PTZControlSettings",
407
- "type": "object"
408
- },
409
- "PTZLimits": {
410
- "properties": {
411
- "min": {
412
- "title": "Min",
413
- "type": "number"
414
- },
415
- "max": {
416
- "title": "Max",
417
- "type": "number"
418
- }
419
- },
420
- "required": [
421
- "min",
422
- "max"
423
- ],
424
- "title": "PTZLimits",
425
- "type": "object"
426
- },
427
- "PTZOnvif": {
428
- "properties": {
429
- "ip_address": {
430
- "title": "Ip Address",
431
- "type": "string"
432
- },
433
- "port": {
434
- "title": "Port",
435
- "type": "integer"
436
- },
437
- "username": {
438
- "title": "Username",
439
- "type": "string"
440
- },
441
- "password": {
442
- "title": "Password",
250
+ "title": "Type",
443
251
  "type": "string"
444
- },
445
- "ptz_components": {
446
- "items": {
447
- "$ref": "#/$defs/PTZComponent"
448
- },
449
- "title": "Ptz Components",
450
- "type": "array"
451
- },
452
- "settings": {
453
- "$ref": "#/$defs/PTZControlSettings",
454
- "default": {
455
- "absolute_move_tolerance": 0.0175,
456
- "query_timeout": 2,
457
- "check_camera_rate": 1.0,
458
- "publish_rate": 10.0,
459
- "wsdl_dir": "/home/ros/.local/lib/python3.12/site-packages/wsdl",
460
- "continuous_state_publishing": true,
461
- "frd_to_flu_transform": true
462
- }
463
252
  }
464
253
  },
465
254
  "required": [
466
- "ip_address",
467
- "port",
468
- "username",
469
- "password",
470
- "ptz_components"
255
+ "type"
471
256
  ],
472
- "title": "PTZOnvif",
257
+ "title": "PTZOffsets",
473
258
  "type": "object"
474
259
  },
475
260
  "Point": {
@@ -518,6 +303,27 @@
518
303
  ],
519
304
  "title": "PositioningSystem",
520
305
  "type": "string"
306
+ },
307
+ "VesselOffsets": {
308
+ "properties": {
309
+ "name": {
310
+ "title": "Name",
311
+ "type": "string"
312
+ },
313
+ "baselink_to_ins": {
314
+ "$ref": "#/$defs/Offsets"
315
+ },
316
+ "baselink_to_waterline": {
317
+ "$ref": "#/$defs/Offsets"
318
+ }
319
+ },
320
+ "required": [
321
+ "name",
322
+ "baselink_to_ins",
323
+ "baselink_to_waterline"
324
+ ],
325
+ "title": "VesselOffsets",
326
+ "type": "object"
521
327
  }
522
328
  },
523
329
  "properties": {
@@ -544,11 +350,19 @@
544
350
  "type": "boolean"
545
351
  },
546
352
  "mode": {
547
- "$ref": "#/$defs/Mode",
353
+ "allOf": [
354
+ {
355
+ "$ref": "#/$defs/Mode"
356
+ }
357
+ ],
548
358
  "default": "hardware"
549
359
  },
550
360
  "log_level": {
551
- "$ref": "#/$defs/LogLevel",
361
+ "allOf": [
362
+ {
363
+ "$ref": "#/$defs/LogLevel"
364
+ }
365
+ ],
552
366
  "default": "info"
553
367
  },
554
368
  "cameras": {
@@ -559,7 +373,11 @@
559
373
  "type": "array"
560
374
  },
561
375
  "network": {
562
- "$ref": "#/$defs/Network",
376
+ "allOf": [
377
+ {
378
+ "$ref": "#/$defs/Network"
379
+ }
380
+ ],
563
381
  "default": "host"
564
382
  },
565
383
  "gpu": {
@@ -568,13 +386,47 @@
568
386
  "type": "boolean"
569
387
  },
570
388
  "geolocation_mode": {
571
- "$ref": "#/$defs/GeolocationMode",
389
+ "allOf": [
390
+ {
391
+ "$ref": "#/$defs/GeolocationMode"
392
+ }
393
+ ],
572
394
  "default": "none"
573
395
  },
574
396
  "positioning_system": {
575
- "$ref": "#/$defs/PositioningSystem",
397
+ "allOf": [
398
+ {
399
+ "$ref": "#/$defs/PositioningSystem"
400
+ }
401
+ ],
576
402
  "default": "none"
577
403
  },
404
+ "offsets": {
405
+ "allOf": [
406
+ {
407
+ "$ref": "#/$defs/VesselOffsets"
408
+ }
409
+ ],
410
+ "default": {
411
+ "name": "mars.stl",
412
+ "baselink_to_ins": {
413
+ "forward": 1.416,
414
+ "left": 0.153,
415
+ "pitch": null,
416
+ "roll": null,
417
+ "up": 0.184,
418
+ "yaw": null
419
+ },
420
+ "baselink_to_waterline": {
421
+ "forward": null,
422
+ "left": null,
423
+ "pitch": null,
424
+ "roll": null,
425
+ "up": 0.3,
426
+ "yaw": null
427
+ }
428
+ }
429
+ },
578
430
  "components": {
579
431
  "title": "Components"
580
432
  },
lookout_config/types.py CHANGED
@@ -106,7 +106,6 @@ class LookoutConfig(BaseModel):
106
106
  },
107
107
  )
108
108
  ros_domain_id: int = 0
109
- static_peers: list[str] = Field(default_factory=list)
110
109
  namespace_vessel: str = "vessel_1"
111
110
  gama_vessel: bool = False
112
111
  mode: Mode = Mode.HARDWARE
@@ -127,3 +126,6 @@ class LookoutConfig(BaseModel):
127
126
  prod: bool = True
128
127
  log_directory: str = "~/greenroom/lookout/logs"
129
128
  recording_directory: str = "~/greenroom/lookout/recordings"
129
+ with_discovery_server: bool = Field(default=True, description="Run the discovery server.")
130
+ discovery_server_ip: str = "0.0.0.0"
131
+ own_ip: str = "0.0.0.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lookout_config
3
- Version: 1.8.0
3
+ Version: 1.10.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.7.1
22
+ Requires-Dist: greenstream-config==3.9.7
23
23
  Requires-Dist: gr-urchin
24
24
 
25
25
  # Lookout Config
@@ -0,0 +1,13 @@
1
+ lookout_config/__init__.py,sha256=3D-vqwfTPSuvLVBo4wiYQglpPUm4Fj6Y5MYGIS-e0fI,1738
2
+ lookout_config/generate_schemas.py,sha256=yFNvrZ6gie1tnTM_1TO8_wBa0lFHJAABSI3ZAZqw_Wg,457
3
+ lookout_config/generate_urdf.py,sha256=O5n0hNsRJwTgQnWdPZIg_LgpxlDQOzWv5IccjT7yDS4,2719
4
+ lookout_config/helpers.py,sha256=3GkGRPDzQ67I5srwcWoI8PI1dgrWvTsUwA8-yRUttLM,603
5
+ lookout_config/launch_parameters.py,sha256=wvLXQMPi7D3ExesyvSNLPYEb2WChj9YTslnvQYPsXbk,3033
6
+ lookout_config/types.py,sha256=MsnyMfbXcp50xbtxkcFO4tWl3CwkwlAWoUOYE35bMg8,3702
7
+ lookout_config/schemas/lookout.schema.json,sha256=PXuSr6ct0LSitJbdlX0hi2XFkzsMdMUYqGfRDPexbOA,8844
8
+ lookout_config/test/lookout_config_test.py,sha256=TdOzIEWnyrckhmK7OtShtoWwSAP8QDCiKalNhvScd2U,73
9
+ lookout_config-1.10.0.dist-info/METADATA,sha256=h8QAXqYEdPY20EgTQ48lsn8fYjm8RyLCm8xOn64q_PQ,1437
10
+ lookout_config-1.10.0.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
11
+ lookout_config-1.10.0.dist-info/top_level.txt,sha256=IiZRgJhNrNL87uLMQm9lQRrMCqJnTOl7aYlA7zRSYyg,15
12
+ lookout_config-1.10.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
13
+ lookout_config-1.10.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.3.0)
2
+ Generator: setuptools (75.6.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,13 +0,0 @@
1
- lookout_config/__init__.py,sha256=3D-vqwfTPSuvLVBo4wiYQglpPUm4Fj6Y5MYGIS-e0fI,1738
2
- lookout_config/generate_schemas.py,sha256=yFNvrZ6gie1tnTM_1TO8_wBa0lFHJAABSI3ZAZqw_Wg,457
3
- lookout_config/generate_urdf.py,sha256=Emve-fVAjCT89Lz2wyyat5t3Yjxa-SdWPgnT9Pu4KPs,2723
4
- lookout_config/helpers.py,sha256=3GkGRPDzQ67I5srwcWoI8PI1dgrWvTsUwA8-yRUttLM,603
5
- lookout_config/launch_parameters.py,sha256=1q49Abigr6WQ3MCJtRcS-h5wQLFNW0yx-zHXOkjn3QM,180
6
- lookout_config/types.py,sha256=RUc34rXcYp3262n9FZIBjSxft5-688A8ArDJwrqzVIU,3596
7
- lookout_config/schemas/lookout.schema.json,sha256=wg7hK6vFLk90w4B5cCtOwYYfKMNcggli0S3c1P-vTDs,12750
8
- lookout_config/test/lookout_config_test.py,sha256=TdOzIEWnyrckhmK7OtShtoWwSAP8QDCiKalNhvScd2U,73
9
- lookout_config-1.8.0.dist-info/METADATA,sha256=2PmIBQk8qLoMJQQ6RS3wo-xQrMjbnciU5n2-S12fZvA,1436
10
- lookout_config-1.8.0.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
11
- lookout_config-1.8.0.dist-info/top_level.txt,sha256=IiZRgJhNrNL87uLMQm9lQRrMCqJnTOl7aYlA7zRSYyg,15
12
- lookout_config-1.8.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
13
- lookout_config-1.8.0.dist-info/RECORD,,