Skip to content

Draft for discussion: Surface lines to model road shapes and heights #600

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 219 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
219 commits
Select commit Hold shift + click to select a range
d1344a3
revert matrix multiplication order of rotations
Mar 11, 2021
cc9d146
change preferred angular ranges
Mar 11, 2021
d6488f2
removed cones as an example from TYPE_CONSTRUCTION_SITE_ELEMENT becau…
Mar 15, 2021
ca2a5a9
feat(docs): Create initial document structure (#494)
max-rosin Mar 31, 2021
0edbd11
Describe installation under Linux and Windows (#518)
max-rosin May 10, 2021
7737b0d
feat(docs): Add topics to submap (#518)
max-rosin May 10, 2021
3a73411
Add color orange as suggested in issue #504 - Harmonization of road m…
MarcelOliver Apr 15, 2021
66cf331
Added release notes for 3.3.0
vkresch Feb 17, 2021
e1cb86a
updated release notes for bugfix
Apr 26, 2021
a0d0b6d
Remove obsolete image and update release notes
pmai Apr 28, 2021
61fcd4d
Initial GitHub Actions CPP ProtoBuf Build
pmai Jan 14, 2021
37e75c0
Add Python ProtoBuf build
pmai Jan 14, 2021
f304937
add attribute country, country_revision, code and sub_code to traffic…
MarcelOliver Feb 11, 2021
8c45cae
Use string for country type. For country specification see ISO 3166-1…
MarcelOliver Feb 18, 2021
c04587a
mark possible deprecated messages
MarcelOliver Feb 18, 2021
06f5465
mark possible deprecated messages
MarcelOliver Feb 18, 2021
968f976
Modified comment to mark as deprecated in a uniform way - enum actor
MarcelOliver Apr 22, 2021
c187f0d
Modified comment to mark as deprecated in a uniform way - enum Direction
MarcelOliver Apr 22, 2021
6796cbf
Modified comment to mark as deprecated in a uniform way - type
MarcelOliver Apr 22, 2021
497b438
Modified comment to mark as deprecated in a uniform way - DirectionScope
MarcelOliver Apr 22, 2021
3a3a4e8
Modified comment to mark as deprecated in a uniform way - vertically_…
MarcelOliver Apr 22, 2021
ae5dab9
Modified comment to mark as deprecated in a uniform way - Type
MarcelOliver Apr 22, 2021
da96fc7
Modified comment to mark as deprecated in a uniform way - Type type
MarcelOliver Apr 22, 2021
7c10aad
Modified comment to mark as deprecated in a uniform way - Actor actor
MarcelOliver Apr 22, 2021
86dbd3b
Modified comment to mark as deprecated in a uniform way - Arrow arrow
MarcelOliver Apr 22, 2021
9c3fc88
Modified comment to mark as deprecated in a uniform way - Type
MarcelOliver Apr 22, 2021
7d39141
Modified comment to mark as deprecated in a uniform way
MarcelOliver Apr 22, 2021
3a2529d
add examples for country and country_revision in comment
MarcelOliver Apr 22, 2021
a495167
correct example for ISO 3166-1 alpha-2 code
MarcelOliver May 10, 2021
9274d22
better comments to clarify use of code and sub_code
MarcelOliver May 10, 2021
cbe8db4
mark Type as deprecated
MarcelOliver May 16, 2021
ef9eb25
add attribute country, country_revision, code and sub_code to roadmar…
MarcelOliver May 16, 2021
fa65516
Add a type field for custom traffic actions
caspar-ai May 28, 2021
4daa5cc
Use a more specific field name
caspar-ai May 28, 2021
defb094
fix(docs): Fix header (#518)
max-rosin Jun 8, 2021
c7d7c98
Add more detail to documentation
caspar-ai Jun 9, 2021
753ce64
feat(docs): Comment out includes irrelevant to v3.4
max-rosin Jun 18, 2021
5b7e012
feat(docs): Comment out includes irrelevant to v3.4
max-rosin Jun 18, 2021
539493a
Extension of an additional Identifier for external references
DerBaertige Jan 25, 2021
6390896
Update the ExternalReference message by adding the possibility to def…
DerBaertige Mar 23, 2021
f299be8
First usage of ExternalReference in Lane, StationaryObject and Moving…
DerBaertige Mar 23, 2021
ae6986b
Remove t_road_lanes_laneSection_center_lane from the Lane::ExternalRe…
DerBaertige Mar 25, 2021
274c959
External References added to TrafficSign, TrafficLight and Road Marking
DerBaertige Apr 22, 2021
00f09d8
Add external reference to EnvironmentalConditions, Occupant, LaneBoun…
DerBaertige Apr 22, 2021
57cb229
Correct mismatch of protobuf continuous IDs and add osi_common to osi…
DerBaertige Apr 22, 2021
7713d7a
Apply suggestions from code review
DerBaertige May 7, 2021
bcb45bb
Second part from code review
DerBaertige May 10, 2021
81e684d
Remove the version from the comment for OpenX description and use als…
DerBaertige May 12, 2021
0483234
Update the OpenX-Examples to rDNS.
DerBaertige May 17, 2021
8e54428
fix(docs): Doc review
max-rosin May 18, 2021
d2e700e
fix(docs): Remove stray line (#465)
max-rosin May 26, 2021
6a3ade2
fix(docs): Align wording across files (#465)
max-rosin May 26, 2021
40742a8
Add type speed bump to stationary object
0815-code Jan 27, 2021
2c23aff
Documentation Update (fix typo + better wording)
MarcelOliver Jun 29, 2021
cb1ac8b
Describe top-level messages (#506)
max-rosin Apr 19, 2021
2fddce9
feat(docs): Add traffic command and traffic update (#506)
max-rosin May 26, 2021
c68090d
Implement review comments (#506)
max-rosin Jun 10, 2021
ca22845
fix(docs): Implement changes after review (#506)
max-rosin Jun 24, 2021
5d02cf6
feat(docs): Describe coordinate systems and reference points (#510)
max-rosin Jul 7, 2021
cf8a383
Describe trace files (#520)
max-rosin May 18, 2021
3000542
Fix typos (#520)
max-rosin May 18, 2021
f6b6ee6
fix(docs): Fix typos, add example file name (#520)
max-rosin Jun 24, 2021
c518c36
fix(docs): Improve wording after review (#520)
max-rosin Jul 7, 2021
6aa4d4f
feat(docs): Describe model types (#517)
max-rosin May 6, 2021
f4aa148
fix(docs): Fix typos (#517)
max-rosin Jul 7, 2021
0b23bab
feat(docs): Migrate version info (#532)
max-rosin Jun 18, 2021
be2f0d3
fix(docs): Remove stray characters (#532)
max-rosin Jun 24, 2021
60061f8
fix(docs): Fix whitespace and missing header markup (#532)
max-rosin Jun 24, 2021
c7324ea
feat(docs): Add architecture overview (#534)
max-rosin Jun 18, 2021
8e995cc
feat(docs): Add content about interface fields as found in original d…
max-rosin Jun 18, 2021
13815d0
fix(docs): Improve text quality (#534)
max-rosin Jun 24, 2021
fc31130
feat(docs): Add traffic command, traffic update and host vehicle data…
max-rosin Jul 7, 2021
7aecc07
feat(docs): Add link to reference documentation (#531)
max-rosin Jun 18, 2021
303365b
feat(docs): Add very short vision document (#540)
max-rosin Jun 24, 2021
d5f2133
fixed image includes and rendering with aciidoctor
Jul 8, 2021
7389030
Refer to OpenDRIVE, clarify deprecation intent
pmai Jul 13, 2021
6c0526b
fix(docs): Implement review comments (#549)
max-rosin Jul 13, 2021
0bd74a5
fix(docs): Implement review comments (#549)
max-rosin Jul 13, 2021
a6b6efe
fix(docs): Doc review (#549)
max-rosin Jul 21, 2021
1f2ec78
fix(docs): Implement review comments (#549)
max-rosin Jul 23, 2021
d4f87e7
Added emitting structure for types of stationary object classes.
LukasElster Feb 3, 2021
b57db89
Proposal for the attributes of emitting structures.
LukasElster Feb 3, 2021
bfb5e85
Updated version of the emitting object message based on the discussio…
LukasElster Feb 18, 2021
426c54f
New Proposal for emitting objects. Added Distribution into common for…
LukasElster Mar 1, 2021
c9b86aa
Minor changes in plausibility and comments.
LukasElster Mar 5, 2021
282d7e6
Changes in osi_common reversed and new structure in osi_object to spe…
LukasElster May 28, 2021
4d39b13
Minor changes due to discussion in working group.
LukasElster May 28, 2021
b023a55
Changes in the description based on the CCB review.
LukasElster Jun 14, 2021
9d9b14b
Moved the distribution definition to osi_common and deleted the max_i…
LukasElster Jul 3, 2021
5bf2488
change vector in global to vector in local and vice versa
May 28, 2021
3f80758
Clarified semantics currently supported with TrafficUpdate
Jun 14, 2021
fbccf88
Add more explanations to TrafficUpdate semantics
Jun 15, 2021
2a59bb2
Decapitalize one, reflow text for even widths
pmai Aug 4, 2021
599849f
fix(docs): implement review comments (#549)
max-rosin Aug 6, 2021
0375f2f
fix(docs): fix typo (#549)
max-rosin Aug 6, 2021
1641ef9
fix(docs): implement review comments (#549)
max-rosin Aug 6, 2021
a849a7a
fix(docs): implement review comments (#549)
max-rosin Aug 6, 2021
e54ac94
fix(docs): Implement review comments (#549)
max-rosin Aug 6, 2021
1e05491
Apply suggestions from code review
caspar-ai Aug 10, 2021
8ee6ef8
fix(docs): Remove lorem ipsum (#549)
max-rosin Aug 12, 2021
bb2d258
fix(docs): Fix typos (#549)
max-rosin Aug 13, 2021
70cbce9
Add packaging and data layer definition drafts
pmai Aug 18, 2021
d785623
Commit CCB review results for doc migration
pmai Aug 18, 2021
9687c4b
Fix language issues in data and packaging layer
pmai Aug 19, 2021
5a47ffe
style(docs): linguistic review (#549)
pasched Aug 25, 2021
da45877
Reorder sensor view configuration, fix single quotes.
pmai Aug 25, 2021
bb9a8a2
fix(docs): linguistic review (#549)
pasched Aug 25, 2021
9230e4f
fix(doc): add data layer and packaging layer to user guide (#549)
pasched Aug 25, 2021
660108f
doc review (#549)
pasched Aug 26, 2021
af925df
Add first draft of additional color models
thomassedlmayer Jul 27, 2021
db172ed
Clarify documentation of semantic colors
thomassedlmayer Jul 28, 2021
863539d
Add new color fields, mark old ones as deprecated
thomassedlmayer Jul 28, 2021
f529853
Add color description to moving objects
thomassedlmayer Aug 2, 2021
80ad515
Change unit of hue (ColorHSV) to degree
thomassedlmayer Aug 2, 2021
4fb19d6
Add color description to traffic light
thomassedlmayer Aug 2, 2021
fbaf376
Add color description to lane boundaries
thomassedlmayer Aug 2, 2021
24c0217
Add color description to road markings
thomassedlmayer Aug 2, 2021
1b8dc76
Relocate color description fields
thomassedlmayer Aug 3, 2021
46a2bdd
Add brief tag and remove spaces
thomassedlmayer Aug 9, 2021
9a0c107
Add osi3 and pyproject.toml to .gitignore
yanqd0 Sep 8, 2021
d88b8ac
Add StationaryObjectClassification including assigned_lane_id and ass…
0815-code Mar 5, 2021
6f83cff
Move assigned_lane_id and assigned_lane_percentage under Classificati…
0815-code Jun 23, 2021
c763e89
Apply suggestions from documentation review
pmai Sep 8, 2021
068e24a
Fix field numbering conflict with master
pmai Sep 8, 2021
b6ed9ad
Add support for flatbuffers code generation
pmai Jul 22, 2020
d369e5a
Fix include and source file distribution issues
pmai Jul 22, 2020
0f037a1
Fix missing protobuf include path for flatc conversion
pmai Aug 25, 2021
4106ca1
Add dash property to boundary points
thomassedlmayer Aug 18, 2021
933943d
Add UNKNOWN and OTHER to dash enum
thomassedlmayer Aug 18, 2021
ed3e62d
Minor wording update from documentation review
pmai Sep 8, 2021
d3c78d1
docs: native speaker review
pasched Sep 9, 2021
0ef1295
docs: reverted changes in release notes
pasched Sep 10, 2021
24e0337
included native speaker review in versioning chapter
Sep 10, 2021
6d59951
OpenSimulationInterface/osi-documentation#43 replace world with globa…
Sep 16, 2021
4c488f0
Added bibliography entries. Relates to OpenSimulationInterface/osi-se…
FKlopfer Sep 17, 2021
61bd591
Added initial pictures for the WIP surfacelines
arnedueselder Sep 17, 2021
9d3b003
Update osi_lane.proto
arnedueselder Sep 17, 2021
00f6191
Adjusted surfaceline points
arnedueselder Sep 19, 2021
9ec4b23
Add flag to filter static content from sensorview
pmai Jul 16, 2020
5934e45
Adjust static flag description to be more precise
pmai Sep 20, 2021
7e83d6e
echo_pulse_width added in osi_featuredata.proto for message LidarDete…
PhRosenberger Jan 27, 2021
7669564
Explanation and reference with figures added.
PhRosenberger May 10, 2021
183f41b
Fixed indentation that used tabs instead of spaces
Sep 16, 2021
cb582ae
Linguistic review
FKlopfer Sep 17, 2021
852e9a1
correct citation for external source
Oct 13, 2021
2310498
New Branch and update of the necessary changes from PR "Extension of …
ThomasNaderBMW Jun 30, 2021
d1dd585
Updated motor descriptions.
ThomasNaderBMW Jun 30, 2021
a6d3fb9
Updated VehicleLocalization after CCB
ThomasNaderBMW Jul 21, 2021
9231a32
Added geodetic position
ThomasNaderBMW Jul 21, 2021
bd1794d
Linguistic review
FKlopfer Sep 16, 2021
60e1ad2
Added VehicleBrakeSystem and changed to VehicleSteering
ThomasNaderBMW Oct 11, 2021
02f85be
Added host vehicle id and minor description modifications.
ThomasNaderBMW Oct 18, 2021
0d5fd2d
Minor clarifications and language corrections
pmai Oct 19, 2021
ab3c0f0
Doc: changed code highlighting of install commands
Oct 20, 2021
bec8589
adjusted linking method
pasched Oct 26, 2021
ca3c84b
moved versioning.adoc to osi-documentation
pasched Oct 26, 2021
77c6bd9
docs: revise message formatting
pasched Oct 26, 2021
9ba7c77
docs: revise message formatting (continued)
pasched Oct 27, 2021
2041a04
docs: exclude versioning.adoc in map, moved to osi-documentation
pasched Oct 27, 2021
200200a
docs: excluded release notes
pasched Oct 27, 2021
2528482
feat: Extend laneboundary types with additional types from OpenDRIVE
HendrikAmelunxen Oct 19, 2021
1fc4d01
Removed poles (should be handled as TYPE_STRUCTURE)
HendrikAmelunxen Oct 19, 2021
e618970
Removed railing type; extended description for barrier-type.
HendrikAmelunxen Oct 20, 2021
07f4708
docs: removed chapter with link to reference doc, to be inserted in d…
pasched Oct 28, 2021
d55c674
restructured modeling a traffic participant
Oct 28, 2021
c1ec689
doc: small fix to rendering of install steps
Oct 28, 2021
05532c6
doc: fix of naming of standard
Oct 28, 2021
dd9b548
fix(docs): corrected vector from rear axis to sensor mounting point (…
paagkame Oct 29, 2021
a8622fe
Description Corrections. (#595)
ThomasNaderBMW Nov 10, 2021
dd91128
Prepare Release of 3.4 (#598)
Nov 18, 2021
cb7ac9d
Update osi_lane.proto
arnedueselder Nov 21, 2021
3c355a1
Update osi_lane.proto
arnedueselder Nov 21, 2021
c434fbf
Create proto_surfaceline
arnedueselder Dec 12, 2021
3eb4db6
Update osi_lane.proto
arnedueselder Dec 12, 2021
8acaf1b
Create osi_surfaceline.proto
arnedueselder Dec 12, 2021
30c8dac
Delete proto_surfaceline
arnedueselder Dec 12, 2021
e78e56c
Update osi_surfaceline.proto
arnedueselder Dec 12, 2021
cb6e916
Update osi_surfaceline.proto
arnedueselder Jan 24, 2022
7393cd6
Update osi_surfaceline.proto
arnedueselder Jan 24, 2022
79fccb5
Update osi_surfaceline.proto
arnedueselder Jan 31, 2022
2b1088a
Update osi_surfaceline.proto
arnedueselder Jan 31, 2022
352f3cf
Update osi_surfaceline.proto
arnedueselder Jan 31, 2022
65e7045
Update osi_surfaceline.proto
arnedueselder Jan 31, 2022
9d3dff7
Update osi_lane.proto
arnedueselder Sep 17, 2021
d133502
docs: exclude versioning.adoc in map, moved to osi-documentation
pasched Oct 27, 2021
fa92731
docs: excluded release notes
pasched Oct 27, 2021
876d45a
Update osi_lane.proto
arnedueselder Nov 21, 2021
b0a99ad
Create proto_surfaceline
arnedueselder Dec 12, 2021
00c3252
Update osi_lane.proto
arnedueselder Dec 12, 2021
ded7a43
Create osi_surfaceline.proto
arnedueselder Dec 12, 2021
3785cb3
Delete proto_surfaceline
arnedueselder Dec 12, 2021
7616568
Update osi_surfaceline.proto
arnedueselder Dec 12, 2021
328c0b7
Update osi_surfaceline.proto
arnedueselder Jan 24, 2022
6428610
Update osi_surfaceline.proto
arnedueselder Jan 24, 2022
5abdfb3
Update osi_surfaceline.proto
arnedueselder Jan 31, 2022
76ab09a
Update osi_surfaceline.proto
arnedueselder Jan 31, 2022
b8e3304
Update osi_surfaceline.proto
arnedueselder Jan 31, 2022
e1cc5b1
Update osi_surfaceline.proto
arnedueselder Jan 31, 2022
e265b8b
Update osi_surfaceline.proto
arnedueselder Jan 31, 2022
35def40
Update osi_surfaceline.proto
arnedueselder Jan 31, 2022
5da4fec
Update osi_surfaceline.proto
arnedueselder Jan 31, 2022
90bd591
Add automated driving function state to host vehicle data (#589)
caspar-ai Feb 4, 2022
0fc0b9a
Add dash gap enum
thomassedlmayer Aug 27, 2021
471c9ea
Refine gap enum description
thomassedlmayer Nov 29, 2021
d38625c
Update comment for DASH_GAP
thomassedlmayer Dec 9, 2021
b9abd16
Remove protobuf version mention in README
jdsika Feb 11, 2022
f6be831
Tweak Doxygen output
tbleher Feb 2, 2022
c3340e3
Update osi_surfaceline.proto
arnedueselder Feb 17, 2022
f402f0a
Add TYPE_TRUCK to vehicle classifications
caspar-ai Sep 30, 2021
f1df576
Clarify OSC <-> OSI mapping for vehicle types
caspar-ai Nov 22, 2021
59f9ebc
Add placeholder for OSI/OSC divergence reason
caspar-ai Nov 22, 2021
a6d83ee
Clarify tram and train mappings
caspar-ai Nov 22, 2021
bf3e1d4
Fix typos based on review
caspar-ai Nov 23, 2021
1805a9f
Simplify comments
caspar-ai Nov 23, 2021
7445239
Remove direct comparisons to OSC
caspar-ai Dec 7, 2021
05b7424
Remove last OSC reference
caspar-ai Dec 7, 2021
4b59099
Documentation images (#585)
Feb 15, 2022
8e81f5d
Reference images in comments
caspar-ai Feb 18, 2022
81f23da
Add smaller black-line images
caspar-ai Feb 22, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 67 additions & 2 deletions .github/workflows/protobuf.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,18 @@ on:
branches: [ master ]

jobs:
<<<<<<< HEAD
<<<<<<< HEAD
build-proto2-linux64:
name: Build Proto2 Linux 64
=======
build-cpp-linux64:
name: Build C++ Linux 64
>>>>>>> Initial GitHub Actions CPP ProtoBuf Build
=======
build-proto2-linux64:
name: Build Proto2 Linux 64
>>>>>>> Add Python ProtoBuf build

runs-on: ubuntu-18.04

Expand All @@ -17,6 +27,10 @@ jobs:
with:
submodules: true

<<<<<<< HEAD
<<<<<<< HEAD
=======
>>>>>>> Add Python ProtoBuf build
- name: Setup Python
uses: actions/setup-python@v2
with:
Expand All @@ -25,9 +39,12 @@ jobs:
- name: Install Python Dependencies
run: python -m pip install --upgrade pip setuptools wheel pyyaml

<<<<<<< HEAD
- name: Install Doxygen
run: sudo apt-get install doxygen graphviz

=======
>>>>>>> Add Python ProtoBuf build
- name: Cache Dependencies
id: cache-depends
uses: actions/cache@v2
Expand All @@ -54,9 +71,14 @@ jobs:
- name: Prepare C++ Build
run: mkdir build

- name: Prepare Documentation Bukd
# Versioning
- name: Get versioning
id: get_version
run: echo ::set-output name=VERSION::$(git describe --always)

- name: Prepare Documentation Build
run: |
sed -i 's/@VERSION_PATCH@/@VERSION_PATCH@_GitHub_MasterBranch/g' doxygen_config.cmake.in
sed -i 's/PROJECT_NUMBER\s*= @VERSION_MAJOR@.@VERSION_MINOR@.@VERSION_PATCH@/PROJECT_NUMBER = master (${{ steps.get_version.outputs.VERSION }})/g' doxygen_config.cmake.in
echo "EXCLUDE_PATTERNS = */osi3/* */protobuf-3.15.8/* */proto2cpp/*" >> doxygen_config.cmake.in
echo "GENERATE_TREEVIEW = YES" >> doxygen_config.cmake.in

Expand Down Expand Up @@ -111,15 +133,22 @@ jobs:
- name: Install Python Dependencies
run: python -m pip install --upgrade pip setuptools wheel pyyaml

=======
>>>>>>> Initial GitHub Actions CPP ProtoBuf Build
- name: Cache Dependencies
id: cache-depends
uses: actions/cache@v2
with:
<<<<<<< HEAD
path: protobuf-3.15.8
=======
path: protobuf-3.11.3
>>>>>>> Initial GitHub Actions CPP ProtoBuf Build
key: ${{ runner.os }}-v1-depends

- name: Download ProtoBuf
if: steps.cache-depends.outputs.cache-hit != 'true'
<<<<<<< HEAD
run: curl -OL https://github.com/protocolbuffers/protobuf/releases/download/v3.15.8/protobuf-all-3.15.8.tar.gz && tar xzvf protobuf-all-3.15.8.tar.gz

- name: Build ProtoBuf
Expand Down Expand Up @@ -155,3 +184,39 @@ jobs:

- name: Run Python Tests
run: python -m unittest discover tests
=======
run: curl -OL https://github.com/protocolbuffers/protobuf/releases/download/v3.11.3/protobuf-all-3.11.3.tar.gz && tar xzvf protobuf-all-3.11.3.tar.gz

- name: Build ProtoBuf
if: steps.cache-depends.outputs.cache-hit != 'true'
working-directory: protobuf-3.11.3
run: ./configure DIST_LANG=cpp --prefix=/usr && make

- name: Install ProtoBuf
working-directory: protobuf-3.11.3
run: sudo make install && sudo ldconfig

- name: Prepare C++ Build
run: mkdir build

- name: Configure C++ Build
working-directory: build
run: cmake ..

- name: Build C++
working-directory: build
run: cmake --build . --config Release -j 4
<<<<<<< HEAD
>>>>>>> Initial GitHub Actions CPP ProtoBuf Build
=======

- name: Build Python
run: python setup.py build && python setup.py sdist

- name: Install Python
run: python -m pip install .

- name: Run Python Tests
run: python -m unittest discover tests

>>>>>>> Add Python ProtoBuf build
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ dist/
doc/html
doc/latex
osi/
osi3/

# Specific extensions
*.egg-info
Expand All @@ -20,6 +21,7 @@ cmake_install.cmake
install_manifest.txt
osi_version.proto
version.py
pyproject.toml

# Eclipse-specific files, if any
*.cproject
Expand Down
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "flatbuffers"]
path = flatbuffers
url = https://github.com/google/flatbuffers.git
47 changes: 46 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ project(open_simulation_interface)
# set default compiler
set(CMAKE_CXX_STANDARD 11)

# Optional Flatbuffer support
set(BUILD_FLATBUFFER OFF CACHE BOOLEAN "Build flatbuffer versions of libraries")

# Set a default build type if none was specified
set(default_build_type "Release")
if(EXISTS "${CMAKE_SOURCE_DIR}/.git")
Expand Down Expand Up @@ -84,6 +87,48 @@ set(OSI_PROTO_FILES
)

protobuf_generate_cpp(PROTO_SRCS PROTO_HEADERS ${OSI_PROTO_FILES})
set(FLAT_HEADERS "")
if(BUILD_FLATBUFFER)
set(FLAT_FBS "")
add_subdirectory("flatbuffers"
${CMAKE_CURRENT_BINARY_DIR}/flatbuffers-build
EXCLUDE_FROM_ALL)
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/descriptor.fbs" "namespace osi3;")
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/include")
list(APPEND FLAT_FBS "${CMAKE_CURRENT_BINARY_DIR}/descriptor.fbs")
foreach (proto ${OSI_PROTO_FILES})
get_filename_component(proto_base ${proto} NAME_WE)
set(fbs "${proto_base}.fbs")
add_custom_command(
OUTPUT "${fbs}"
COMMAND $<TARGET_FILE:flatc> -I "${PROTOBUF_IMPORT_DIRS}" -o "${CMAKE_CURRENT_BINARY_DIR}" --proto "${CMAKE_CURRENT_SOURCE_DIR}/${proto}"
DEPENDS "${proto}" flatc
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
COMMENT "Convert ${proto} to ${fbs} using flatc"
)
list(APPEND FLAT_FBS "${CMAKE_CURRENT_BINARY_DIR}/${fbs}")
endforeach()

foreach (flat ${FLAT_FBS})
get_filename_component(flat_base ${flat} NAME_WE)
set(fbs "${flat_base}.fbs")
set(fbh "${flat_base}_generated.h")
add_custom_command(
OUTPUT "include/${fbh}"
COMMAND $<TARGET_FILE:flatc> -o "${CMAKE_CURRENT_BINARY_DIR}/include" --cpp --gen-mutable --gen-name-strings --scoped-enums "${fbs}"
DEPENDS "${FLAT_FBS}" flatc
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
COMMENT "Process ${fbs} to ${fbh} using flatc"
)
list(APPEND FLAT_HEADERS "${CMAKE_CURRENT_BINARY_DIR}/include/${fbh}")
endforeach()

add_custom_target(${PROJECT_NAME}_fbs_build ALL DEPENDS "${FLAT_HEADERS}")
add_library(${PROJECT_NAME}_fbs INTERFACE)
target_include_directories(${PROJECT_NAME}_fbs INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include/>)
target_include_directories(${PROJECT_NAME}_fbs SYSTEM INTERFACE $<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include>)
target_link_libraries(${PROJECT_NAME}_fbs INTERFACE flatbuffers)
endif()

add_library(${PROJECT_NAME}_static STATIC ${PROTO_SRCS} ${PROTO_HEADERS})
target_include_directories(${PROJECT_NAME}_static
Expand Down Expand Up @@ -168,7 +213,7 @@ install(FILES
COMPONENT dev)

# Header files
install(FILES ${PROTO_HEADERS}
install(FILES ${PROTO_HEADERS} ${FLAT_HEADERS}
DESTINATION "${INSTALL_INCLUDE_DIR}")

# Install the export set for use with the install-tree
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ def main():

sv_ground_truth = sensorview.global_ground_truth
sv_ground_truth.version.version_major = 3
sv_ground_truth.version.version_minor = 3
sv_ground_truth.version.version_minor = 4
sv_ground_truth.version.version_patch = 0

sv_ground_truth.timestamp.seconds = 0
Expand Down Expand Up @@ -91,7 +91,7 @@ Install `pip3` and missing python packages:
```bash
$ sudo apt-get install python3-pip python3-setuptools
```
Install `protobuf` 3.0.0:
Install `protobuf`:
```bash
$ sudo apt-get install libprotobuf-dev protobuf-compiler
```
Expand Down
4 changes: 2 additions & 2 deletions VERSION
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
VERSION_MAJOR = 3
VERSION_MINOR = 3
VERSION_PATCH = 1
VERSION_MINOR = 4
VERSION_PATCH = 0
41 changes: 41 additions & 0 deletions doc/architecture/architecture_overview.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
= Overview of OSI architecture

OSI contains an object-based environment description that uses the message format of the https://github.com/protocolbuffers/protobuf/wiki[Protocol Buffer] library.
Google developed and maintains the Protocol Buffer library.
OSI defines top-level messages that are used to exchange data between separate models.
Top-level messages define the `GroundTruth` interface, the `SensorData` interface, and – since OSI version 3.0.0 – the interfaces `SensorView`, `SensorViewConfiguration`, and `FeatureData`.

The following figure shows the interfaces and models involved in modeling a sensor.

.Open Simulation Interface overview
image::{images_open_simulation_interface}/osi-context.png[1100]


OSI also defines interfaces for traffic participant models.
The `TrafficCommand` interface makes it possible to send commands to traffic participant models.
The `TrafficUpdate` interface makes it possible to receive the updated state from traffic participant models.
The following figure shows the interfaces of a generic traffic participant.

.Interface of a traffic participant
image::{images_open_simulation_interface}/osi-traffic-participant-principle.png[1100]

Traffic participant models may use other OSI interfaces internally, for example, to model autonomous vehicles.
The following figure shows a more advanced use case for traffic participants.

.Traffic participant with sensor models, AD function, and dynamic model
image::{images_open_simulation_interface}/osi-traffic-participant-advanced.png[1100]

The `HostVehicleData` interface describes the measured internal states of a traffic participant.
OSI currently provides only limited support for data structures that describe measured internal states of traffic participants.
Actuator intentions are currently not covered by OSI and must be handled using a different data description format.

All fields in an interface are set to `optional`.
`required` is not used.
This has been done to allow backward-compatible changes in the field.
Additionally, this is the default behavior in Protocol Buffer version 3 that no longer has the `required` type.
Setting all fields to `optional` thus ensures update compatibility.
However, this does not mean that it is optional to fill the field.
For the purpose of providing a complete interface, all existing fields should be set, unless not setting a field carries a specific meaning, as indicated in the accompanying comment.

All field numbers equal to or greater than 10000 are available for user-specific extensions via custom fields.
No future evolution of OSI will therefore use field numbers equal to or greater than 10000.
14 changes: 14 additions & 0 deletions doc/architecture/data_layer.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
= Data layer

The OSI data layer is defined in the message specifications using the ProtoBuf IDL cite:[protobuf].
This defines the data that can be transmitted using OSI, including the structure and the semantics of the data.

Additionally, it specifies the encoding to be used when OSI data is transmitted.
Currently, ProtoBuf encoding is used, but other encodings are possible with the ProtoBuf IDL.
FlatBuffer encoding has been implemented as an experimental feature.

The data layer does not directly define components and transmission routes.
These are defined in the OSI packaging layer.
There may be different packaging layer implementations using the shared data layer definitions.
The data that is exchanged remains compatible regardless of the packaging layer implementation.
The use of a shared data layer ensures easy bridging between different packaging layer implementations.
9 changes: 9 additions & 0 deletions doc/architecture/environmental_effect_model.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
= Environmental effect model

Environmental effect models consume `SensorView` messages and produce `SensorView` messages.
Environmental effect models may, for example, alter `SensorView` messages to include effects and phenomena caused by:

* Shadows and occlusions
* Weather effects
* Physics of a sensor
* Pre-processing of raw sensor data
5 changes: 5 additions & 0 deletions doc/architecture/feature_data.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
= Feature data

`FeatureData` messages contain detected features in the reference frame of a sensor.
`FeatureData` messages are generated from `GroundTruth` messages.
They serve, for example, as an input to sensor models simulating object detection or feature fusion models.
52 changes: 52 additions & 0 deletions doc/architecture/formatting_scripts.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
= Trace-file formatting scripts

The OSI repository contains Python scripts for converting trace files from one format to another.
The formatting scripts are stored in `open-simulation-interface/format/`

**txt2osi.py**

`txt2osi.py` converts plain-text trace files to binary `.osi` trace files.
This script takes the following parameters:

`--data`, `-d`::
String containing the path to the file with serialized data.

`--type`, `-t`::
Optional string describing the message type used to serialize data.
`'SensorView'`, `'GroundTruth'`, or `'SensorData'` are permitted values.
The default value is `'SensorView'`.

`--output`, `-o`::
Optional string containing the name of the output file.
The default value is `'converted.osi'`.

`--compress`, `-c`::
Optional Boolean controlling whether to compress the output to an lzma file.
`True`, or `False` are permitted values.
The default value is `False`.

**osi2read.py**

`osi2read.py` converts trace files to human-readable `.txth` trace files.
This script takes the following parameters:

`--data`, `-d`::
String containing the path to the file with serialized data.

`--type`, `-t`::
Optional string describing the message type used to serialize data.
`'SensorView'`, `'GroundTruth'`, or `'SensorData'` are permitted values.
The default value is `'SensorView'`.

`--output`, `-o`::
Optional string containing the name of the output file.
The default value is `'converted.txth'`.

`--format`, `-f`::
Optional string containing the format type of the trace file.
`'separated'`, or `None` are permitted values.
The default value is `None`.

**Related topics**

* <<_osi_trace_file_formats>>
5 changes: 5 additions & 0 deletions doc/architecture/ground_truth.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
= Ground truth

`GroundTruth` messages describe the simulated environment containing all simulated objects in the global coordinate system at consecutive time instances.
They are based on data available to the simulation environment.
`GroundTruth` messages are typically contained in `Sensorview` messages.
6 changes: 6 additions & 0 deletions doc/architecture/logical_model.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
= Logical model

Logical models consume `SensorData` messages and produce `SensorData` messages.

An example of a logical model is a sensor-fusion model, which combines the output of multiple sensor models to produce data with less uncertainty.
Another use case is the fault-injection model which, contrary to a sensor-fusion model, may be used to increase uncertainties.
13 changes: 13 additions & 0 deletions doc/architecture/packaging_layer.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
= Packaging layer

The OSI packaging layer specifies how components that use the OSI data layer, for example, sensor models, are packaged for exchange.

This specifies model types and their mandatory and optional OSI inputs, OSI outputs, and parameter interfaces.
A model type may be, for example, a sensor model or a traffic participant model.
The packaging layer also specifies component technology standards.
This makes it possible to encapsulate model types in easily exchangeable component packages that can be used across platforms and implementations.

Multiple packaging layer implementations are possible within the OSI framework.
The shared data layer ensures easy bridging between the different implementations.
The currently defined central packaging layer is the OSI Sensor Model Packaging (OSMP) specification.
It is based on FMI 2.0 cite:[fmi2.0] and uses certain additional conventions to allow packaging of OSI using models as FMUs.
Loading