From dbbab3c2f00f9091239ec19fffa9a2aaf1581a9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Paris?= <rene.paris@in-tech.com> Date: Mon, 20 Jan 2025 15:12:34 +0000 Subject: [PATCH 1/2] feat(Stochastics): Integrate openpass/stochastics-library - Replace the ProbabilityService with the opennpass/stochastics-library See https://gitlab.eclipse.org/eclipse/openpass/stochastics-library - Add Conan/CMake integration - Add Bazel integration --- NOTICE.md | 3 + README.md | 1 + doc/architecture.md | 15 ++-- doc/figures/dependencies.png | Bin 136168 -> 158549 bytes doc/figures/raw/ose.drawio | 24 +++-- engine/BUILD.bazel | 1 + engine/CMakeLists.txt | 15 ++-- engine/bazel/deps.bzl | 9 ++ engine/cmake/generated_files.cmake | 3 - .../OpenScenarioEngine/OpenScenarioEngine.h | 20 +++-- engine/src/Node/RootNode.cpp | 6 +- engine/src/Node/RootNode.h | 6 +- engine/src/OpenScenarioEngine.cpp | 23 ++--- .../GenericAction/TrafficSwarmAction.h | 4 +- .../GenericAction/TrafficSwarmAction_base.h | 4 +- .../GenericAction/TrafficSwarmAction_impl.cpp | 6 +- engine/src/Utils/IProbabilityService.h | 29 ------- engine/src/Utils/ProbabilityService.cpp | 37 -------- engine/src/Utils/ProbabilityService.h | 40 --------- .../GenericAction/TrafficSwarmActionTest.cpp | 18 ++-- .../tests/TestUtils/MockProbabilityService.h | 30 ------- engine/tests/TestUtils/MockStochastics.h | 45 ++++++++++ utils/ci/conan/conanfile.txt | 1 + .../recipe/stochastics/all/conandata.yml | 29 +++++++ .../conan/recipe/stochastics/all/conanfile.py | 82 ++++++++++++++++++ utils/ci/conan/recipe/stochastics/config.yml | 24 +++++ utils/ci/scripts/20_configure.sh | 1 + 27 files changed, 275 insertions(+), 201 deletions(-) delete mode 100644 engine/src/Utils/IProbabilityService.h delete mode 100644 engine/src/Utils/ProbabilityService.cpp delete mode 100644 engine/src/Utils/ProbabilityService.h delete mode 100644 engine/tests/TestUtils/MockProbabilityService.h create mode 100644 engine/tests/TestUtils/MockStochastics.h create mode 100644 utils/ci/conan/recipe/stochastics/all/conandata.yml create mode 100644 utils/ci/conan/recipe/stochastics/all/conanfile.py create mode 100644 utils/ci/conan/recipe/stochastics/config.yml diff --git a/NOTICE.md b/NOTICE.md index be759cb0..76b5c651 100644 --- a/NOTICE.md +++ b/NOTICE.md @@ -90,6 +90,9 @@ pthread OpenSCENARIO API (Parser) * License: Apache-2.0 +openpass/stochastics-libarary + * License: EPL 2.0 + ## Cryptography Content may contain encryption software. The country in which you are currently diff --git a/README.md b/README.md index 10e0b17d..b735a38a 100644 --- a/README.md +++ b/README.md @@ -260,6 +260,7 @@ Converts `NET_ASAM_OPENSCENARIO::v1_3::ITransitionDynamics` object type to [mant | [Units](https://github.com/nholthaus/units) | b04d436 | 2.3.3 | MIT License | | [googletest](https://github.com/google/googletest) | f8d7d77 | 1.14.0 | BSD-3-Clause License | | [CPM](https://github.com/cpm-cmake/CPM.cmake) | 03705fc | 0.36.0 | MIT License | +| [openpass/stochastics-library](https://gitlab.eclipse.org/eclipse/openpass/stochastics-library) | 6c9dde71 | 0.11.0 | ELP 2.0 | # Issues diff --git a/doc/architecture.md b/doc/architecture.md index 60dc6ef9..a6d60646 100644 --- a/doc/architecture.md +++ b/doc/architecture.md @@ -17,16 +17,13 @@ Figure 1 shows, how the engine is orchestrated: For **reading** and **validation** of an OpenSCENARIO description, the engine uses the [**OpenScenarioLib**](https://github.com/RA-Consulting-GmbH/openscenario.api.test/), publicly hosted by [RA-Consulting GmbH](https://www.rac.de/). The library interfaces over the **OpenScenario API** and is available for all current OpenSCENARIO 1.X standards. -For interfacing against an environment simulator (e.g. [openPASS::opSimulation](https://gitlab.eclipse.org/eclipse/openpass/opSimulation)), the engine uses the scenario agnostic interface definition [openPASS::MantleAPI](https://gitlab.eclipse.org/eclipse/openpass/mantle-api). +Aside of this, the engine uses several other openPASS APIs and libraries: +- [openPASS::MantleAPI](https://gitlab.eclipse.org/eclipse/openpass/mantle-api): The scenario agnostic interface definition is used to interface against the actual environment simulator, such as [openPASS::opSimulation](https://gitlab.eclipse.org/eclipse/openpass/opSimulation). In one direction, the engine implements `mantle_api::IScenarioEngine`, which allows to control the execution (e.g. `Init()` or `Step()`). -In the other direction it needs access to the `mantle_api::IEnvironment` (e.g. to setup and control entities), which needs to be implemented by the environment simulator. - -As the **MantleAPI** relies on the [nholthaus/units](https://github.com/nholthaus/units) library for physically correct representation of its properties, this dependency is also injected and used by the OpenScenarioEngine. - -The heart of the engine is a behavior tree, based on the openPASS project [openPASS::yase](https://gitlab.eclipse.org/eclipse/openpass/yase). - Its responsibility is to handle **the interaction between** conditions and actions interact according to the standard, i.e. what should be triggered when. - -The actual actions and conditions reside in the leaves of the tree. +In the other direction it needs access to the `mantle_api::IEnvironment` (e.g. to setup and control entities), implemented by the environment simulator. + > As the **MantleAPI** relies on the [nholthaus/units](https://github.com/nholthaus/units) library for physically correct representation of its properties, this dependency is also injected and used by the OpenScenarioEngine. +- [openPASS::stochastics-library](https://gitlab.eclipse.org/eclipse/openpass/stochastics-library): Responsible for generation and management of random numbers. +- [openPASS::yase](https://gitlab.eclipse.org/eclipse/openpass/yase): An agnostic behavior tree library, used to represent the interaction between conditions and actions according to the OpenScenario standard. As such it defines and controls what should be triggered when and allows to model the actions and conditions as independent leaves within the tree. The following shows an (beautified) excerpt of the such an actual behavior tree, taken from the demo example: ``` diff --git a/doc/figures/dependencies.png b/doc/figures/dependencies.png index 354edd70dd4cbb1bf40526c3f1ff3b875acd2ce8..3463e965bc1fcad03f7d23f644906da4d4af000c 100644 GIT binary patch literal 158549 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 SO`qKe_-v)@B;T_3iu(_myvB$C delta 50195 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⋙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 diff --git a/doc/figures/raw/ose.drawio b/doc/figures/raw/ose.drawio index a287e35a..4a5fde97 100644 --- a/doc/figures/raw/ose.drawio +++ b/doc/figures/raw/ose.drawio @@ -1,6 +1,6 @@ <mxfile host="65bd71144e" pages="5"> <diagram id="qdG8iX79VHu7KITj_ZMQ" name="Dependencies"> - <mxGraphModel dx="1094" dy="667" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0"> + <mxGraphModel dx="698" dy="537" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0"> <root> <mxCell id="0"/> <mxCell id="1" parent="0"/> @@ -26,7 +26,7 @@ </mxCell> </UserObject> <UserObject label="OpenScenarioEngine" link="https://gitlab.eclipse.org/eclipse/openpass/openscenario1_engine" id="YvpkXVZpcQ3CE4Kt-1fF-4"> - <mxCell style="html=1;fillColor=#1ba1e2;strokeColor=#006EAF;fontColor=#ffffff;fontStyle=1;rounded=0;verticalAlign=middle;fontSize=16;align=center;" parent="1" vertex="1"> + <mxCell style="html=1;fillColor=#1ba1e2;strokeColor=#006EAF;fontColor=#ffffff;fontStyle=1;rounded=0;verticalAlign=middle;fontSize=16;align=center;points=[[0,0,0,0,0],[0,0.24,0,0,0],[0,0.5,0,0,0],[0,0.76,0,0,0],[0,1,0,0,0],[0.25,0,0,0,0],[0.25,1,0,0,0],[0.5,0,0,0,0],[0.5,1,0,0,0],[0.6,0,0,0,0],[0.75,1,0,0,0],[0.91,0,0,0,0],[1,0,0,0,0],[1,0.26,0,0,0],[1,0.5,0,0,0],[1,0.76,0,0,0],[1,1,0,0,0]];" parent="1" vertex="1"> <mxGeometry x="40" y="420" width="530" height="90" as="geometry"/> </mxCell> </UserObject> @@ -65,7 +65,7 @@ </mxCell> <UserObject label="yase" link="https://gitlab.eclipse.org/eclipse/openpass/yase" id="YvpkXVZpcQ3CE4Kt-1fF-17"> <mxCell style="html=1;fillColor=#008a00;rounded=0;fontColor=#ffffff;strokeColor=#005700;" parent="1" vertex="1"> - <mxGeometry x="382" y="334" width="110" height="50" as="geometry"/> + <mxGeometry x="364" y="334" width="100" height="50" as="geometry"/> </mxCell> </UserObject> <mxCell id="YvpkXVZpcQ3CE4Kt-1fF-19" value="ANTLR" style="html=1;rounded=0;" parent="1" vertex="1"> @@ -114,10 +114,10 @@ <mxGeometry x="41" y="550" width="180" height="50" as="geometry"/> </mxCell> </UserObject> - <mxCell id="xhKkH3lc2efCmdcfyuGa-1" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.75;exitY=0;exitDx=0;exitDy=0;" parent="1" source="YvpkXVZpcQ3CE4Kt-1fF-4" target="YvpkXVZpcQ3CE4Kt-1fF-17" edge="1"> + <mxCell id="xhKkH3lc2efCmdcfyuGa-1" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.706;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="YvpkXVZpcQ3CE4Kt-1fF-4" target="YvpkXVZpcQ3CE4Kt-1fF-17" edge="1"> <mxGeometry x="-0.0066" y="-2" width="160" relative="1" as="geometry"> - <mxPoint x="525" y="520" as="sourcePoint"/> - <mxPoint x="525" y="560" as="targetPoint"/> + <mxPoint x="397.5" y="420" as="sourcePoint"/> + <mxPoint x="485" y="560" as="targetPoint"/> <mxPoint as="offset"/> </mxGeometry> </mxCell> @@ -158,6 +158,18 @@ <mxPoint x="514.71" y="600" as="targetPoint"/> </mxGeometry> </mxCell> + <UserObject label="stochastics" link="https://gitlab.eclipse.org/eclipse/openpass/stochastics-lib" id="9"> + <mxCell style="html=1;fillColor=#008a00;rounded=0;fontColor=#ffffff;strokeColor=#005700;" vertex="1" parent="1"> + <mxGeometry x="473" y="334" width="100" height="50" as="geometry"/> + </mxCell> + </UserObject> + <mxCell id="10" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitX=0.91;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="YvpkXVZpcQ3CE4Kt-1fF-4" target="9"> + <mxGeometry x="-0.0066" y="-2" width="160" relative="1" as="geometry"> + <mxPoint x="670" y="410" as="sourcePoint"/> + <mxPoint x="407" y="394" as="targetPoint"/> + <mxPoint as="offset"/> + </mxGeometry> + </mxCell> </root> </mxGraphModel> </diagram> diff --git a/engine/BUILD.bazel b/engine/BUILD.bazel index 1143206a..598d86cb 100644 --- a/engine/BUILD.bazel +++ b/engine/BUILD.bazel @@ -30,6 +30,7 @@ cc_library( deps = [ "@mantle_api", "@open_scenario_parser", + "@stochastics_library", "@units_nhh", "@yase//middle_end/agnostic_behavior_tree", ], diff --git a/engine/CMakeLists.txt b/engine/CMakeLists.txt index 3dd9426c..c6a104d6 100644 --- a/engine/CMakeLists.txt +++ b/engine/CMakeLists.txt @@ -42,6 +42,9 @@ CPMAddPackage( # MantleAPI https://gitlab.eclipse.org/eclipse/simopenpass/scenario_api find_package(MantleAPI REQUIRED) + +find_package(Stochastics REQUIRED) + # see https://stackoverflow.com/a/58495612 set(CMAKE_INSTALL_RPATH $ORIGIN) @@ -67,11 +70,12 @@ target_include_directories( $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include> ) -target_link_libraries(${PROJECT_NAME} PUBLIC openscenario_api::shared - antlr4_runtime::shared - Yase::agnostic_behavior_tree - units::units - MantleAPI::MantleAPI) +target_link_libraries(${PROJECT_NAME} PUBLIC openscenario_api::shared + antlr4_runtime::shared + Yase::agnostic_behavior_tree + units::units + MantleAPI::MantleAPI + PRIVATE Stochastics::Stochastics) if(USE_CCACHE) find_program(CCACHE_FOUND ccache) @@ -243,6 +247,7 @@ target_include_directories( target_link_libraries( ${PROJECT_NAME}Test PRIVATE ${PROJECT_NAME} + Stochastics::Stochastics antlr4_runtime::shared GTest::gmock_main pthread diff --git a/engine/bazel/deps.bzl b/engine/bazel/deps.bzl index efc8bf15..299b51c2 100644 --- a/engine/bazel/deps.bzl +++ b/engine/bazel/deps.bzl @@ -4,6 +4,7 @@ load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") ECLIPSE_GITLAB = "https://gitlab.eclipse.org/eclipse" MANTLE_API_TAG = "v8.0.0" +STOCHASTICS_LIBRARY_TAG = "v0.10.0" UNITS_TAG = "2.3.3" YASE_TAG = "v0.0.1" @@ -17,6 +18,14 @@ def osc_engine_deps(): strip_prefix = "mantle-api-{tag}".format(tag = MANTLE_API_TAG), ) + maybe( + http_archive, + name = "stochastics_library", + url = ECLIPSE_GITLAB + "/openpass/stochastics-library/-/archive/{tag}/stochastics-library-{tag}.tar.gz".format(tag = STOCHASTICS_LIBRARY_TAG), + sha256 = "0b9173d005e433cf9e5ad68d3fe28fdcff5ea1b511118a4a47bb95f225534a6f", + strip_prefix = "stochastics-library-{tag}".format(tag = STOCHASTICS_LIBRARY_TAG), + ) + maybe( http_archive, name = "units_nhh", diff --git a/engine/cmake/generated_files.cmake b/engine/cmake/generated_files.cmake index 0bc25316..20fd7859 100644 --- a/engine/cmake/generated_files.cmake +++ b/engine/cmake/generated_files.cmake @@ -239,7 +239,6 @@ list(APPEND ${PROJECT_NAME}_SOURCES src/Utils/EntityUtils.cpp src/Utils/EventPrioritizer.cpp src/Utils/Logger.cpp - src/Utils/ProbabilityService.cpp src/Utils/TrafficSignalBuilder.cpp ) @@ -606,8 +605,6 @@ list(APPEND ${PROJECT_NAME}_HEADERS src/Utils/EventPriority.h src/Utils/IControllerService.h src/Utils/IEventPrioritizer.h - src/Utils/IProbabilityService.h src/Utils/Logger.h - src/Utils/ProbabilityService.h src/Utils/TrafficSignalBuilder.h ) diff --git a/engine/include/OpenScenarioEngine/OpenScenarioEngine.h b/engine/include/OpenScenarioEngine/OpenScenarioEngine.h index c31735db..d1d1f201 100644 --- a/engine/include/OpenScenarioEngine/OpenScenarioEngine.h +++ b/engine/include/OpenScenarioEngine/OpenScenarioEngine.h @@ -17,14 +17,16 @@ #include <MantleAPI/Execution/i_scenario_engine.h> #include <openScenarioLib/src/common/SimpleMessageLogger.h> +#include <cstdint> #include <memory> #include <string> +class StochasticsInterface; + namespace OpenScenarioEngine::v1_3 { class ControllerCreator; class EntityCreator; -class IProbabilityService; namespace Node { @@ -49,7 +51,7 @@ public: const std::string& scenario_file_path, std::shared_ptr<mantle_api::IEnvironment> environment, std::shared_ptr<mantle_api::ILogger> logger = nullptr, - unsigned int initial_seed = 0); + std::uint32_t initial_seed = 0); /// Parses and validates the scenario and referenced catalogs. /// @note A map file referenced from the scenario is not parsed. @@ -92,7 +94,7 @@ public: /// Sets a manual random seed, which will be used at initialization /// - /// The given value will be hold until ResetProbabilityService is called + /// The given value will be hold until ResetStochastics is called /// during Inititialization. It has no direct impact on a currently running /// OpenScenarioEngine. Use this method, when you like to control the /// seed manually over consecutive invocations without reloading the scenario @@ -103,10 +105,10 @@ public: /// /// Note that the engine is invoked with a random seed per default, which will /// be incremented in between two initializations unless overridden. - /// @see Init, @see ResetProbabilityService + /// @see Init, @see ResetStochastics /// /// @param seed New random seed - void OverrideRandomSeed(unsigned int seed); + void OverrideRandomSeed(std::uint32_t seed); protected: std::string scenario_file_path_; @@ -143,7 +145,7 @@ private: void ParseScenarioFile(); - /// Instantly sets the random seed of the probability service + /// Instantly sets the random seed of the internal stochatics /// /// - At first call this method will set the random seed to the given /// value during initialization of the OSE. The initial seed will @@ -151,7 +153,7 @@ private: /// /// - If a SetRandomSeed has been called before, the given value will /// be used instead - void ResetProbabilityService(); + void ResetStochastics(); /// Reset all entities and create new according to scenario description void ResetAndCreateEntities(); @@ -177,7 +179,7 @@ private: std::shared_ptr<mantle_api::IEnvironment> environment_; std::shared_ptr<EntityCreator> entity_creator_; std::shared_ptr<ControllerCreator> controller_creator_; - std::shared_ptr<IProbabilityService> probability_service_; + std::shared_ptr<StochasticsInterface> stochastics_; std::shared_ptr<mantle_api::ILogger> logger_{nullptr}; std::shared_ptr<Node::RootNode> root_node_{nullptr}; const mantle_api::ICoordConverter* coordinate_converter_{nullptr}; @@ -186,6 +188,6 @@ private: bool finished_{false}; bool first_run_{true}; - std::optional<unsigned int> random_seed_value_override_{std::nullopt}; + std::optional<std::uint32_t> random_seed_value_override_{std::nullopt}; }; } // namespace OpenScenarioEngine::v1_3 diff --git a/engine/src/Node/RootNode.cpp b/engine/src/Node/RootNode.cpp index 1b8fb8c0..ae0a474b 100644 --- a/engine/src/Node/RootNode.cpp +++ b/engine/src/Node/RootNode.cpp @@ -19,12 +19,12 @@ namespace OpenScenarioEngine::v1_3::Node RootNode::RootNode(std::shared_ptr<NET_ASAM_OPENSCENARIO::v1_3::IScenarioDefinition> scenarioDefinition, std::shared_ptr<mantle_api::IEnvironment> environment, std::shared_ptr<IControllerService> controller_service, - std::shared_ptr<IProbabilityService> probability_service, + std::shared_ptr<StochasticsInterface> stochastics, std::shared_ptr<EngineAbortFlags> engine_abort_flags) : yase::ParallelNode{NAME_NODE_ROOT}, environment_{environment}, controller_service_{controller_service}, - probability_service_{probability_service}, + stochastics_{stochastics}, engine_abort_flags_{engine_abort_flags} { if (auto storyboard = scenarioDefinition->GetStoryboard(); storyboard) @@ -42,7 +42,7 @@ void RootNode::lookupAndRegisterData(yase::Blackboard& blackboard) { blackboard.set("Environment", environment_); blackboard.set("ControllerService", controller_service_); - blackboard.set("ProbabilityService", probability_service_); + blackboard.set("Stochastics", stochastics_); blackboard.set("EngineAbortFlags", engine_abort_flags_); } diff --git a/engine/src/Node/RootNode.h b/engine/src/Node/RootNode.h index e0c36503..9b4b7e65 100644 --- a/engine/src/Node/RootNode.h +++ b/engine/src/Node/RootNode.h @@ -16,7 +16,7 @@ #include <memory> #include "Utils/EngineAbortFlags.h" -#include "Utils/IProbabilityService.h" +#include "Stochastics/StochasticsInterface.h" namespace OpenScenarioEngine::v1_3 { @@ -35,7 +35,7 @@ public: RootNode(std::shared_ptr<NET_ASAM_OPENSCENARIO::v1_3::IScenarioDefinition> scenarioDefinition, std::shared_ptr<mantle_api::IEnvironment> environment, std::shared_ptr<IControllerService> controller_service, - std::shared_ptr<IProbabilityService> probability_service, + std::shared_ptr<StochasticsInterface> stochastics, std::shared_ptr<EngineAbortFlags> engine_abort_flags); private: @@ -43,7 +43,7 @@ private: std::shared_ptr<mantle_api::IEnvironment> environment_; std::shared_ptr<IControllerService> controller_service_; - std::shared_ptr<IProbabilityService> probability_service_; + std::shared_ptr<StochasticsInterface> stochastics_; std::shared_ptr<EngineAbortFlags> engine_abort_flags_; }; diff --git a/engine/src/OpenScenarioEngine.cpp b/engine/src/OpenScenarioEngine.cpp index f9dd7751..76bd104d 100644 --- a/engine/src/OpenScenarioEngine.cpp +++ b/engine/src/OpenScenarioEngine.cpp @@ -10,6 +10,8 @@ *******************************************************************************/ #include "OpenScenarioEngine/OpenScenarioEngine.h" +#include <Stochastics/Stochastics.h> +#include <Stochastics/StochasticsInterface.h> #include <agnostic_behavior_tree/behavior_node.h> #include <agnostic_behavior_tree/utils/tree_print.h> #include <openScenarioLib/src/common/ErrorLevel.h> @@ -26,7 +28,6 @@ #include "Utils/EngineAbortFlags.h" #include "Utils/EntityCreator.h" #include "Utils/Logger.h" -#include "Utils/ProbabilityService.h" namespace OpenScenarioEngine::v1_3 { @@ -103,12 +104,13 @@ mantle_api::MapRegionType ExtractMapRegionType(std::shared_ptr<NET_ASAM_OPENSCEN OpenScenarioEngine::OpenScenarioEngine(const std::string& scenario_file_path, std::shared_ptr<mantle_api::IEnvironment> environment, std::shared_ptr<mantle_api::ILogger> logger, - unsigned int initial_seed) + std::uint32_t initial_seed) : scenario_file_path_{scenario_file_path}, environment_{std::move(environment)}, - probability_service_{std::make_shared<ProbabilityService>(initial_seed)} + stochastics_{std::make_shared<Stochastics>()} { Logger::SetLogger(std::move(logger)); + stochastics_->InitGenerator(initial_seed); if (!environment_) { @@ -117,19 +119,18 @@ OpenScenarioEngine::OpenScenarioEngine(const std::string& scenario_file_path, controller_creator_ = std::make_shared<ControllerCreator>(*environment_); } -void OpenScenarioEngine::OverrideRandomSeed(unsigned int random_seed) +void OpenScenarioEngine::OverrideRandomSeed(std::uint32_t random_seed) { random_seed_value_override_ = random_seed; } -void OpenScenarioEngine::ResetProbabilityService() +void OpenScenarioEngine::ResetStochastics() { - // upcast to implementation - auto probability_service = std::dynamic_pointer_cast<ProbabilityService>(probability_service_); + auto stochastics = std::dynamic_pointer_cast<Stochastics>(stochastics_); if (random_seed_value_override_) { - probability_service->SetRandomSeed(random_seed_value_override_.value()); + stochastics->InitGenerator(random_seed_value_override_.value()); } else { @@ -139,7 +140,7 @@ void OpenScenarioEngine::ResetProbabilityService() } else { - probability_service->SetRandomSeed(probability_service->GetRandomSeed() + 1); + stochastics->InitGenerator(stochastics->GetRandomSeed() + 1); } } } @@ -152,7 +153,7 @@ void OpenScenarioEngine::Init() void OpenScenarioEngine::SetupDynamicContent() { - ResetProbabilityService(); + ResetStochastics(); ResetAndCreateEntities(); ResetAndCreateControllers(); ResetAndCreateStoryboard(); @@ -365,7 +366,7 @@ void OpenScenarioEngine::ResetAndCreateStoryboard() scenario_definition_ptr_, environment_, controller_creator_->GetControllerService(), - probability_service_, + stochastics_, engine_abort_flags); } diff --git a/engine/src/Storyboard/GenericAction/TrafficSwarmAction.h b/engine/src/Storyboard/GenericAction/TrafficSwarmAction.h index bcbc46b1..43e88d5d 100644 --- a/engine/src/Storyboard/GenericAction/TrafficSwarmAction.h +++ b/engine/src/Storyboard/GenericAction/TrafficSwarmAction.h @@ -45,7 +45,7 @@ private: void lookupAndRegisterData(yase::Blackboard& blackboard) final { auto environment = blackboard.get<std::shared_ptr<mantle_api::IEnvironment>>("Environment"); - auto probabilityService = blackboard.get<std::shared_ptr<IProbabilityService>>("ProbabilityService"); + auto stochastics = blackboard.get<std::shared_ptr<StochasticsInterface>>("Stochastics"); impl_ = std::make_unique<OpenScenarioEngine::v1_3::TrafficSwarmAction>( OpenScenarioEngine::v1_3::TrafficSwarmAction::Values{ @@ -68,7 +68,7 @@ private: OpenScenarioEngine::v1_3::TrafficSwarmAction::Interfaces{ environment}, OpenScenarioEngine::v1_3::TrafficSwarmAction::Services{ - probabilityService}); + stochastics}); } std::unique_ptr<OpenScenarioEngine::v1_3::TrafficSwarmAction> impl_{nullptr}; diff --git a/engine/src/Storyboard/GenericAction/TrafficSwarmAction_base.h b/engine/src/Storyboard/GenericAction/TrafficSwarmAction_base.h index aadf874a..84416a98 100644 --- a/engine/src/Storyboard/GenericAction/TrafficSwarmAction_base.h +++ b/engine/src/Storyboard/GenericAction/TrafficSwarmAction_base.h @@ -12,6 +12,7 @@ #pragma once #include <MantleAPI/Execution/i_environment.h> +#include <Stochastics/StochasticsInterface.h> #include <optional> @@ -19,7 +20,6 @@ #include "Conversion/OscToMantle/ConvertScenarioDirectionOfTravelDistribution.h" #include "Conversion/OscToMantle/ConvertScenarioRange.h" #include "Conversion/OscToMantle/ConvertScenarioTrafficDefinition.h" -#include "Utils/IProbabilityService.h" namespace OpenScenarioEngine::v1_3 { @@ -45,7 +45,7 @@ public: }; struct Services { - std::shared_ptr<IProbabilityService> sampler; + std::shared_ptr<StochasticsInterface> stochastics; }; TrafficSwarmActionBase(Values values, Interfaces interfaces, Services services) diff --git a/engine/src/Storyboard/GenericAction/TrafficSwarmAction_impl.cpp b/engine/src/Storyboard/GenericAction/TrafficSwarmAction_impl.cpp index edfaee97..16deb16a 100644 --- a/engine/src/Storyboard/GenericAction/TrafficSwarmAction_impl.cpp +++ b/engine/src/Storyboard/GenericAction/TrafficSwarmAction_impl.cpp @@ -94,7 +94,7 @@ void TrafficSwarmAction::ValidateScenarioParameters(const OpenScenarioEngine::v1 mantle_api::VehicleClass TrafficSwarmAction::GetVehicleClassification() { mantle_api::VehicleClass vehicle_class; - auto sampled_value{services_.sampler->SampleRealUniformValue(vehicle_category_distribution_weights_sum_)}; + auto sampled_value{services_.stochastics->GetUniformDistributed(0, vehicle_category_distribution_weights_sum_)}; for (const auto& vehicle_category_distribution_entry : values_.trafficDefinition.vehicle_category_distribution_entries) { @@ -113,7 +113,7 @@ mantle_api::VehicleClass TrafficSwarmAction::GetVehicleClassification() mantle_api::ExternalControllerConfig TrafficSwarmAction::GetControllerConfiguration() { mantle_api::ExternalControllerConfig controller_config; - auto sampled_value{services_.sampler->SampleRealUniformValue(controller_distribution_weights_sum_)}; + auto sampled_value{services_.stochastics->GetUniformDistributed(0, controller_distribution_weights_sum_)}; for (const auto& controller_distribution_entry : values_.trafficDefinition.controller_distribution_entries) { @@ -220,7 +220,7 @@ units::velocity::meters_per_second_t TrafficSwarmAction::GetSpawnedVehicleSpeed( lower_speed_limit = central_entity_speed; } - return units::velocity::meters_per_second_t{services_.sampler->SampleRealUniformValue(upper_speed_limit - lower_speed_limit) + lower_speed_limit}; + return units::velocity::meters_per_second_t{services_.stochastics->GetUniformDistributed(0, upper_speed_limit - lower_speed_limit) + lower_speed_limit}; } void TrafficSwarmAction::SpawnEntities() diff --git a/engine/src/Utils/IProbabilityService.h b/engine/src/Utils/IProbabilityService.h deleted file mode 100644 index 65620cee..00000000 --- a/engine/src/Utils/IProbabilityService.h +++ /dev/null @@ -1,29 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2023-2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * This program and the accompanying materials are made - * available under the terms of the Eclipse Public License 2.0 - * which is available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - *******************************************************************************/ - -#pragma once - -namespace OpenScenarioEngine::v1_3 -{ -/// Provides methods for centralized handling of probability -class IProbabilityService -{ -public: - /// Default destructor - virtual ~IProbabilityService() = default; - - /// Sample from an real uniform distribution - /// - /// @param scale description - /// @returns a value between [0 and scale] - [[nodiscard]] virtual double SampleRealUniformValue(double scale) noexcept = 0; -}; - -} // namespace OpenScenarioEngine::v1_3 \ No newline at end of file diff --git a/engine/src/Utils/ProbabilityService.cpp b/engine/src/Utils/ProbabilityService.cpp deleted file mode 100644 index 62436afd..00000000 --- a/engine/src/Utils/ProbabilityService.cpp +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2023-2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * This program and the accompanying materials are made - * available under the terms of the Eclipse Public License 2.0 - * which is available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - *******************************************************************************/ - -#include "ProbabilityService.h" - -namespace OpenScenarioEngine::v1_3 -{ -ProbabilityService::ProbabilityService(std::random_device::result_type seed) - : uniform_real_distribution{0.0, 1.0} -{ - SetRandomSeed(seed); -} - -void ProbabilityService::SetRandomSeed(std::random_device::result_type seed) -{ - seed_ = seed; - generator_ = std::mt19937{seed}; -} - -std::random_device::result_type ProbabilityService::GetRandomSeed() const -{ - return seed_; -} - -double ProbabilityService::SampleRealUniformValue(double scale) noexcept -{ - return uniform_real_distribution(generator_) * scale; -} - -} // namespace OpenScenarioEngine::v1_3 diff --git a/engine/src/Utils/ProbabilityService.h b/engine/src/Utils/ProbabilityService.h deleted file mode 100644 index f08c9a4b..00000000 --- a/engine/src/Utils/ProbabilityService.h +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2023-2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * This program and the accompanying materials are made - * available under the terms of the Eclipse Public License 2.0 - * which is available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - *******************************************************************************/ - -#pragma once - -#include <random> - -#include "IProbabilityService.h" - -namespace OpenScenarioEngine::v1_3 -{ -class ProbabilityService : public IProbabilityService -{ -public: - explicit ProbabilityService(std::random_device::result_type seed); - - [[nodiscard]] double SampleRealUniformValue(double scale) noexcept override; - - /// Set the random seed and instantiate a new generator - /// @param seed new random seed - void SetRandomSeed(std::random_device::result_type seed); - - /// Get the currently used random seed - /// @return seed - std::random_device::result_type GetRandomSeed() const; - -private: - std::random_device::result_type seed_; - std::mt19937 generator_; - std::uniform_real_distribution<double> uniform_real_distribution; -}; - -} // namespace OpenScenarioEngine::v1_3 \ No newline at end of file diff --git a/engine/tests/Storyboard/GenericAction/TrafficSwarmActionTest.cpp b/engine/tests/Storyboard/GenericAction/TrafficSwarmActionTest.cpp index b6dd5a9e..5bb2f653 100644 --- a/engine/tests/Storyboard/GenericAction/TrafficSwarmActionTest.cpp +++ b/engine/tests/Storyboard/GenericAction/TrafficSwarmActionTest.cpp @@ -16,7 +16,7 @@ #include <unordered_map> #include "Storyboard/GenericAction/TrafficSwarmAction_impl.h" -#include "TestUtils/MockProbabilityService.h" +#include "TestUtils/MockStochastics.h" #include "Utils/Ellipse.h" using namespace testing; @@ -68,7 +68,7 @@ protected: ON_CALL(mock_controller_repository, Delete(_)).WillByDefault([this]() { controller_count_--; }); - ON_CALL(*mock_probability_service_, SampleRealUniformValue(_)).WillByDefault(Return(mocked_random_value)); + ON_CALL(*mock_stochastics_, GetUniformDistributed(_, _)).WillByDefault(Return(mocked_random_value)); auto& host{static_cast<mantle_api::MockVehicle&>(mock_entity_repository.GetHost())}; @@ -117,7 +117,7 @@ protected: vehicle_classes.reserve(step_count); controller_configs.reserve(step_count); - OpenScenarioEngine::v1_3::TrafficSwarmAction action_under_test_1{parameters_, {mock_environment_}, {mock_probability_service_}}; + OpenScenarioEngine::v1_3::TrafficSwarmAction action_under_test_1{parameters_, {mock_environment_}, {mock_stochastics_}}; for (size_t i{0}; i < step_count; ++i) { @@ -142,7 +142,7 @@ protected: std::shared_ptr<mantle_api::MockEnvironment> mock_environment_{std::make_shared<mantle_api::MockEnvironment>()}; mantle_api::MockController mock_controller_; - std::shared_ptr<OpenScenarioEngine::v1_3::MockProbabilityService> mock_probability_service_{std::make_shared<OpenScenarioEngine::v1_3::MockProbabilityService>()}; + std::shared_ptr<OpenScenarioEngine::v1_3::MockStochastics> mock_stochastics_{std::make_shared<OpenScenarioEngine::v1_3::MockStochastics>()}; OpenScenarioEngine::v1_3::TrafficSwarmActionBase::Values parameters_; @@ -193,13 +193,13 @@ TEST_F(TrafficSwarmActionTestFixture, GivenDeprecatedVelocityParameter_WhenActio { parameters_.velocity = std::optional<double>(10.0); - EXPECT_THROW((OpenScenarioEngine::v1_3::TrafficSwarmAction{parameters_, {mock_environment_}, {mock_probability_service_}}), std::runtime_error); + EXPECT_THROW((OpenScenarioEngine::v1_3::TrafficSwarmAction{parameters_, {mock_environment_}, {mock_stochastics_}}), std::runtime_error); } TEST_F(TrafficSwarmActionTestFixture, GivenNoRequestedVehicle_WhenActionIsStepped_ThenNoVehicleAreSpawned) { parameters_.numberOfVehicles = 0; - OpenScenarioEngine::v1_3::TrafficSwarmAction action_under_test{parameters_, {mock_environment_}, {mock_probability_service_}}; + OpenScenarioEngine::v1_3::TrafficSwarmAction action_under_test{parameters_, {mock_environment_}, {mock_stochastics_}}; action_under_test.Step(); @@ -212,7 +212,7 @@ TEST_F(TrafficSwarmActionTestFixture, GivenFiveRequestedVehiclesInFrontOfCentral const double lower_speed_range_limit{1.0}; parameters_.numberOfVehicles = 5; parameters_.initialSpeedRange = OpenScenarioEngine::v1_3::Range{lower_speed_range_limit, 10.0}; - OpenScenarioEngine::v1_3::TrafficSwarmAction action_under_test{parameters_, {mock_environment_}, {mock_probability_service_}}; + OpenScenarioEngine::v1_3::TrafficSwarmAction action_under_test{parameters_, {mock_environment_}, {mock_stochastics_}}; const auto longitudinal_distance_between_vehicles{(parameters_.semiMajorAxis - parameters_.innerRadius) / parameters_.numberOfVehicles}; @@ -252,7 +252,7 @@ TEST_F(TrafficSwarmActionTestFixture, GivenFiveRequestedVehiclesInFrontOfCentral TEST_F(TrafficSwarmActionTestFixture, GivenOneRequestedVehiclesOutsideOfSpawningArea_WhenActionIsStepped_ThenVehiclesIsDespawned) { parameters_.numberOfVehicles = 1; - OpenScenarioEngine::v1_3::TrafficSwarmAction action_under_test{parameters_, {mock_environment_}, {mock_probability_service_}}; + OpenScenarioEngine::v1_3::TrafficSwarmAction action_under_test{parameters_, {mock_environment_}, {mock_stochastics_}}; const auto longitudinal_distance_between_vehicles{(parameters_.semiMajorAxis - parameters_.innerRadius) / parameters_.numberOfVehicles}; @@ -303,7 +303,7 @@ TEST_F(TrafficSwarmActionTestFixture, GivenOneRequestedVehiclesOutsideOfSpawning TEST_F(TrafficSwarmActionTestFixture, GivenInnerRadiusBiggerThanSpawningArea_WhenActionIsStepped_ThenExpectThrow) { parameters_.innerRadius = 150.0; - EXPECT_THROW(OpenScenarioEngine::v1_3::TrafficSwarmAction(parameters_, {mock_environment_}, {mock_probability_service_}), std::runtime_error); + EXPECT_THROW(OpenScenarioEngine::v1_3::TrafficSwarmAction(parameters_, {mock_environment_}, {mock_stochastics_}), std::runtime_error); } TEST_F(TrafficSwarmActionTestFixture, DISABLED_GivenTwoActionsWithIdenticalParameters_WhenActionsAreSteppedMultipleTimes_ThenVehicleClassesAndControllerCategoriesAreIdentical) diff --git a/engine/tests/TestUtils/MockProbabilityService.h b/engine/tests/TestUtils/MockProbabilityService.h deleted file mode 100644 index 9a1c5697..00000000 --- a/engine/tests/TestUtils/MockProbabilityService.h +++ /dev/null @@ -1,30 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2023-2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * This program and the accompanying materials are made - * available under the terms of the Eclipse Public License 2.0 - * which is available at https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - *******************************************************************************/ - -#pragma once - -#include <gmock/gmock.h> - -#include "Utils/IProbabilityService.h" - -namespace OpenScenarioEngine::v1_3 -{ -class MockProbabilityService : public IProbabilityService -{ -public: - MOCK_METHOD(double, SampleRealUniformValue, (double), (noexcept, override)); - - static inline std::shared_ptr<MockProbabilityService> make_shared() - { - return std::make_shared<MockProbabilityService>(); - } -}; - -} // namespace testing::OpenScenarioEngine::v1_3 \ No newline at end of file diff --git a/engine/tests/TestUtils/MockStochastics.h b/engine/tests/TestUtils/MockStochastics.h new file mode 100644 index 00000000..87a4a21e --- /dev/null +++ b/engine/tests/TestUtils/MockStochastics.h @@ -0,0 +1,45 @@ +/******************************************************************************* + * Copyright (c) 2023-2025 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ + +#pragma once + +#include <gmock/gmock.h> +#include <Stochastics/StochasticsInterface.h> + +namespace OpenScenarioEngine::v1_3 +{ +class MockStochastics : public StochasticsInterface +{ +public: + MOCK_METHOD(double, GetUniformDistributed, (double a, double b), (override)); + MOCK_METHOD(int, GetBinomialDistributed, (int upperRangeNum, double probSuccess), (override)); + MOCK_METHOD(double, GetNormalDistributed, (double mean, double stdDeviation), (override)); + MOCK_METHOD(double, GetExponentialDistributed, (double lambda), (override)); + MOCK_METHOD(double, GetGammaDistributed, (double mean, double stdDeviation), (override)); + MOCK_METHOD(double, GetGammaDistributedShapeScale, (double shape, double scale), (override)); + MOCK_METHOD(double, GetLogNormalDistributed, (double mean, double stdDeviation), (override)); + MOCK_METHOD(double, GetLogNormalDistributedMuSigma, (double mu, double sigma), (override)); + MOCK_METHOD(double, GetSpecialDistributed, (std::string distributionName, std::vector<double> args), (override)); + MOCK_METHOD(double, GetRandomCdfLogNormalDistributed, (double mean, double stdDeviation), (override)); + MOCK_METHOD(double, GetPercentileLogNormalDistributed, (double mean, double stdDeviation, double probability), (override)); + MOCK_METHOD(double, SampleFromDiscreteDistribution, (const DiscreteDistributionInformation* distribution), (override)); + MOCK_METHOD(DiscreteDistributionInformation*, ConditionOnRandomVariables, (const DiscreteDistributionInformation* distribution, std::vector<double> conditions, int dimUnconditionedVariable), (override)); + MOCK_METHOD(std::uint32_t, GetRandomSeed, (), (const, override)); + MOCK_METHOD(void, ReInit, (), (override)); + MOCK_METHOD(void, InitGenerator, (std::uint32_t seed), (override)); + MOCK_METHOD(bool, Instantiate, (std::string), (override)); + + static inline std::shared_ptr<MockStochastics> make_shared() + { + return std::make_shared<MockStochastics>(); + } +}; + +} // namespace testing::OpenScenarioEngine::v1_3 \ No newline at end of file diff --git a/utils/ci/conan/conanfile.txt b/utils/ci/conan/conanfile.txt index f733534b..72e5123b 100644 --- a/utils/ci/conan/conanfile.txt +++ b/utils/ci/conan/conanfile.txt @@ -3,6 +3,7 @@ units/2.3.3@openscenarioengine/testing mantleapi/v8.0.0@openscenarioengine/testing yase/d0c0e58d17358044cc9018c74308b45f6097ecfb@openscenarioengine/testing openscenario_api/v1.4.0@openscenarioengine/testing +stochastics/0.11.0@openscenarioengine/testing [options] diff --git a/utils/ci/conan/recipe/stochastics/all/conandata.yml b/utils/ci/conan/recipe/stochastics/all/conandata.yml new file mode 100644 index 00000000..c7a49bb1 --- /dev/null +++ b/utils/ci/conan/recipe/stochastics/all/conandata.yml @@ -0,0 +1,29 @@ +################################################################################ +# Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +# +# This program and the accompanying materials are made available under the +# terms of the Eclipse Public License 2.0 which is available at +# http://www.eclipse.org/legal/epl-2.0. +# +# SPDX-License-Identifier: EPL-2.0 +################################################################################ + +################################################################################ +# conan data file for building stochastics library with Conan +################################################################################ + +sources: + "0.8.0": + url: https://gitlab.eclipse.org/eclipse/openpass/stochastics-library.git + sha256: b6d331a00c8569df7fe27f600eff59780c0b5cab + "0.9.0": + url: https://gitlab.eclipse.org/eclipse/openpass/stochastics-library.git + sha256: 04852059eb3032d8f45773bb1144f3e604f2e68a + "0.10.0": + url: https://gitlab.eclipse.org/eclipse/openpass/stochastics-library.git + sha256: 73414fd443a0804dbcca1134907b78e59b9d863c + "0.11.0": + url: https://gitlab.eclipse.org/eclipse/openpass/stochastics-library.git + sha256: 6c9dde7140d3a0e2ef1b188bac35f7ae94ea3941 + "commitid": + url: https://gitlab.eclipse.org/eclipse/openpass/stochastics-library.git diff --git a/utils/ci/conan/recipe/stochastics/all/conanfile.py b/utils/ci/conan/recipe/stochastics/all/conanfile.py new file mode 100644 index 00000000..d1b0ae36 --- /dev/null +++ b/utils/ci/conan/recipe/stochastics/all/conanfile.py @@ -0,0 +1,82 @@ +################################################################################ +# Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +# +# This program and the accompanying materials are made available under the +# terms of the Eclipse Public License 2.0 which is available at +# http://www.eclipse.org/legal/epl-2.0. +# +# SPDX-License-Identifier: EPL-2.0 +################################################################################ + +################################################################################ +# Install file for building stochastics with Conan +################################################################################ + +from conan import ConanFile +from conan.tools.scm import Git +from conan.tools.cmake import CMakeToolchain, CMake, cmake_layout, CMakeDeps +from conan.tools.files import rm, export_conandata_patches, apply_conandata_patches +import os + + +required_conan_version = ">=2.2.0" + +class StochasticsLibraryRecipe(ConanFile): + name = "stochastics" + settings = "os", "compiler", "build_type", "arch" + options = {"shared": [True, False], "fPIC": [True, False], + "commit_id_value":[None, "ANY"]} + default_options = {"shared": False, "fPIC": True, + "commit_id_value": None} + exports_sources = "*" + no_copy_source = False + short_paths = True + commit = None + + def config_options(self): + if self.settings.os == "Windows": + del self.options.fPIC + + def configure(self): + if self.options.shared: + self.options.rm_safe("fPIC") + if self.options.commit_id_value: + self.commit = self.options.commit_id_value + + def export_sources(self): + export_conandata_patches(self) + + def generate(self): + tc = CMakeToolchain(self) + tc.generate() + + def _get_url_sha(self): + if self.version != "commitid" : + url = self.conan_data["sources"][self.version]["url"] + self.commit = self.conan_data["sources"][self.version]["sha256"] + else: + url = self.conan_data["sources"]["commitid"]["url"] + return url + + def source(self): + url = self._get_url_sha() + git = Git(self) + git.clone(url=url, target=self.name) + git.folder=self.name + git.checkout(commit=self.commit) + + def build(self): + apply_conandata_patches(self) + cmake = CMake(self) + cmake.configure(build_script_folder=self.name) + cmake.build() + + def package(self): + cmake = CMake(self) + cmake.install() + + def package_info(self): + self.cpp_info.set_property("cmake_find_mode", "none") + self.cpp_info.set_property("cmake_module_file_name", "Stochastics") + self.cpp_info.set_property("cmake_file_name", "Stochastics") + self.cpp_info.set_property("cmake_target_name", "Stochastics::Stochastics") diff --git a/utils/ci/conan/recipe/stochastics/config.yml b/utils/ci/conan/recipe/stochastics/config.yml new file mode 100644 index 00000000..7a34f1d4 --- /dev/null +++ b/utils/ci/conan/recipe/stochastics/config.yml @@ -0,0 +1,24 @@ +################################################################################ +# Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +# +# This program and the accompanying materials are made available under the +# terms of the Eclipse Public License 2.0 which is available at +# http://www.eclipse.org/legal/epl-2.0. +# +# SPDX-License-Identifier: EPL-2.0 +################################################################################ + +################################################################################ +# config file for building stochastics library with Conan +################################################################################ +versions: + "0.8.0": + folder: "all" + "0.9.0": + folder: "all" + "0.10.0": + folder: "all" + "0.11.0": + folder: "all" + "commitid": + folder: "all" diff --git a/utils/ci/scripts/20_configure.sh b/utils/ci/scripts/20_configure.sh index d511b2f1..303502a8 100755 --- a/utils/ci/scripts/20_configure.sh +++ b/utils/ci/scripts/20_configure.sh @@ -33,6 +33,7 @@ cd "$MYDIR/../../../../build" || exit 1 DEPS=( "$PWD/../deps/direct_deploy/units" "$PWD/../deps/direct_deploy/mantleapi" + "$PWD/../deps/direct_deploy/stochastics" "$PWD/../deps/direct_deploy/yase" "$PWD/../deps/direct_deploy/openscenario_api" -- GitLab From ad66e1fef725ecdcde9d78f48529284f2c11def2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Paris?= <rene.paris@in-tech.com> Date: Wed, 12 Feb 2025 12:51:41 +0000 Subject: [PATCH 2/2] fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b735a38a..1100ed55 100644 --- a/README.md +++ b/README.md @@ -260,7 +260,7 @@ Converts `NET_ASAM_OPENSCENARIO::v1_3::ITransitionDynamics` object type to [mant | [Units](https://github.com/nholthaus/units) | b04d436 | 2.3.3 | MIT License | | [googletest](https://github.com/google/googletest) | f8d7d77 | 1.14.0 | BSD-3-Clause License | | [CPM](https://github.com/cpm-cmake/CPM.cmake) | 03705fc | 0.36.0 | MIT License | -| [openpass/stochastics-library](https://gitlab.eclipse.org/eclipse/openpass/stochastics-library) | 6c9dde71 | 0.11.0 | ELP 2.0 | +| [openpass/stochastics-library](https://gitlab.eclipse.org/eclipse/openpass/stochastics-library) | 6c9dde71 | 0.11.0 | EPL 2.0 | # Issues -- GitLab