plexus-python-common 1.0.55__tar.gz → 1.0.56__tar.gz
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.
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/PKG-INFO +2 -1
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/pyproject.toml +2 -0
- plexus_python_common-1.0.56/src/plexus/common/resources/tags/unittest.tagset.yaml +97 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/resources/tags/universal.tagset.yaml +521 -43
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/tagutils.py +26 -2
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus_python_common.egg-info/PKG-INFO +2 -1
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus_python_common.egg-info/SOURCES.txt +1 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus_python_common.egg-info/requires.txt +1 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/test/plexus_tests/common/utils/tagutils_test.py +49 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/.editorconfig +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/.github/workflows/pr.yml +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/.github/workflows/push.yml +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/.gitignore +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/MANIFEST.in +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/README.md +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/VERSION +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/jsonutils/dummy.0.jsonl +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/jsonutils/dummy.1.jsonl +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/jsonutils/dummy.2.jsonl +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/pathutils/0-dummy +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/pathutils/1-dummy +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/pathutils/2-dummy +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/pathutils/dummy.0.0.jsonl +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/pathutils/dummy.0.0.vol-0.jsonl +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/pathutils/dummy.0.jsonl +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/pathutils/dummy.1.1.jsonl +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/pathutils/dummy.1.1.vol-1.jsonl +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/pathutils/dummy.1.jsonl +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/pathutils/dummy.2.2.jsonl +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/pathutils/dummy.2.2.vol-2.jsonl +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/pathutils/dummy.2.jsonl +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/pathutils/dummy.csv.part0 +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/pathutils/dummy.csv.part1 +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/pathutils/dummy.csv.part2 +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/pathutils/dummy.txt +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/s3utils/dir.baz/file.bar.baz +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/s3utils/dir.baz/file.foo.bar +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/s3utils/dir.baz/file.foo.baz +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/s3utils/dir.foo/dir.foo.bar/dir.foo.bar.baz/file.foo.bar.baz +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/s3utils/dir.foo/dir.foo.bar/file.bar.baz +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/s3utils/dir.foo/dir.foo.bar/file.foo.bar +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/s3utils/dir.foo/dir.foo.bar/file.foo.baz +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/s3utils/dir.foo/file.bar +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/s3utils/dir.foo/file.baz +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/s3utils/dir.foo/file.foo +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/s3utils_archive/archive.compressed.zip +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/s3utils_archive/archive.uncompressed.zip +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/setup.cfg +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/setup.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/__init__.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/carto/OSMFile.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/carto/OSMNode.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/carto/OSMTags.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/carto/OSMWay.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/carto/__init__.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/pose.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/proj.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/resources/__init__.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/resources/tags/__init__.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/__init__.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/apiutils.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/bagutils.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/config.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/datautils.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/dockerutils.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/jsonutils.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/ormutils.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/pathutils.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/s3utils.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/sqlutils.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/strutils.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/testutils.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus_python_common.egg-info/dependency_links.txt +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus_python_common.egg-info/not-zip-safe +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus_python_common.egg-info/top_level.txt +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/test/plexus_tests/__init__.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/test/plexus_tests/common/__init__.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/test/plexus_tests/common/carto/__init__.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/test/plexus_tests/common/carto/osm_file_test.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/test/plexus_tests/common/carto/osm_tags_test.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/test/plexus_tests/common/pose_test.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/test/plexus_tests/common/proj_test.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/test/plexus_tests/common/utils/__init__.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/test/plexus_tests/common/utils/bagutils_test.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/test/plexus_tests/common/utils/datautils_test.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/test/plexus_tests/common/utils/dockerutils_test.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/test/plexus_tests/common/utils/jsonutils_test.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/test/plexus_tests/common/utils/ormutils_test.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/test/plexus_tests/common/utils/pathutils_test.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/test/plexus_tests/common/utils/s3utils_test.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/test/plexus_tests/common/utils/strutils_test.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/test/plexus_tests/common/utils/testutils_test.py +0 -0
- {plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/test/testenv.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: plexus-python-common
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.56
|
|
4
4
|
Classifier: Programming Language :: Python :: 3
|
|
5
5
|
Classifier: Programming Language :: Python :: 3.12
|
|
6
6
|
Classifier: Programming Language :: Python :: 3.13
|
|
@@ -12,6 +12,7 @@ Requires-Dist: boto3-stubs[s3]<1.42,>=1.41
|
|
|
12
12
|
Requires-Dist: docker>=7.1
|
|
13
13
|
Requires-Dist: fsspec>=2025.10
|
|
14
14
|
Requires-Dist: jinja2>=3.0
|
|
15
|
+
Requires-Dist: jsonschema>=4.0
|
|
15
16
|
Requires-Dist: lxml>=6.0
|
|
16
17
|
Requires-Dist: markdown-it-py>=4.0
|
|
17
18
|
Requires-Dist: numpy>=2.3
|
|
@@ -14,6 +14,7 @@ dev = [
|
|
|
14
14
|
"docker>=7.1",
|
|
15
15
|
"fsspec>=2025.10",
|
|
16
16
|
"jinja2>=3.0",
|
|
17
|
+
"jsonschema>=4.0",
|
|
17
18
|
"lxml>=6.0",
|
|
18
19
|
"markdown-it-py>=4.0",
|
|
19
20
|
"numpy>=2.3",
|
|
@@ -60,6 +61,7 @@ dependencies = [
|
|
|
60
61
|
"docker>=7.1",
|
|
61
62
|
"fsspec>=2025.10",
|
|
62
63
|
"jinja2>=3.0",
|
|
64
|
+
"jsonschema>=4.0",
|
|
63
65
|
"lxml>=6.0",
|
|
64
66
|
"markdown-it-py>=4.0",
|
|
65
67
|
"numpy>=2.3",
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
$namespace: "unittest"
|
|
2
|
+
# language=markdown
|
|
3
|
+
$desc: !markdown |
|
|
4
|
+
**Unit Test Tagset**
|
|
5
|
+
|
|
6
|
+
A collection of tags designed for annotating and categorizing data in unit tests. This tagset includes categories
|
|
7
|
+
for camera views, radar views, LiDAR views, environmental conditions, and roadway characteristics. Each tag is
|
|
8
|
+
defined with a description that provides context for its use in unit testing scenarios, helping to ensure that
|
|
9
|
+
test cases are accurately annotated and can be easily understood by developers and testers.
|
|
10
|
+
$def:
|
|
11
|
+
anchored_tags:
|
|
12
|
+
&anchored_tags
|
|
13
|
+
anchored:
|
|
14
|
+
# language=markdown
|
|
15
|
+
$desc: !markdown |
|
|
16
|
+
Anchored tags that describe specific perspectives or viewpoints from which data is captured. These tags are
|
|
17
|
+
typically associated with sensor data and provide critical context for understanding the scene and the
|
|
18
|
+
information being analyzed. For example, camera views may include front center, front left, front right, side
|
|
19
|
+
left, side right, rear left, and rear right perspectives, while radar and LiDAR views may include unified,
|
|
20
|
+
bumper center, bumper left, bumper right, and similar perspectives.
|
|
21
|
+
$schema:
|
|
22
|
+
type: object
|
|
23
|
+
properties:
|
|
24
|
+
dummy_property:
|
|
25
|
+
description: "This is a dummy property that serves as a placeholder for the actual properties that would be defined under the anchored tags."
|
|
26
|
+
type: string
|
|
27
|
+
additionalProperties: true
|
|
28
|
+
another_anchored:
|
|
29
|
+
# language=markdown
|
|
30
|
+
$desc: !markdown |
|
|
31
|
+
Another set of anchored tags that describe specific perspectives or viewpoints from which data is captured.
|
|
32
|
+
These tags may be used in different contexts or for different types of sensors, but they serve a similar
|
|
33
|
+
purpose in providing critical context for understanding the scene and the information being analyzed.
|
|
34
|
+
$tags:
|
|
35
|
+
level_1_tag:
|
|
36
|
+
$desc: "This is a level 1 tag that provides a high-level categorization for the data."
|
|
37
|
+
$schema:
|
|
38
|
+
type: object
|
|
39
|
+
properties:
|
|
40
|
+
dummy_property:
|
|
41
|
+
description: "This is a dummy property that serves as a placeholder for the actual properties that would be defined under this level 1 tag."
|
|
42
|
+
type: string
|
|
43
|
+
additionalProperties: true
|
|
44
|
+
level_2_tag:
|
|
45
|
+
$desc: "This is a level 2 tag that provides a more specific categorization for the data."
|
|
46
|
+
level_3_tag: { $desc: "level 3 tag description", <<: *anchored_tags }
|
|
47
|
+
another_level_3_tag: { $desc: "another level 3 tag description" }
|
|
48
|
+
another_level_2_tag:
|
|
49
|
+
$desc: "This is another level 2 tag that provides a different specific categorization for the data."
|
|
50
|
+
$schema:
|
|
51
|
+
type: object
|
|
52
|
+
properties:
|
|
53
|
+
dummy_property:
|
|
54
|
+
description: "This is a dummy property that serves as a placeholder for the actual properties that would be defined under this level 2 tag."
|
|
55
|
+
type: object
|
|
56
|
+
properties:
|
|
57
|
+
dummy_sub_property:
|
|
58
|
+
description: "This is a dummy sub-property that serves as a placeholder for the actual sub-properties that would be defined under this dummy property."
|
|
59
|
+
type: string
|
|
60
|
+
additionalProperties: false
|
|
61
|
+
required: [ dummy_property ]
|
|
62
|
+
additionalProperties: true
|
|
63
|
+
<<: *anchored_tags
|
|
64
|
+
another_level_1_tag:
|
|
65
|
+
# language=markdown
|
|
66
|
+
$desc: !markdown |
|
|
67
|
+
This is another level 1 tag that provides a different high-level categorization for the data. It may be used
|
|
68
|
+
to group data based on different criteria or characteristics, such as environmental conditions, roadway
|
|
69
|
+
characteristics, or other relevant factors that are important for unit testing scenarios.
|
|
70
|
+
$schema:
|
|
71
|
+
type: object
|
|
72
|
+
properties:
|
|
73
|
+
dummy_elements:
|
|
74
|
+
description: "This is a dummy array property that serves as a placeholder for the actual array properties that would be defined under this level 1 tag."
|
|
75
|
+
type: array
|
|
76
|
+
items:
|
|
77
|
+
type: integer
|
|
78
|
+
minimum: 0
|
|
79
|
+
minItems: 1
|
|
80
|
+
maxItems: 3
|
|
81
|
+
required: [ dummy_elements ]
|
|
82
|
+
additionalProperties: true
|
|
83
|
+
level_2_tag:
|
|
84
|
+
# language=markdown
|
|
85
|
+
$desc: !markdown |
|
|
86
|
+
This is a level 2 tag that provides a more specific categorization for the data under the second level 1 tag.
|
|
87
|
+
It may be used to further refine the categorization based on specific criteria or characteristics relevant to
|
|
88
|
+
the second level 1 tag, such as different types of environmental conditions or roadway characteristics.
|
|
89
|
+
level_3_tag:
|
|
90
|
+
# language=markdown
|
|
91
|
+
$desc: !markdown |
|
|
92
|
+
This is a level 3 tag that provides an even more specific categorization for the data under the level 2 tag
|
|
93
|
+
of the second level 1 tag. It may be used to further refine the categorization based on very specific
|
|
94
|
+
criteria or characteristics relevant to the level 2 tag, such as specific weather conditions, road types,
|
|
95
|
+
or other detailed factors that are important for unit testing scenarios.
|
|
96
|
+
level_4_tag:
|
|
97
|
+
$desc: "This is a level 4 tag that provides an even more specific categorization for the data under the level 3 tag. Actually, you can have as many levels as you want, but for the sake of this example, we will stop at level 4."
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
$namespace: "universal"
|
|
2
2
|
# language=markdown
|
|
3
3
|
$desc: !markdown |
|
|
4
|
+
**Universal Tagset**
|
|
5
|
+
|
|
4
6
|
Universal tags applicable across various scenarios, environments, and data types. This tagset provides a common
|
|
5
7
|
vocabulary for describing key attributes of roadway scenes, traffic conditions, environmental factors, and data
|
|
6
8
|
quality issues relevant to autonomous driving and advanced driver-assistance systems (ADAS). The tags are organized
|
|
@@ -10,30 +12,282 @@ $desc: !markdown |
|
|
|
10
12
|
$def:
|
|
11
13
|
camera_views:
|
|
12
14
|
&camera_views
|
|
13
|
-
unified:
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
unified:
|
|
16
|
+
# language=markdown
|
|
17
|
+
$desc: !markdown |
|
|
18
|
+
**Unified Camera View**
|
|
19
|
+
|
|
20
|
+
A camera view that combines the fields of view from multiple cameras into a single, cohesive perspective. This
|
|
21
|
+
view is often used in perception systems to provide a comprehensive understanding of the environment by
|
|
22
|
+
integrating data from front, side, and rear cameras. The unified camera view can enhance object detection,
|
|
23
|
+
tracking, and scene understanding by providing a more complete visual representation of the surroundings.
|
|
24
|
+
|
|
25
|
+
Examples:
|
|
26
|
+
|
|
27
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
28
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
29
|
+
front_center:
|
|
30
|
+
# language=markdown
|
|
31
|
+
$desc: !markdown |
|
|
32
|
+
**Front Center Camera View**
|
|
33
|
+
|
|
34
|
+
A camera view that captures the area directly in front of the vehicle, typically aligned with the center of the
|
|
35
|
+
front bumper. This view is crucial for detecting and tracking objects such as vehicles, pedestrians, and
|
|
36
|
+
traffic signs in the path of travel. The front center camera provides critical information for lane keeping,
|
|
37
|
+
adaptive cruise control, and collision avoidance systems.
|
|
38
|
+
|
|
39
|
+
Examples:
|
|
40
|
+
|
|
41
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
42
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
43
|
+
front_left:
|
|
44
|
+
# language=markdown
|
|
45
|
+
$desc: !markdown |
|
|
46
|
+
**Front Left Camera View**
|
|
47
|
+
|
|
48
|
+
A camera view that captures the area to the front left of the vehicle, typically covering the left lane and
|
|
49
|
+
adjacent areas. This view is important for monitoring traffic in the left lane, detecting pedestrians or
|
|
50
|
+
cyclists approaching from the left, and providing situational awareness for lane changes and turns.
|
|
51
|
+
|
|
52
|
+
Examples:
|
|
53
|
+
|
|
54
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
55
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
56
|
+
front_right:
|
|
57
|
+
# language=markdown
|
|
58
|
+
$desc: !markdown |
|
|
59
|
+
**Front Right Camera View**
|
|
60
|
+
|
|
61
|
+
A camera view that captures the area to the front right of the vehicle, typically covering the right lane and
|
|
62
|
+
adjacent areas. This view is important for monitoring traffic in the right lane, detecting pedestrians or
|
|
63
|
+
cyclists approaching from the right, and providing situational awareness for lane changes and turns.
|
|
64
|
+
|
|
65
|
+
Examples:
|
|
66
|
+
|
|
67
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
68
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
69
|
+
side_left:
|
|
70
|
+
# language=markdown
|
|
71
|
+
$desc: !markdown |
|
|
72
|
+
**Side Left Camera View**
|
|
73
|
+
|
|
74
|
+
A camera view that captures the area directly to the left of the vehicle, typically covering the left side of
|
|
75
|
+
the roadway and adjacent areas. This view is important for monitoring traffic in the left lane, detecting
|
|
76
|
+
pedestrians or cyclists approaching from the left, and providing situational awareness for lane changes and
|
|
77
|
+
turns.
|
|
78
|
+
|
|
79
|
+
Examples:
|
|
80
|
+
|
|
81
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
82
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
83
|
+
side_right:
|
|
84
|
+
# language=markdown
|
|
85
|
+
$desc: !markdown |
|
|
86
|
+
**Side Right Camera View**
|
|
87
|
+
|
|
88
|
+
A camera view that captures the area directly to the right of the vehicle, typically covering the right side
|
|
89
|
+
of the roadway and adjacent areas. This view is important for monitoring traffic in the right lane, detecting
|
|
90
|
+
pedestrians or cyclists approaching from the right, and providing situational awareness for lane changes and
|
|
91
|
+
turns.
|
|
92
|
+
|
|
93
|
+
Examples:
|
|
94
|
+
|
|
95
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
96
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
97
|
+
rear_left:
|
|
98
|
+
# language=markdown
|
|
99
|
+
$desc: !markdown |
|
|
100
|
+
**Rear Left Camera View**
|
|
101
|
+
|
|
102
|
+
A camera view that captures the area to the rear left of the vehicle, typically covering the left rear lane
|
|
103
|
+
and adjacent areas. This view is important for monitoring traffic behind the vehicle, detecting pedestrians or
|
|
104
|
+
cyclists approaching from the rear left, and providing situational awareness for lane changes and turns.
|
|
105
|
+
|
|
106
|
+
Examples:
|
|
107
|
+
|
|
108
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
109
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
110
|
+
rear_right:
|
|
111
|
+
# language=markdown
|
|
112
|
+
$desc: !markdown |
|
|
113
|
+
**Rear Right Camera View**
|
|
114
|
+
|
|
115
|
+
A camera view that captures the area to the rear right of the vehicle, typically covering the right rear lane
|
|
116
|
+
and adjacent areas. This view is important for monitoring traffic behind the vehicle, detecting pedestrians or
|
|
117
|
+
cyclists approaching from the rear right, and providing situational awareness for lane changes and turns.
|
|
118
|
+
|
|
119
|
+
Examples:
|
|
120
|
+
|
|
121
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
122
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
21
123
|
radar_views:
|
|
22
124
|
&radar_views
|
|
23
|
-
unified:
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
125
|
+
unified:
|
|
126
|
+
# language=markdown
|
|
127
|
+
$desc: !markdown |
|
|
128
|
+
**Unified Radar View**
|
|
129
|
+
|
|
130
|
+
A radar view that combines the data from multiple radar sensors into a single, cohesive perspective. This view
|
|
131
|
+
is often used in perception systems to provide a comprehensive understanding of the environment by integrating
|
|
132
|
+
data from front, side, and rear radars. The unified radar view can enhance object detection, tracking, and
|
|
133
|
+
scene understanding by providing a more complete representation of the surroundings, especially in adverse
|
|
134
|
+
weather conditions where cameras may be less effective.
|
|
135
|
+
|
|
136
|
+
Examples:
|
|
137
|
+
|
|
138
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
139
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
140
|
+
bumper_center:
|
|
141
|
+
# language=markdown
|
|
142
|
+
$desc: !markdown |
|
|
143
|
+
**Bumper Center Radar View**
|
|
144
|
+
|
|
145
|
+
A radar view that captures the area directly in front of the vehicle, typically aligned with the center of the
|
|
146
|
+
front bumper. This view is crucial for detecting and tracking objects such as vehicles, pedestrians, and
|
|
147
|
+
traffic signs in the path of travel. The bumper center radar provides critical information for adaptive cruise
|
|
148
|
+
control, collision avoidance systems, and low-speed maneuvering.
|
|
149
|
+
|
|
150
|
+
Examples:
|
|
151
|
+
|
|
152
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
153
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
154
|
+
bumper_left:
|
|
155
|
+
# language=markdown
|
|
156
|
+
$desc: !markdown |
|
|
157
|
+
**Bumper Left Radar View**
|
|
158
|
+
|
|
159
|
+
A radar view that captures the area to the front left of the vehicle, typically covering the left lane and
|
|
160
|
+
adjacent areas. This view is important for monitoring traffic in the left lane, detecting pedestrians or
|
|
161
|
+
cyclists approaching from the left, and providing situational awareness for lane changes and turns.
|
|
162
|
+
|
|
163
|
+
Examples:
|
|
164
|
+
|
|
165
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
166
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
167
|
+
bumper_right:
|
|
168
|
+
# language=markdown
|
|
169
|
+
$desc: !markdown |
|
|
170
|
+
**Bumper Right Radar View**
|
|
171
|
+
|
|
172
|
+
A radar view that captures the area to the front right of the vehicle, typically covering the right lane and
|
|
173
|
+
adjacent areas. This view is important for monitoring traffic in the right lane, detecting pedestrians or
|
|
174
|
+
cyclists approaching from the right, and providing situational awareness for lane changes and turns.
|
|
175
|
+
|
|
176
|
+
Examples:
|
|
177
|
+
|
|
178
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
179
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
27
180
|
lidar_views:
|
|
28
181
|
&lidar_views
|
|
29
|
-
unified:
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
182
|
+
unified:
|
|
183
|
+
# language=markdown
|
|
184
|
+
$desc: !markdown |
|
|
185
|
+
**Unified LiDAR View**
|
|
186
|
+
|
|
187
|
+
A LiDAR view that combines the point cloud data from multiple LiDAR sensors into a single, cohesive
|
|
188
|
+
perspective. This view is often used in perception systems to provide a comprehensive understanding of the
|
|
189
|
+
environment by integrating data from front, side, and rear LiDAR sensors. The unified LiDAR view can enhance
|
|
190
|
+
object detection, tracking, and scene understanding by providing a more complete representation of the
|
|
191
|
+
surroundings, especially in low-light or adverse weather conditions where cameras may be less effective.
|
|
192
|
+
|
|
193
|
+
Examples:
|
|
194
|
+
|
|
195
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
196
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
197
|
+
front_center:
|
|
198
|
+
# language=markdown
|
|
199
|
+
$desc: !markdown |
|
|
200
|
+
**Front Center LiDAR View**
|
|
201
|
+
|
|
202
|
+
A LiDAR view that captures the area directly in front of the vehicle, typically aligned with the center of the
|
|
203
|
+
front bumper. This view is crucial for detecting and tracking objects such as vehicles, pedestrians, and
|
|
204
|
+
traffic signs in the path of travel. The front center LiDAR provides critical information for lane keeping,
|
|
205
|
+
adaptive cruise control, and collision avoidance systems.
|
|
206
|
+
|
|
207
|
+
Examples:
|
|
208
|
+
|
|
209
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
210
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
211
|
+
front_left:
|
|
212
|
+
# language=markdown
|
|
213
|
+
$desc: !markdown |
|
|
214
|
+
**Front Left LiDAR View**
|
|
215
|
+
|
|
216
|
+
A LiDAR view that captures the area to the front left of the vehicle, typically covering the left lane and
|
|
217
|
+
adjacent areas. This view is important for monitoring traffic in the left lane, detecting pedestrians or
|
|
218
|
+
cyclists approaching from the left, and providing situational awareness for lane changes and turns.
|
|
219
|
+
|
|
220
|
+
Examples:
|
|
221
|
+
|
|
222
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
223
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
224
|
+
front_right:
|
|
225
|
+
# language=markdown
|
|
226
|
+
$desc: !markdown |
|
|
227
|
+
**Front Right LiDAR View**
|
|
228
|
+
|
|
229
|
+
A LiDAR view that captures the area to the front right of the vehicle, typically covering the right lane and
|
|
230
|
+
adjacent areas. This view is important for monitoring traffic in the right lane, detecting pedestrians or
|
|
231
|
+
cyclists approaching from the right, and providing situational awareness for lane changes and turns.
|
|
232
|
+
|
|
233
|
+
Examples:
|
|
234
|
+
|
|
235
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
236
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
237
|
+
side_left:
|
|
238
|
+
# language=markdown
|
|
239
|
+
$desc: !markdown |
|
|
240
|
+
**Side Left LiDAR View**
|
|
241
|
+
|
|
242
|
+
A LiDAR view that captures the area directly to the left of the vehicle, typically covering the left side of
|
|
243
|
+
the roadway and adjacent areas. This view is important for monitoring traffic in the left lane, detecting
|
|
244
|
+
pedestrians or cyclists approaching from the left, and providing situational awareness for lane changes and
|
|
245
|
+
turns.
|
|
246
|
+
|
|
247
|
+
Examples:
|
|
248
|
+
|
|
249
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
250
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
251
|
+
side_right:
|
|
252
|
+
# language=markdown
|
|
253
|
+
$desc: !markdown |
|
|
254
|
+
**Side Right LiDAR View**
|
|
255
|
+
|
|
256
|
+
A LiDAR view that captures the area directly to the right of the vehicle, typically covering the right side of
|
|
257
|
+
the roadway and adjacent areas. This view is important for monitoring traffic in the right lane, detecting
|
|
258
|
+
pedestrians or cyclists approaching from the right, and providing situational awareness for lane changes and
|
|
259
|
+
turns.
|
|
260
|
+
|
|
261
|
+
Examples:
|
|
262
|
+
|
|
263
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
264
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
265
|
+
rear_left:
|
|
266
|
+
# language=markdown
|
|
267
|
+
$desc: !markdown |
|
|
268
|
+
**Rear Left LiDAR View**
|
|
269
|
+
|
|
270
|
+
A LiDAR view that captures the area to the rear left of the vehicle, typically covering the left rear lane
|
|
271
|
+
and adjacent areas. This view is important for monitoring traffic behind the vehicle, detecting pedestrians or
|
|
272
|
+
cyclists approaching from the rear left, and providing situational awareness for lane changes and turns.
|
|
273
|
+
|
|
274
|
+
Examples:
|
|
275
|
+
|
|
276
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
277
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
278
|
+
rear_right:
|
|
279
|
+
# language=markdown
|
|
280
|
+
$desc: !markdown |
|
|
281
|
+
**Rear Right LiDAR View**
|
|
282
|
+
|
|
283
|
+
A LiDAR view that captures the area to the rear right of the vehicle, typically covering the right rear lane
|
|
284
|
+
and adjacent areas. This view is important for monitoring traffic behind the vehicle, detecting pedestrians or
|
|
285
|
+
cyclists approaching from the rear right, and providing situational awareness for lane changes and turns.
|
|
286
|
+
|
|
287
|
+
Examples:
|
|
288
|
+
|
|
289
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
290
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
37
291
|
$tags:
|
|
38
292
|
environment:
|
|
39
293
|
# language=markdown
|
|
@@ -479,27 +733,111 @@ $tags:
|
|
|
479
733
|
# language=markdown
|
|
480
734
|
$desc: !markdown |
|
|
481
735
|
Roadway layout types that describe the overall configuration of the road and its lanes. These tags capture
|
|
482
|
-
specific layout types such as single way, undivided two
|
|
736
|
+
specific layout types such as single way, undivided two-way, divided two-way, and unknown. Each layout type has
|
|
483
737
|
unique implications for traffic flow, driver behavior, and sensor coverage, making them important for scenario
|
|
484
738
|
analysis and data annotation. For example, a single way layout typically involves one lane of traffic in each
|
|
485
|
-
direction with no physical separation, while a divided two
|
|
739
|
+
direction with no physical separation, while a divided two-way layout includes a physical barrier or median
|
|
486
740
|
separating opposing traffic flows.
|
|
487
|
-
single_way:
|
|
488
|
-
|
|
489
|
-
|
|
741
|
+
single_way:
|
|
742
|
+
# language=markdown
|
|
743
|
+
$desc: !markdown |
|
|
744
|
+
**Single Way Layout**
|
|
745
|
+
|
|
746
|
+
A roadway configuration where traffic flows in both directions without any physical separation, such as a
|
|
747
|
+
centerline or median. This layout typically involves one lane of traffic in each direction, and drivers must
|
|
748
|
+
exercise caution when passing or making turns due to the potential for head-on collisions. Sensor coverage
|
|
749
|
+
may be more challenging in single way layouts due to the lack of clear lane boundaries and the presence of
|
|
750
|
+
oncoming traffic.
|
|
751
|
+
|
|
752
|
+
Examples:
|
|
753
|
+
|
|
754
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
755
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
756
|
+
undivided_two_way:
|
|
757
|
+
# language=markdown
|
|
758
|
+
$desc: !markdown |
|
|
759
|
+
**Undivided Two Way Layout**
|
|
760
|
+
|
|
761
|
+
A roadway configuration where traffic flows in both directions with a painted centerline but no physical
|
|
762
|
+
separation, such as a median or barrier. This layout typically involves one lane of traffic in each direction,
|
|
763
|
+
and drivers must exercise caution when passing or making turns due to the potential for head-on collisions.
|
|
764
|
+
Sensor coverage may be more challenging in undivided two-way layouts due to the presence of oncoming traffic
|
|
765
|
+
and the potential for lane departures.
|
|
766
|
+
|
|
767
|
+
Examples:
|
|
768
|
+
|
|
769
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
770
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
771
|
+
divided_two_way:
|
|
772
|
+
# language=markdown
|
|
773
|
+
$desc: !markdown |
|
|
774
|
+
**Divided Two Way Layout**
|
|
775
|
+
|
|
776
|
+
A roadway configuration where traffic flows in both directions with a physical separation, such as a median or
|
|
777
|
+
barrier. This layout typically involves one or more lanes of traffic in each direction, and the physical
|
|
778
|
+
separation helps to reduce the risk of head-on collisions. Sensor coverage may be improved in divided two-way
|
|
779
|
+
layouts due to the presence of clear lane boundaries and reduced interaction with oncoming traffic.
|
|
780
|
+
|
|
781
|
+
Examples:
|
|
782
|
+
|
|
783
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
784
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
490
785
|
unknown: { $desc: "unknown" }
|
|
491
786
|
lane_config:
|
|
492
787
|
# language=markdown
|
|
493
788
|
$desc: !markdown |
|
|
494
789
|
Lane configuration types that describe the number and arrangement of lanes on the roadway. These tags capture
|
|
495
|
-
specific lane configurations such as single lane, two lane, multi
|
|
790
|
+
specific lane configurations such as single lane, two lane, multi-lane, and unknown. Each configuration has
|
|
496
791
|
unique implications for traffic flow, driver behavior, and sensor coverage, making them important for scenario
|
|
497
792
|
analysis and data annotation. For example, a single lane configuration typically involves one lane of traffic in
|
|
498
|
-
each direction with no passing allowed, while a multi
|
|
793
|
+
each direction with no passing allowed, while a multi-lane configuration includes multiple lanes in each
|
|
499
794
|
direction with opportunities for passing and lane changes.
|
|
500
|
-
single_lane:
|
|
501
|
-
|
|
502
|
-
|
|
795
|
+
single_lane:
|
|
796
|
+
# language=markdown
|
|
797
|
+
$desc: !markdown |
|
|
798
|
+
**Single Lane Configuration**
|
|
799
|
+
|
|
800
|
+
A roadway configuration where there is only one lane of traffic in each direction, with no opportunities for
|
|
801
|
+
passing or lane changes. This configuration typically involves a centerline to separate opposing traffic
|
|
802
|
+
flows,
|
|
803
|
+
and drivers must exercise caution when making turns or navigating around obstacles due to the potential for
|
|
804
|
+
head-on collisions. Sensor coverage may be more challenging in single lane configurations due to the presence
|
|
805
|
+
of oncoming traffic and the potential for lane departures.
|
|
806
|
+
|
|
807
|
+
Examples:
|
|
808
|
+
|
|
809
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
810
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
811
|
+
two_lane:
|
|
812
|
+
# language=markdown
|
|
813
|
+
$desc: !markdown |
|
|
814
|
+
**Two Lane Configuration**
|
|
815
|
+
|
|
816
|
+
A roadway configuration where there are two lanes of traffic in each direction, allowing for passing and lane
|
|
817
|
+
changes. This configuration typically involves a centerline to separate opposing traffic flows, and drivers
|
|
818
|
+
must exercise caution when making turns or navigating around obstacles due to the potential for head-on
|
|
819
|
+
collisions. Sensor coverage may be improved in two lane configurations due to the presence of clear lane
|
|
820
|
+
boundaries and reduced interaction with oncoming traffic.
|
|
821
|
+
|
|
822
|
+
Examples:
|
|
823
|
+
|
|
824
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
825
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
826
|
+
multi_lane:
|
|
827
|
+
# language=markdown
|
|
828
|
+
$desc: !markdown |
|
|
829
|
+
**Multi Lane Configuration**
|
|
830
|
+
|
|
831
|
+
A roadway configuration where there are multiple lanes of traffic in each direction, allowing for passing,
|
|
832
|
+
lane changes, and higher traffic volumes. This configuration typically involves a centerline to separate
|
|
833
|
+
opposing traffic flows, and drivers must exercise caution when making turns or navigating around obstacles due
|
|
834
|
+
to the potential for head-on collisions. Sensor coverage may be improved in multi-lane configurations due to
|
|
835
|
+
the presence of clear lane boundaries and reduced interaction with oncoming traffic.
|
|
836
|
+
|
|
837
|
+
Examples:
|
|
838
|
+
|
|
839
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
840
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
503
841
|
unknown: { $desc: "unknown" }
|
|
504
842
|
shoulder:
|
|
505
843
|
# language=markdown
|
|
@@ -531,11 +869,11 @@ $tags:
|
|
|
531
869
|
**Median Shoulder**
|
|
532
870
|
|
|
533
871
|
A shoulder area located in the median between opposing traffic flows, often separated by a physical barrier or
|
|
534
|
-
marked with a painted buffer. Median shoulders can provide a refuge area for disabled vehicles and may
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
872
|
+
marked with a painted buffer. Median shoulders can provide a refuge area for disabled vehicles and may enhance
|
|
873
|
+
safety by separating opposing traffic, but they may also have limited width and accessibility. Drivers may use
|
|
874
|
+
median shoulders for emergency stops or to avoid obstacles, but they should exercise caution due to potential
|
|
875
|
+
traffic from both directions. Sensor coverage in median shoulders may be limited, making them an important
|
|
876
|
+
consideration for scenario analysis and data annotation.
|
|
539
877
|
|
|
540
878
|
Examples:
|
|
541
879
|
|
|
@@ -747,9 +1085,52 @@ $tags:
|
|
|
747
1085
|
for driving behavior, vehicle dynamics, and sensor performance, making them important for scenario analysis and
|
|
748
1086
|
data annotation. For example, tunnels can create confined spaces with limited visibility and unique lighting
|
|
749
1087
|
conditions, while bridges/overpasses may involve elevation changes and exposure to wind.
|
|
750
|
-
tunnel:
|
|
751
|
-
|
|
752
|
-
|
|
1088
|
+
tunnel:
|
|
1089
|
+
# language=markdown
|
|
1090
|
+
$desc: !markdown |
|
|
1091
|
+
**Tunnel**
|
|
1092
|
+
|
|
1093
|
+
A roadway feature that involves a passage through or under a structure, such as a mountain, hill, or urban
|
|
1094
|
+
area. Tunnels can create confined spaces with limited visibility and unique lighting conditions, which can
|
|
1095
|
+
affect driver behavior and sensor performance. Drivers may need to adjust their speed and following distance
|
|
1096
|
+
when entering or exiting tunnels due to changes in visibility and road conditions. Sensor coverage in tunnels
|
|
1097
|
+
may be limited, making them an important consideration for scenario analysis and data annotation.
|
|
1098
|
+
|
|
1099
|
+
Examples:
|
|
1100
|
+
|
|
1101
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
1102
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
1103
|
+
bridge:
|
|
1104
|
+
# language=markdown
|
|
1105
|
+
$desc: !markdown |
|
|
1106
|
+
**Bridge/Overpass**
|
|
1107
|
+
|
|
1108
|
+
A roadway feature that involves a structure spanning a physical obstacle, such as a river, valley, or another
|
|
1109
|
+
road. Bridges and overpasses may involve elevation changes and exposure to wind, which can affect driver
|
|
1110
|
+
behavior and vehicle dynamics. Drivers may need to adjust their speed and following distance when crossing
|
|
1111
|
+
bridges or overpasses due to changes in road conditions and potential crosswinds. Sensor coverage on bridges
|
|
1112
|
+
and overpasses may be affected by the structure itself, making them an important consideration for scenario
|
|
1113
|
+
analysis and data annotation.
|
|
1114
|
+
|
|
1115
|
+
Examples:
|
|
1116
|
+
|
|
1117
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
1118
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
1119
|
+
underpass:
|
|
1120
|
+
# language=markdown
|
|
1121
|
+
$desc: !markdown |
|
|
1122
|
+
**Underpass**
|
|
1123
|
+
|
|
1124
|
+
A roadway feature that involves a passage under a structure, such as a bridge, railway, or urban area.
|
|
1125
|
+
Underpasses can create confined spaces with limited visibility and unique lighting conditions, which can
|
|
1126
|
+
affect driver behavior and sensor performance. Drivers may need to adjust their speed and following distance
|
|
1127
|
+
when entering or exiting underpasses due to changes in visibility and road conditions. Sensor coverage in
|
|
1128
|
+
underpasses may be limited, making them an important consideration for scenario analysis and data annotation.
|
|
1129
|
+
|
|
1130
|
+
Examples:
|
|
1131
|
+
|
|
1132
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
1133
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
753
1134
|
unknown: { $desc: "unknown" }
|
|
754
1135
|
geometry:
|
|
755
1136
|
# language=markdown
|
|
@@ -760,11 +1141,108 @@ $tags:
|
|
|
760
1141
|
them important for scenario analysis and data annotation. For example, a straight segment typically allows for
|
|
761
1142
|
higher speeds and better visibility, while a curved segment may require more cautious driving and can create
|
|
762
1143
|
blind spots.
|
|
763
|
-
curved:
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
1144
|
+
curved:
|
|
1145
|
+
# language=markdown
|
|
1146
|
+
$desc: !markdown |
|
|
1147
|
+
**Curved Segment**
|
|
1148
|
+
|
|
1149
|
+
A roadway segment that features a horizontal curvature, requiring drivers to navigate a bend in the road.
|
|
1150
|
+
Curved segments can vary in radius and degree of curvature, affecting vehicle dynamics and driver behavior.
|
|
1151
|
+
Drivers may need to reduce speed and adjust their steering when navigating curved segments, especially if the
|
|
1152
|
+
curve is sharp or if visibility is limited. Sensor performance may also be affected by curved segments due to
|
|
1153
|
+
changes in the field of view and potential occlusions.
|
|
1154
|
+
|
|
1155
|
+
Examples:
|
|
1156
|
+
|
|
1157
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
1158
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
1159
|
+
$schema:
|
|
1160
|
+
type: object
|
|
1161
|
+
properties:
|
|
1162
|
+
curvature_radius:
|
|
1163
|
+
type: number
|
|
1164
|
+
description: "The radius of the curve in meters"
|
|
1165
|
+
minimum: 0
|
|
1166
|
+
required: [ curvature_radius ]
|
|
1167
|
+
additionalProperties: true
|
|
1168
|
+
incline:
|
|
1169
|
+
# language=markdown
|
|
1170
|
+
$desc: !markdown |
|
|
1171
|
+
**Incline Segment**
|
|
1172
|
+
|
|
1173
|
+
A roadway segment that features a positive vertical grade, requiring drivers to navigate an uphill slope.
|
|
1174
|
+
Incline segments can vary in steepness and length, affecting vehicle dynamics and driver behavior. Drivers may
|
|
1175
|
+
need to reduce speed and adjust their acceleration when navigating incline segments, especially if the incline
|
|
1176
|
+
is steep or if the vehicle is heavily loaded. Sensor performance may also be affected by incline segments due
|
|
1177
|
+
to changes in the field of view and potential occlusions.
|
|
1178
|
+
|
|
1179
|
+
Examples:
|
|
1180
|
+
|
|
1181
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
1182
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
1183
|
+
$schema:
|
|
1184
|
+
type: object
|
|
1185
|
+
properties:
|
|
1186
|
+
grade_percentage:
|
|
1187
|
+
type: number
|
|
1188
|
+
description: "The grade of the incline in percentage"
|
|
1189
|
+
minimum: 0
|
|
1190
|
+
required: [ grade_percentage ]
|
|
1191
|
+
additionalProperties: false
|
|
1192
|
+
decline:
|
|
1193
|
+
# language=markdown
|
|
1194
|
+
$desc: !markdown |
|
|
1195
|
+
**Decline Segment**
|
|
1196
|
+
|
|
1197
|
+
A roadway segment that features a negative vertical grade, requiring drivers to navigate a downhill slope.
|
|
1198
|
+
Decline segments can vary in steepness and length, affecting vehicle dynamics and driver behavior. Drivers may
|
|
1199
|
+
need to reduce speed and adjust their braking when navigating decline segments, especially if the decline is
|
|
1200
|
+
steep or if the vehicle is heavily loaded. Sensor performance may also be affected by decline segments due to
|
|
1201
|
+
changes in the field of view and potential occlusions.
|
|
1202
|
+
|
|
1203
|
+
Examples:
|
|
1204
|
+
|
|
1205
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
1206
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
1207
|
+
$schema:
|
|
1208
|
+
type: object
|
|
1209
|
+
properties:
|
|
1210
|
+
grade_percentage:
|
|
1211
|
+
type: number
|
|
1212
|
+
description: "The grade of the decline in percentage"
|
|
1213
|
+
maximum: 0
|
|
1214
|
+
required: [ grade_percentage ]
|
|
1215
|
+
additionalProperties: false
|
|
1216
|
+
hill_crest:
|
|
1217
|
+
# language=markdown
|
|
1218
|
+
$desc: !markdown |
|
|
1219
|
+
**Hill Crest Segment**
|
|
1220
|
+
|
|
1221
|
+
A roadway segment that features a vertical crest, where the road reaches a high point before descending. Hill
|
|
1222
|
+
crest segments can create blind spots and limited visibility for drivers, affecting driver behavior and sensor
|
|
1223
|
+
performance. Drivers may need to reduce speed and exercise caution when navigating hill crest segments,
|
|
1224
|
+
especially if the crest is sharp or if there are potential obstacles on the other side. Sensor coverage may
|
|
1225
|
+
also be affected by hill crest segments due to changes in the field of view and potential occlusions.
|
|
1226
|
+
|
|
1227
|
+
Examples:
|
|
1228
|
+
|
|
1229
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
1230
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
1231
|
+
sag:
|
|
1232
|
+
# language=markdown
|
|
1233
|
+
$desc: !markdown |
|
|
1234
|
+
**Sag Segment**
|
|
1235
|
+
|
|
1236
|
+
A roadway segment that features a vertical sag, where the road dips down before ascending. Sag segments can
|
|
1237
|
+
create blind spots and limited visibility for drivers, affecting driver behavior and sensor performance.
|
|
1238
|
+
Drivers may need to reduce speed and exercise caution when navigating sag segments, especially if the sag is
|
|
1239
|
+
sharp or if there are potential obstacles in the dip. Sensor coverage may also be affected by sag segments due
|
|
1240
|
+
to changes in the field of view and potential occlusions.
|
|
1241
|
+
|
|
1242
|
+
Examples:
|
|
1243
|
+
|
|
1244
|
+
- [Case 1](https://image-search.plexus.ai/particular_case_image)
|
|
1245
|
+
- [Case 2](https://image-search.plexus.ai/particular_case_image)
|
|
768
1246
|
traffic:
|
|
769
1247
|
# language=markdown
|
|
770
1248
|
$desc: !markdown |
|
{plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/tagutils.py
RENAMED
|
@@ -10,6 +10,7 @@ from collections.abc import Generator, Mapping, Sequence
|
|
|
10
10
|
from typing import Self
|
|
11
11
|
|
|
12
12
|
import jinja2
|
|
13
|
+
import jsonschema
|
|
13
14
|
import pydantic as pdt
|
|
14
15
|
import sqlalchemy as sa
|
|
15
16
|
import sqlalchemy.dialects.sqlite as sa_sqlite
|
|
@@ -60,6 +61,7 @@ class RichDesc(object):
|
|
|
60
61
|
class Tag(object):
|
|
61
62
|
name: str
|
|
62
63
|
desc: str | RichDesc | None
|
|
64
|
+
schema: JsonObject | None = None
|
|
63
65
|
|
|
64
66
|
@property
|
|
65
67
|
def tag_parts(self) -> list[str]:
|
|
@@ -69,6 +71,17 @@ class Tag(object):
|
|
|
69
71
|
def parent_tag_name(self) -> str | None:
|
|
70
72
|
return head_or_none(self.name.rsplit(":", 1))
|
|
71
73
|
|
|
74
|
+
def validate(self, props: JsonType | None, *, raise_on_error: bool = False) -> bool:
|
|
75
|
+
if self.schema is None or props is None:
|
|
76
|
+
return True
|
|
77
|
+
try:
|
|
78
|
+
jsonschema.Draft7Validator(self.schema).validate(props)
|
|
79
|
+
return True
|
|
80
|
+
except (jsonschema.ValidationError, jsonschema.SchemaError):
|
|
81
|
+
if raise_on_error:
|
|
82
|
+
raise
|
|
83
|
+
return False
|
|
84
|
+
|
|
72
85
|
|
|
73
86
|
class Tagset(Sequence[Tag], Mapping[str, Tag]):
|
|
74
87
|
def __init__(self, namespace: str, desc: str | RichDesc) -> None:
|
|
@@ -132,6 +145,10 @@ class Tagset(Sequence[Tag], Mapping[str, Tag]):
|
|
|
132
145
|
|
|
133
146
|
return list(dicttree_lineage(self.tags_tree, child.tag_parts[:-1]))
|
|
134
147
|
|
|
148
|
+
def validate(self, tag_name: str, props: JsonType | None, *, raise_on_error: bool = False) -> bool:
|
|
149
|
+
tag = self.get(tag_name)
|
|
150
|
+
return False if tag is None else tag.validate(props, raise_on_error=raise_on_error)
|
|
151
|
+
|
|
135
152
|
|
|
136
153
|
class MutableTagset(Tagset):
|
|
137
154
|
|
|
@@ -201,10 +218,17 @@ def populate_tagset(tagset_spec: JsonObject) -> Tagset:
|
|
|
201
218
|
if isinstance(desc, dict):
|
|
202
219
|
desc = RichDesc(**desc)
|
|
203
220
|
|
|
204
|
-
|
|
221
|
+
schema = tag_def.get("$schema")
|
|
222
|
+
if schema is not None:
|
|
223
|
+
try:
|
|
224
|
+
jsonschema.Draft7Validator.check_schema(schema)
|
|
225
|
+
except jsonschema.SchemaError as e:
|
|
226
|
+
raise ValueError(f"invalid JSON schema for tag '{name}'") from e
|
|
227
|
+
|
|
228
|
+
yield Tag(name=name, desc=desc, schema=schema)
|
|
205
229
|
|
|
206
230
|
for child_name, child_tag_def in tag_def.items():
|
|
207
|
-
if child_name
|
|
231
|
+
if child_name in ("$desc", "$schema"):
|
|
208
232
|
continue
|
|
209
233
|
|
|
210
234
|
if not isinstance(child_name, str):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: plexus-python-common
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.56
|
|
4
4
|
Classifier: Programming Language :: Python :: 3
|
|
5
5
|
Classifier: Programming Language :: Python :: 3.12
|
|
6
6
|
Classifier: Programming Language :: Python :: 3.13
|
|
@@ -12,6 +12,7 @@ Requires-Dist: boto3-stubs[s3]<1.42,>=1.41
|
|
|
12
12
|
Requires-Dist: docker>=7.1
|
|
13
13
|
Requires-Dist: fsspec>=2025.10
|
|
14
14
|
Requires-Dist: jinja2>=3.0
|
|
15
|
+
Requires-Dist: jsonschema>=4.0
|
|
15
16
|
Requires-Dist: lxml>=6.0
|
|
16
17
|
Requires-Dist: markdown-it-py>=4.0
|
|
17
18
|
Requires-Dist: numpy>=2.3
|
|
@@ -48,6 +48,7 @@ src/plexus/common/carto/OSMWay.py
|
|
|
48
48
|
src/plexus/common/carto/__init__.py
|
|
49
49
|
src/plexus/common/resources/__init__.py
|
|
50
50
|
src/plexus/common/resources/tags/__init__.py
|
|
51
|
+
src/plexus/common/resources/tags/unittest.tagset.yaml
|
|
51
52
|
src/plexus/common/resources/tags/universal.tagset.yaml
|
|
52
53
|
src/plexus/common/utils/__init__.py
|
|
53
54
|
src/plexus/common/utils/apiutils.py
|
|
@@ -6,6 +6,7 @@ import unittest
|
|
|
6
6
|
|
|
7
7
|
import ddt
|
|
8
8
|
from iker.common.utils.dtutils import dt_parse_iso
|
|
9
|
+
from iker.common.utils.jsonutils import JsonObject
|
|
9
10
|
|
|
10
11
|
from plexus.common.utils.tagutils import MutableTagset, Tag, TagCache, Tagset
|
|
11
12
|
from plexus.common.utils.tagutils import predefined_tagsets, render_tagset_markdown_readme
|
|
@@ -32,6 +33,54 @@ class TagUtilsTest(unittest.TestCase):
|
|
|
32
33
|
|
|
33
34
|
print(markdown)
|
|
34
35
|
|
|
36
|
+
data_tag_validate = [
|
|
37
|
+
("level_1_tag", {"dummy_property": "dummy_value"}, True,),
|
|
38
|
+
|
|
39
|
+
# extra keys should not cause validation failure, as specified in the schema with
|
|
40
|
+
# "additionalProperties": True
|
|
41
|
+
("level_1_tag", {"dummy_property": "dummy_value", "extra_key": True}, True,),
|
|
42
|
+
|
|
43
|
+
# missing keys should not cause validation failure, as specified in the schema with "required": []
|
|
44
|
+
("level_1_tag", {"extra_key": True}, True,),
|
|
45
|
+
|
|
46
|
+
# schema absence should not cause validation failure
|
|
47
|
+
("level_1_tag:level_2_tag", {"dummy_property": "dummy_value"}, True,),
|
|
48
|
+
|
|
49
|
+
("level_1_tag:another_level_2_tag", {"dummy_property": {"dummy_sub_property": "dummy_value"}}, True,),
|
|
50
|
+
|
|
51
|
+
# extra keys in nested properties should cause validation failure, as specified in the schema with
|
|
52
|
+
# "additionalProperties": False
|
|
53
|
+
("level_1_tag:another_level_2_tag",
|
|
54
|
+
{"dummy_property": {"dummy_sub_property": "dummy_value", "extra_key": True}},
|
|
55
|
+
False,),
|
|
56
|
+
|
|
57
|
+
# bad type in nested properties should cause validation failure
|
|
58
|
+
("level_1_tag:another_level_2_tag",
|
|
59
|
+
{"dummy_property": {"dummy_sub_property": 0}},
|
|
60
|
+
False,),
|
|
61
|
+
|
|
62
|
+
# at least one element should be present in the array, as specified in the schema with "minItems": 1
|
|
63
|
+
("another_level_1_tag", {"dummy_elements": []}, False,),
|
|
64
|
+
|
|
65
|
+
# at most 3 elements should be present in the array, as specified in the schema with "maxItems": 3
|
|
66
|
+
("another_level_1_tag", {"dummy_elements": [1, 2, 3, 4, 5]}, False,),
|
|
67
|
+
|
|
68
|
+
# integers in the array should be non-negative, as specified in the schema with "minimum": 0
|
|
69
|
+
("another_level_1_tag", {"dummy_elements": [-1]}, False,),
|
|
70
|
+
]
|
|
71
|
+
|
|
72
|
+
@ddt.idata(data_tag_validate)
|
|
73
|
+
@ddt.unpack
|
|
74
|
+
def test_tag_validate(self, tag: str, props: JsonObject, should_pass: bool):
|
|
75
|
+
tagset = predefined_tagsets().get("unittest")
|
|
76
|
+
|
|
77
|
+
if should_pass:
|
|
78
|
+
self.assertTrue(tagset.validate(tag, props))
|
|
79
|
+
else:
|
|
80
|
+
self.assertFalse(tagset.validate(tag, props))
|
|
81
|
+
with self.assertRaises(Exception):
|
|
82
|
+
tagset.validate(tag, props, raise_on_error=True)
|
|
83
|
+
|
|
35
84
|
def test_tag_cache(self):
|
|
36
85
|
tagset = MutableTagset(namespace="tagset", desc="A dummy tagset for testing")
|
|
37
86
|
tagset.add(Tag(name="dummy:foo", desc="A dummy tag for testing"))
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/pathutils/0-dummy
RENAMED
|
File without changes
|
{plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/pathutils/1-dummy
RENAMED
|
File without changes
|
{plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/pathutils/2-dummy
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/resources/unittest/pathutils/dummy.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/carto/OSMFile.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/carto/OSMNode.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/carto/OSMTags.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/carto/OSMWay.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/carto/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/resources/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/__init__.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/apiutils.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/bagutils.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/config.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/datautils.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/dockerutils.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/jsonutils.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/ormutils.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/pathutils.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/s3utils.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/sqlutils.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/strutils.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/src/plexus/common/utils/testutils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/test/plexus_tests/common/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/test/plexus_tests/common/pose_test.py
RENAMED
|
File without changes
|
{plexus_python_common-1.0.55 → plexus_python_common-1.0.56}/test/plexus_tests/common/proj_test.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|