From 304b2ee919890c7f739f7c416828aec5fc06ba73 Mon Sep 17 00:00:00 2001
From: Netrapalli-Madhusudhan Raghunandan
 <netrapalli-madhusudhan.raghunandan@partner.bmwgroup.com>
Date: Mon, 7 Apr 2025 08:08:37 +0200
Subject: [PATCH] Run gtgen with common configs

---
 .../Common/Scenarios/XOSC/Scenario.xosc       | 210 ++++++++++++++++++
 .../Common/UserSettings/UserSettings.ini      |  39 ++++
 utils/ci/Jenkinsfile                          |   3 +-
 utils/ci/scripts/run_gtgen.sh                 |  38 ++++
 4 files changed, 289 insertions(+), 1 deletion(-)
 create mode 100644 sim/contrib/examples/Common/Scenarios/XOSC/Scenario.xosc
 create mode 100644 sim/contrib/examples/Common/UserSettings/UserSettings.ini
 create mode 100755 utils/ci/scripts/run_gtgen.sh

diff --git a/sim/contrib/examples/Common/Scenarios/XOSC/Scenario.xosc b/sim/contrib/examples/Common/Scenarios/XOSC/Scenario.xosc
new file mode 100644
index 000000000..17eea7f30
--- /dev/null
+++ b/sim/contrib/examples/Common/Scenarios/XOSC/Scenario.xosc
@@ -0,0 +1,210 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<OpenSCENARIO>
+  <FileHeader revMajor="1" revMinor="1" date="2020-06-26T00:17:00" description="openPASS default scenario" author="in-tech GmbH"/>
+  <CatalogLocations>
+    <VehicleCatalog>
+      <Directory path="../../Vehicles"/>
+    </VehicleCatalog>
+    <PedestrianCatalog>
+      <Directory path="../../Vehicles"/>
+    </PedestrianCatalog>
+    <ControllerCatalog>
+      <Directory path=""/>
+    </ControllerCatalog>
+    <ManeuverCatalog>
+      <Directory path=""/>
+    </ManeuverCatalog>
+    <MiscObjectCatalog>
+      <Directory path=""/>
+    </MiscObjectCatalog>
+    <EnvironmentCatalog>
+      <Directory path=""/>
+    </EnvironmentCatalog>
+    <TrajectoryCatalog>
+      <Directory path=""/>
+    </TrajectoryCatalog>
+    <RouteCatalog>
+      <Directory path=""/>
+    </RouteCatalog>
+  </CatalogLocations>
+  <RoadNetwork>
+    <LogicFile filepath="../../SceneryConfiguration.xodr"/>
+    <SceneGraphFile filepath=""/>
+  </RoadNetwork>
+  <Entities>
+    <ScenarioObject name="Ego">
+      <CatalogReference catalogName="VehicleCatalog" entryName="car_mini_cooper"/>
+      <ObjectController name="Ego">
+        <Controller name="libComplexController">
+          <Properties>
+            <Property name="controllerConfig::name" value="Ego"/>
+            <Property name="controllerConfig::parameters::profile" value="MiddleClassCarAgent"/>
+            <Property name="simulator::paths::config" value="/home/jenkins/agent/opSimulation/repo/sim/contrib/examples/Common"/>
+            <Property name="simulator::paths::lib" value="/home/jenkins/agent/opSimulation/gecco/gecco/modules"/>
+            <Property name="entityProperties::bounding_box::dimension::height" value="1.420000"/>
+            <Property name="entityProperties::bounding_box::dimension::length" value="3.800000"/>
+            <Property name="entityProperties::bounding_box::dimension::width" value="1.890000"/>
+            <Property name="entityProperties::bounding_box::geometric_center::x" value="1.350000"/>
+            <Property name="entityProperties::bounding_box::geometric_center::y" value="0.000000"/>
+            <Property name="entityProperties::bounding_box::geometric_center::z" value="0.710000"/>
+            <Property name="entityProperties::classification" value="4"/>
+            <Property name="entityProperties::front_axle::bb_center_to_axle_center::x" value="1.130000"/>
+            <Property name="entityProperties::front_axle::bb_center_to_axle_center::y" value="0.000000"/>
+            <Property name="entityProperties::front_axle::bb_center_to_axle_center::z" value="-0.415000"/>
+            <Property name="entityProperties::front_axle::max_steering" value="0.476600"/>
+            <Property name="entityProperties::front_axle::track_width" value="1.800000"/>
+            <Property name="entityProperties::front_axle::wheel_diameter" value="0.590000"/>
+            <Property name="entityProperties::is_controlled_externally" value="0"/>
+            <Property name="entityProperties::is_host" value="1"/>
+            <Property name="entityProperties::mass" value="1235.000000"/>
+            <Property name="entityProperties::model" value="car_mini_cooper"/>
+            <Property name="entityProperties::performance::max_acceleration" value="9.806650"/>
+            <Property name="entityProperties::performance::max_acceleration_rate" value="inf"/>
+            <Property name="entityProperties::performance::max_deceleration" value="9.806650"/>
+            <Property name="entityProperties::performance::max_deceleration_rate" value="inf"/>
+            <Property name="entityProperties::performance::max_speed" value="58.330000"/>
+            <Property name="entityProperties::properties::AirDragCoefficient" value="0.3"/>
+            <Property name="entityProperties::properties::AxleRatio" value="3.789"/>
+            <Property name="entityProperties::properties::DecelerationFromPowertrainDrag" value="0.5"/>
+            <Property name="entityProperties::properties::FrictionCoefficient" value="1.0"/>
+            <Property name="entityProperties::properties::FrontSurface" value="2.07"/>
+            <Property name="entityProperties::properties::GearRatio1" value="4.154"/>
+            <Property name="entityProperties::properties::GearRatio2" value="2.45"/>
+            <Property name="entityProperties::properties::GearRatio3" value="1.557"/>
+            <Property name="entityProperties::properties::GearRatio4" value="1.09"/>
+            <Property name="entityProperties::properties::GearRatio5" value="0.843"/>
+            <Property name="entityProperties::properties::GearRatio6" value="0.675"/>
+            <Property name="entityProperties::properties::GearRatio7" value="0.547"/>
+            <Property name="entityProperties::properties::MaximumEngineSpeed" value="6000.0"/>
+            <Property name="entityProperties::properties::MaximumEngineTorque" value="220.0"/>
+            <Property name="entityProperties::properties::MinimumEngineSpeed" value="900.0"/>
+            <Property name="entityProperties::properties::MinimumEngineTorque" value="-54.0"/>
+            <Property name="entityProperties::properties::MomentInertiaPitch" value="0.0"/>
+            <Property name="entityProperties::properties::MomentInertiaRoll" value="0.0"/>
+            <Property name="entityProperties::properties::MomentInertiaYaw" value="0.0"/>
+            <Property name="entityProperties::properties::NumberOfGears" value="7"/>
+            <Property name="entityProperties::properties::SensorPosition/FrontCenter/Height" value="0.57"/>
+            <Property name="entityProperties::properties::SensorPosition/FrontCenter/Lateral" value="0.0"/>
+            <Property name="entityProperties::properties::SensorPosition/FrontCenter/Longitudinal" value="3.22"/>
+            <Property name="entityProperties::properties::SensorPosition/FrontCenter/Pitch" value="0.0"/>
+            <Property name="entityProperties::properties::SensorPosition/FrontCenter/Roll" value="0.0"/>
+            <Property name="entityProperties::properties::SensorPosition/FrontCenter/Yaw" value="0.0"/>
+            <Property name="entityProperties::properties::SensorPosition/FrontLeft/Height" value="0.65"/>
+            <Property name="entityProperties::properties::SensorPosition/FrontLeft/Lateral" value="0.65"/>
+            <Property name="entityProperties::properties::SensorPosition/FrontLeft/Longitudinal" value="3.05"/>
+            <Property name="entityProperties::properties::SensorPosition/FrontLeft/Pitch" value="0.0"/>
+            <Property name="entityProperties::properties::SensorPosition/FrontLeft/Roll" value="0.0"/>
+            <Property name="entityProperties::properties::SensorPosition/FrontLeft/Yaw" value="1.134464"/>
+            <Property name="entityProperties::properties::SensorPosition/FrontRight/Height" value="0.65"/>
+            <Property name="entityProperties::properties::SensorPosition/FrontRight/Lateral" value="-0.65"/>
+            <Property name="entityProperties::properties::SensorPosition/FrontRight/Longitudinal" value="3.05"/>
+            <Property name="entityProperties::properties::SensorPosition/FrontRight/Pitch" value="0.0"/>
+            <Property name="entityProperties::properties::SensorPosition/FrontRight/Roll" value="0.0"/>
+            <Property name="entityProperties::properties::SensorPosition/FrontRight/Yaw" value="-1.134464"/>
+            <Property name="entityProperties::properties::SensorPosition/FrontWindow/Height" value="1.28"/>
+            <Property name="entityProperties::properties::SensorPosition/FrontWindow/Lateral" value="0.0"/>
+            <Property name="entityProperties::properties::SensorPosition/FrontWindow/Longitudinal" value="1.83"/>
+            <Property name="entityProperties::properties::SensorPosition/FrontWindow/Pitch" value="0.0"/>
+            <Property name="entityProperties::properties::SensorPosition/FrontWindow/Roll" value="0.0"/>
+            <Property name="entityProperties::properties::SensorPosition/FrontWindow/Yaw" value="0.0"/>
+            <Property name="entityProperties::properties::SensorPosition/RearLeft/Height" value="0.6"/>
+            <Property name="entityProperties::properties::SensorPosition/RearLeft/Lateral" value="0.7"/>
+            <Property name="entityProperties::properties::SensorPosition/RearLeft/Longitudinal" value="-0.35"/>
+            <Property name="entityProperties::properties::SensorPosition/RearLeft/Pitch" value="0.0"/>
+            <Property name="entityProperties::properties::SensorPosition/RearLeft/Roll" value="0.0"/>
+            <Property name="entityProperties::properties::SensorPosition/RearLeft/Yaw" value="2.146755"/>
+            <Property name="entityProperties::properties::SensorPosition/RearRight/Height" value="0.6"/>
+            <Property name="entityProperties::properties::SensorPosition/RearRight/Lateral" value="-0.7"/>
+            <Property name="entityProperties::properties::SensorPosition/RearRight/Longitudinal" value="-0.35"/>
+            <Property name="entityProperties::properties::SensorPosition/RearRight/Pitch" value="0.0"/>
+            <Property name="entityProperties::properties::SensorPosition/RearRight/Roll" value="0.0"/>
+            <Property name="entityProperties::properties::SensorPosition/RearRight/Yaw" value="-2.146755"/>
+            <Property name="entityProperties::properties::SensorPosition/RearWindow/Height" value="1.33"/>
+            <Property name="entityProperties::properties::SensorPosition/RearWindow/Lateral" value="0.0"/>
+            <Property name="entityProperties::properties::SensorPosition/RearWindow/Longitudinal" value="-0.08"/>
+            <Property name="entityProperties::properties::SensorPosition/RearWindow/Pitch" value="0.0"/>
+            <Property name="entityProperties::properties::SensorPosition/RearWindow/Roll" value="0.0"/>
+            <Property name="entityProperties::properties::SensorPosition/RearWindow/Yaw" value="3.141592"/>
+            <Property name="entityProperties::properties::SensorPosition/SideLeft/Height" value="0.26"/>
+            <Property name="entityProperties::properties::SensorPosition/SideLeft/Lateral" value="0.81"/>
+            <Property name="entityProperties::properties::SensorPosition/SideLeft/Longitudinal" value="1.06"/>
+            <Property name="entityProperties::properties::SensorPosition/SideLeft/Pitch" value="0.0"/>
+            <Property name="entityProperties::properties::SensorPosition/SideLeft/Roll" value="0.0"/>
+            <Property name="entityProperties::properties::SensorPosition/SideLeft/Yaw" value="1.570796"/>
+            <Property name="entityProperties::properties::SensorPosition/SideRight/Height" value="0.26"/>
+            <Property name="entityProperties::properties::SensorPosition/SideRight/Lateral" value="-0.81"/>
+            <Property name="entityProperties::properties::SensorPosition/SideRight/Longitudinal" value="1.06"/>
+            <Property name="entityProperties::properties::SensorPosition/SideRight/Pitch" value="0.0"/>
+            <Property name="entityProperties::properties::SensorPosition/SideRight/Roll" value="0.0"/>
+            <Property name="entityProperties::properties::SensorPosition/SideRight/Yaw" value="-1.570796"/>
+            <Property name="entityProperties::properties::SteeringRatio" value="10.7"/>
+            <Property name="entityProperties::rear_axle::bb_center_to_axle_center::x" value="-1.350000"/>
+            <Property name="entityProperties::rear_axle::bb_center_to_axle_center::y" value="0.000000"/>
+            <Property name="entityProperties::rear_axle::bb_center_to_axle_center::z" value="-0.415000"/>
+            <Property name="entityProperties::rear_axle::max_steering" value="0.000000"/>
+            <Property name="entityProperties::rear_axle::track_width" value="1.800000"/>
+            <Property name="entityProperties::rear_axle::wheel_diameter" value="0.590000"/>
+            <Property name="entityProperties::type" value="2"/>
+          </Properties>
+        </Controller>
+      </ObjectController>
+    </ScenarioObject>
+  </Entities>
+  <Storyboard>
+    <Init>
+      <Actions>
+        <Private entityRef="Ego">
+          <PrivateAction>
+            <TeleportAction>
+              <Position>
+                <LanePosition roadId="1" laneId="-1" offset="0.0" s="0.0">
+                  <Orientation type="relative"/>
+                </LanePosition>
+              </Position>
+            </TeleportAction>
+          </PrivateAction>
+          <PrivateAction>
+            <LongitudinalAction>
+              <SpeedAction>
+                <SpeedActionDynamics dynamicsShape="step" value="0.0" dynamicsDimension="rate"/>
+                <SpeedActionTarget>
+                  <AbsoluteTargetSpeed value="43.5"/>
+                </SpeedActionTarget>
+              </SpeedAction>
+            </LongitudinalAction>
+          </PrivateAction>
+          <PrivateAction>
+            <ControllerAction>
+              <ActivateControllerAction objectControllerRef="Ego" lateral="true" longitudinal="true" />
+            </ControllerAction>
+          </PrivateAction>
+        </Private>
+      </Actions>
+    </Init>
+    <Story name="">
+      <Act name="">
+        <ManeuverGroup name="" maximumExecutionCount="1">
+          <Actors selectTriggeringEntities="false"/>
+        </ManeuverGroup>
+        <StartTrigger>
+          <ConditionGroup>
+            <Condition name="StartTime" delay="0" conditionEdge="rising">
+              <ByValueCondition>
+                <SimulationTimeCondition value="0.0" rule="greaterOrEqual"/>
+              </ByValueCondition>
+            </Condition>
+          </ConditionGroup>
+        </StartTrigger>
+      </Act>
+    </Story>
+    <StopTrigger>
+      <ConditionGroup>
+        <Condition name="EndTime" delay="0" conditionEdge="rising">
+          <ByValueCondition>
+            <SimulationTimeCondition value="30.0" rule="greaterThan"/>
+          </ByValueCondition>
+        </Condition>
+      </ConditionGroup>
+    </StopTrigger>
+  </Storyboard>
+</OpenSCENARIO>
diff --git a/sim/contrib/examples/Common/UserSettings/UserSettings.ini b/sim/contrib/examples/Common/UserSettings/UserSettings.ini
new file mode 100644
index 000000000..fe04e9405
--- /dev/null
+++ b/sim/contrib/examples/Common/UserSettings/UserSettings.ini
@@ -0,0 +1,39 @@
+# Version : 0.0.1
+# Documentation : see GT-Gen Core project from https://gitlab.eclipse.org/eclipse/openpass
+
+[FileLogging]
+LogLevel = Debug
+
+[GroundTruth]
+LaneMarkingDistance = 0.4
+SimplifyLaneMarkingsEpsilon = 0.01
+SimplifyLaneMarkings = true
+AllowInvalidLaneLocations = true
+
+[HostVehicle]
+Movement = InternalVehicle
+BlockingCommunication = false
+TimeScale = 1
+RecoveryMode = false
+
+[Map]
+IncludeObstacles = false
+
+[MapChunking]
+ChunkGridSize = 50
+CellsPerDirection = 2
+
+[UserDirectories]
+Scenarios =
+Maps =
+Plugins = {/home/jenkins/agent/opSimulation/gecco/gecco/modules}
+
+[SimulationResults]
+LogCyclics = true
+OutputDirectoryPath = /home/jenkins/agent/opSimulation/artifacts/config_output
+
+[Clock]
+UseSystemClock = false
+
+[Foxglove]
+WebsocketServer = false
diff --git a/utils/ci/Jenkinsfile b/utils/ci/Jenkinsfile
index fff5f5967..75571c6bc 100644
--- a/utils/ci/Jenkinsfile
+++ b/utils/ci/Jenkinsfile
@@ -14,7 +14,7 @@ pipeline {
   parameters {
     booleanParam(name: 'BUILD_DOCKER_IMAGE', defaultValue: false, description: 'Force docker image (re-)build')
     string(name: 'OPTESTRUNNER_URL', defaultValue: 'https://download.eclipse.org/openpass/snapshots/opTestrunner/pytest_optestrunner-1.1-py3-none-any.whl', description: 'URL to download opTestrunner binaries')
-    string(name: 'GECCO_URL', defaultValue: 'https://ci.eclipse.org/openpass/job/gecco/view/change-requests/job/MR-3/lastSuccessfulBuild/artifact/artifacts/gecco.tar.gz', description: 'URL to download gecco binaries')
+    string(name: 'GECCO_URL', defaultValue: 'https://ci.eclipse.org/openpass/job/gecco/view/change-requests/job/MR-3/6/artifact/artifacts/gecco.tar.gz', description: 'URL to download gecco binaries')
     string(name: 'GTGEN_CLI_URL', defaultValue: 'https://ci.eclipse.org/openpass/job/GT-Gen-Simulator-PreMerge-Gate/view/tags/job/v11.3.0/lastSuccessfulBuild/artifact/artifacts/gtgen-cli_1.1.0_amd64.deb', description: 'URL to download gtgen cli binaries')
     string(name: 'GTGEN_SIM_URL', defaultValue: 'https://ci.eclipse.org/openpass/job/GT-Gen-Simulator-PreMerge-Gate/view/tags/job/v11.3.0/lastSuccessfulBuild/artifact/artifacts/gtgen-simulator_11.3.0_amd64.deb', description: 'URL to download gtgen simulator binaries')
   }
@@ -117,6 +117,7 @@ spec:
             stage('Linux: Run E2E') {
               steps {
                 container('openpass-build') {
+                  sh 'bash repo/utils/ci/scripts/run_gtgen.sh'
                   sh 'bash repo/utils/ci/scripts/55_endtoend.sh'
                 }
               }
diff --git a/utils/ci/scripts/run_gtgen.sh b/utils/ci/scripts/run_gtgen.sh
new file mode 100755
index 000000000..f859309bf
--- /dev/null
+++ b/utils/ci/scripts/run_gtgen.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+################################################################################
+# Copyright (c) 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
+# http://www.eclipse.org/legal/epl-2.0.
+#
+# SPDX-License-Identifier: EPL-2.0
+################################################################################
+
+################################################################################
+# This Script runs gtgen with common configs
+################################################################################
+
+if [[ "$(uname)" != "Linux" ]]; then
+  echo "Skipping E2E tests on non-Linux platform"
+  exit 0
+fi
+SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+OP_REPO_DIR="${OP_REPO_DIR:=$SCRIPT_DIR/../../..}"
+
+if [[ -z "${GECCO_DIR}" ]]; then
+  # If not defined, set a default value
+  GTGEN_DIR="$SCRIPT_DIR/../../../../gtgen_cli"
+  GECCO_DIR="$SCRIPT_DIR/../../../../gecco"
+  echo "WARN: GECCO_DIR variable is not set. Setting it to:
+        GECCO_DIR is ${GECCO_DIR}"
+fi
+
+mkdir -p "$SCRIPT_DIR/../../../../artifacts" || exit 1
+mkdir -p "$SCRIPT_DIR"/../../../../artifacts/config_output || exit 1
+
+GTGEN_CLI_PATH="$GTGEN_DIR"
+CONFIGS_PATH="$OP_REPO_DIR/sim/contrib/examples/Common"
+
+"${GTGEN_CLI_PATH}/gtgen_cli" -t 100 -s Scenario.xosc -d "${CONFIGS_PATH}" || exit 1;
\ No newline at end of file
-- 
GitLab