From 7a370f1a8646ce965a5604fb2b066dc18014e82c Mon Sep 17 00:00:00 2001 From: Victor <94930828+vctr-dng@users.noreply.github.com> Date: Tue, 10 Feb 2026 21:14:58 -0500 Subject: [PATCH 1/7] FSDS Python package (#1) * add .gitignore and pre-commit hooks * add pyproject.toml to make it installable --- .pre-commit-config.yaml | 26 +++++ python/.gitignore | 216 ++++++++++++++++++++++++++++++++++++++++ python/pyproject.toml | 28 ++++++ 3 files changed, 270 insertions(+) create mode 100644 .pre-commit-config.yaml create mode 100644 python/.gitignore create mode 100644 python/pyproject.toml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..02f6ee82 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,26 @@ +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v5.0.0 + hooks: + - id: trailing-whitespace + - id: end-of-file-fixer + - id: check-toml + - id: check-yaml + - id: check-added-large-files + - id: check-case-conflict + - id: check-merge-conflict + - id: detect-private-key + + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.14.11 + hooks: + - id: ruff-check + args: [--fix, --exit-non-zero-on-fix] + - id: ruff-format + + - repo: https://github.com/pre-commit/mirrors-mypy + rev: v1.19.1 + hooks: + - id: mypy + additional_dependencies: [] + args: [--ignore-missing-imports, --strict] diff --git a/python/.gitignore b/python/.gitignore new file mode 100644 index 00000000..8c4c7c7f --- /dev/null +++ b/python/.gitignore @@ -0,0 +1,216 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[codz] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py.cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +# Pipfile.lock + +# UV +# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# uv.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +# poetry.lock +# poetry.toml + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +# pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python. +# https://pdm-project.org/en/latest/usage/project/#working-with-version-control +# pdm.lock +# pdm.toml +.pdm-python +.pdm-build/ + +# pixi +# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control. +# pixi.lock +# Pixi creates a virtual environment in the .pixi directory, just like venv module creates one +# in the .venv directory. It is recommended not to include this directory in version control. +.pixi + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# Redis +*.rdb +*.aof +*.pid + +# RabbitMQ +mnesia/ +rabbitmq/ +rabbitmq-data/ + +# ActiveMQ +activemq-data/ + +# SageMath parsed files +*.sage.py + +# Environments +.env +.envrc +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +# .idea/ + +# Abstra +# Abstra is an AI-powered process automation framework. +# Ignore directories containing user credentials, local state, and settings. +# Learn more at https://abstra.io/docs +.abstra/ + +# Visual Studio Code +# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore +# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore +# and can be added to the global gitignore or merged into this file. However, if you prefer, +# you could uncomment the following to ignore the entire vscode folder +# .vscode/ + +# Ruff stuff: +.ruff_cache/ + +# PyPI configuration file +.pypirc + +# Marimo +marimo/_static/ +marimo/_lsp/ +__marimo__/ + +# Streamlit +.streamlit/secrets.toml diff --git a/python/pyproject.toml b/python/pyproject.toml new file mode 100644 index 00000000..185a8f94 --- /dev/null +++ b/python/pyproject.toml @@ -0,0 +1,28 @@ +[project] +name = "fsds" +version = "0.1.0" +description = "Python client for the Formula Student Driverless Simulator (FSDS)" +readme = { file = "README.md", content-type = "text/markdown" } +requires-python = ">=3.12" +license = { text = "GPL-2.0-or-later" } +authors = [ + { name = "Formula Student Driverless Simulator Contributors" } +] +dependencies = [ + "msgpack-rpc-python @ git+https://github.com/vctr-dng/msgpack-rpc-python.git@fsds-python-pkg", + "backports.ssl_match_hostname", # required for msgpack-rpc-python + "numpy", + "opencv-contrib-python", +] + +[project.urls] +Homepage = "https://github.com/vctr-dng/Formula-Student-Driverless-Simulator" +Repository = "https://github.com/vctr-dng/Formula-Student-Driverless-Simulator" + +[build-system] +requires = ["uv_build >= 0.9.21, <0.10.0"] +build-backend = "uv_build" + +[tool.uv.build-backend] +module-name = "fsds" +module-root = "" From a5e78fd2e8f0299f2738014139df1006805c30a4 Mon Sep 17 00:00:00 2001 From: vctr-dng <94930828+vctr-dng@users.noreply.github.com> Date: Wed, 11 Feb 2026 01:47:16 -0500 Subject: [PATCH 2/7] feature: reset car to a specific pose --- UE4Project/Plugins/AirSim/Source/SimMode/SimModeBase.cpp | 5 +++++ UE4Project/Plugins/AirSim/Source/SimMode/SimModeBase.h | 1 + .../Plugins/AirSim/Source/Vehicles/Car/CarPawnSimApi.cpp | 7 +++++++ .../Plugins/AirSim/Source/Vehicles/Car/CarPawnSimApi.h | 1 + UE4Project/Plugins/AirSim/Source/WorldSimApi.cpp | 7 +++++++ UE4Project/Plugins/AirSim/Source/WorldSimApi.h | 1 + 6 files changed, 22 insertions(+) diff --git a/UE4Project/Plugins/AirSim/Source/SimMode/SimModeBase.cpp b/UE4Project/Plugins/AirSim/Source/SimMode/SimModeBase.cpp index 9005bbea..c8b6a58e 100644 --- a/UE4Project/Plugins/AirSim/Source/SimMode/SimModeBase.cpp +++ b/UE4Project/Plugins/AirSim/Source/SimMode/SimModeBase.cpp @@ -306,6 +306,11 @@ void ASimModeBase::reset() }, true); } +void ASimModeBase::resetToPose(const msr::airlib::Pose& pose, const std::string& vehicle_name) +{ + getVehicleSimApi(vehicle_name)->resetToPose(pose); +} + void ASimModeBase::setupInputBindings() { UAirBlueprintLib::EnableInput(this); diff --git a/UE4Project/Plugins/AirSim/Source/SimMode/SimModeBase.h b/UE4Project/Plugins/AirSim/Source/SimMode/SimModeBase.h index 3579f041..0ae4aee5 100644 --- a/UE4Project/Plugins/AirSim/Source/SimMode/SimModeBase.h +++ b/UE4Project/Plugins/AirSim/Source/SimMode/SimModeBase.h @@ -47,6 +47,7 @@ class AIRSIM_API ASimModeBase : public AActor //additional overridable methods virtual void reset(); + virtual void resetToPose(const msr::airlib::Pose& pose, const std::string& vehicle_name = ""); virtual ECameraDirectorMode getInitialViewMode() const; virtual bool isPaused() const; diff --git a/UE4Project/Plugins/AirSim/Source/Vehicles/Car/CarPawnSimApi.cpp b/UE4Project/Plugins/AirSim/Source/Vehicles/Car/CarPawnSimApi.cpp index 45e3b5c4..752f652d 100644 --- a/UE4Project/Plugins/AirSim/Source/Vehicles/Car/CarPawnSimApi.cpp +++ b/UE4Project/Plugins/AirSim/Source/Vehicles/Car/CarPawnSimApi.cpp @@ -185,6 +185,13 @@ void CarPawnSimApi::resetImplementation() resetPawn(); } +void CarPawnSimApi::resetToPose(const Pose& pose) +{ + setPoseInternal(pose, true); + kinematics_->reset(); + resetPawn(); +} + //physics tick void CarPawnSimApi::update() { diff --git a/UE4Project/Plugins/AirSim/Source/Vehicles/Car/CarPawnSimApi.h b/UE4Project/Plugins/AirSim/Source/Vehicles/Car/CarPawnSimApi.h index 48857800..dc7adac8 100644 --- a/UE4Project/Plugins/AirSim/Source/Vehicles/Car/CarPawnSimApi.h +++ b/UE4Project/Plugins/AirSim/Source/Vehicles/Car/CarPawnSimApi.h @@ -100,6 +100,7 @@ class CarPawnSimApi : public msr::airlib::VehicleSimApiBase virtual std::vector getImage(const std::string& camera_name, ImageCaptureBase::ImageType image_type) const override; virtual Pose getPose() const override; virtual void setPose(const Pose& pose, bool ignore_collision) override; + virtual void resetToPose(const Pose& pose) override; virtual msr::airlib::CameraInfo getCameraInfo(const std::string& camera_name) const override; const APIPCamera* getCamera(const std::string& camera_name) const; diff --git a/UE4Project/Plugins/AirSim/Source/WorldSimApi.cpp b/UE4Project/Plugins/AirSim/Source/WorldSimApi.cpp index 44b1354a..ef74fbea 100644 --- a/UE4Project/Plugins/AirSim/Source/WorldSimApi.cpp +++ b/UE4Project/Plugins/AirSim/Source/WorldSimApi.cpp @@ -23,6 +23,13 @@ void WorldSimApi::reset() }, true); } +void WorldSimApi::resetToPose(const Pose& pose, const std::string& vehicle_name) +{ + UAirBlueprintLib::RunCommandOnGameThread([this, pose, vehicle_name]() { + simmode_->resetToPose(pose, vehicle_name); + }, true); +} + void WorldSimApi::pause(bool is_paused) { simmode_->pause(is_paused); diff --git a/UE4Project/Plugins/AirSim/Source/WorldSimApi.h b/UE4Project/Plugins/AirSim/Source/WorldSimApi.h index a6777af1..d7ef2314 100644 --- a/UE4Project/Plugins/AirSim/Source/WorldSimApi.h +++ b/UE4Project/Plugins/AirSim/Source/WorldSimApi.h @@ -18,6 +18,7 @@ class WorldSimApi : public msr::airlib::WorldSimApiBase { virtual bool isPaused() const override; virtual void reset() override; + virtual void resetToPose(const Pose& pose, const std::string& vehicle_name = "") override; virtual void pause(bool is_paused) override; virtual void continueForTime(double seconds) override; From df59d59256233dcfef3c1cb2e392ac7557f4e36e Mon Sep 17 00:00:00 2001 From: vctr-dng <94930828+vctr-dng@users.noreply.github.com> Date: Wed, 11 Feb 2026 01:49:11 -0500 Subject: [PATCH 3/7] feature: set car velocity vector --- .../Plugins/AirSim/Source/CoordFrameTransformer.cpp | 4 ++++ .../Plugins/AirSim/Source/CoordFrameTransformer.h | 1 + .../AirSim/Source/Vehicles/Car/CarPawnSimApi.cpp | 11 +++++++++++ .../AirSim/Source/Vehicles/Car/CarPawnSimApi.h | 1 + 4 files changed, 17 insertions(+) diff --git a/UE4Project/Plugins/AirSim/Source/CoordFrameTransformer.cpp b/UE4Project/Plugins/AirSim/Source/CoordFrameTransformer.cpp index 3b8da023..26cfc5bb 100644 --- a/UE4Project/Plugins/AirSim/Source/CoordFrameTransformer.cpp +++ b/UE4Project/Plugins/AirSim/Source/CoordFrameTransformer.cpp @@ -34,6 +34,10 @@ CoordFrameTransformer::Vector3r CoordFrameTransformer::toLocalEnuVelocity(const { return CoordFrameTransformer::toVector3r(velocity, 1 / world_to_meters_); } +FVector CoordFrameTransformer::fromLocalEnuVelocity(const Vector3r& velocity) const +{ + return CoordFrameTransformer::toFVector(velocity, world_to_meters_); +} CoordFrameTransformer::Vector3r CoordFrameTransformer::toGlobalEnu(const FVector& position) const { return CoordFrameTransformer::toVector3r(position - global_transform_.GetLocation(), 1 / world_to_meters_); diff --git a/UE4Project/Plugins/AirSim/Source/CoordFrameTransformer.h b/UE4Project/Plugins/AirSim/Source/CoordFrameTransformer.h index 90880164..de24ae9a 100644 --- a/UE4Project/Plugins/AirSim/Source/CoordFrameTransformer.h +++ b/UE4Project/Plugins/AirSim/Source/CoordFrameTransformer.h @@ -29,6 +29,7 @@ class AIRSIM_API CoordFrameTransformer //UU -> local ENU Vector3r toLocalEnu(const FVector& position) const; Vector3r toLocalEnuVelocity(const FVector& velocity) const; + FVector fromLocalEnuVelocity(const Vector3r& velocity) const; Vector3r toGlobalEnu(const FVector& position) const; Quaternionr toEnu(const FQuat& q) const; float toEnu(float length) const; diff --git a/UE4Project/Plugins/AirSim/Source/Vehicles/Car/CarPawnSimApi.cpp b/UE4Project/Plugins/AirSim/Source/Vehicles/Car/CarPawnSimApi.cpp index 752f652d..6a84e449 100644 --- a/UE4Project/Plugins/AirSim/Source/Vehicles/Car/CarPawnSimApi.cpp +++ b/UE4Project/Plugins/AirSim/Source/Vehicles/Car/CarPawnSimApi.cpp @@ -192,6 +192,17 @@ void CarPawnSimApi::resetToPose(const Pose& pose) resetPawn(); } +void CarPawnSimApi::setLinearVelocity(const msr::airlib::Vector3r& velocity) +{ + FVector velocity_uu = ned_transform_.fromLocalEnuVelocity(velocity); + auto phys_comps = UAirBlueprintLib::getPhysicsComponents(pawn_); + UAirBlueprintLib::RunCommandOnGameThread([velocity_uu, &phys_comps]() { + for (auto* phys_comp : phys_comps) { + phys_comp->SetPhysicsLinearVelocity(velocity_uu, false, NAME_None); + } + }, true); +} + //physics tick void CarPawnSimApi::update() { diff --git a/UE4Project/Plugins/AirSim/Source/Vehicles/Car/CarPawnSimApi.h b/UE4Project/Plugins/AirSim/Source/Vehicles/Car/CarPawnSimApi.h index dc7adac8..4b4f8016 100644 --- a/UE4Project/Plugins/AirSim/Source/Vehicles/Car/CarPawnSimApi.h +++ b/UE4Project/Plugins/AirSim/Source/Vehicles/Car/CarPawnSimApi.h @@ -101,6 +101,7 @@ class CarPawnSimApi : public msr::airlib::VehicleSimApiBase virtual Pose getPose() const override; virtual void setPose(const Pose& pose, bool ignore_collision) override; virtual void resetToPose(const Pose& pose) override; + virtual void setLinearVelocity(const msr::airlib::Vector3r& velocity) override; virtual msr::airlib::CameraInfo getCameraInfo(const std::string& camera_name) const override; const APIPCamera* getCamera(const std::string& camera_name) const; From 12d33163d882fd54d992e1b941ae7863b20d4010 Mon Sep 17 00:00:00 2001 From: vctr-dng <94930828+vctr-dng@users.noreply.github.com> Date: Wed, 11 Feb 2026 01:49:33 -0500 Subject: [PATCH 4/7] chore: fix trailing whitespace --- .../AirSim/Source/SimMode/SimModeBase.cpp | 28 +++++++++---------- .../AirSim/Source/SimMode/SimModeBase.h | 4 +-- .../Source/Vehicles/Car/CarPawnSimApi.cpp | 16 +++++------ .../Source/Vehicles/Car/CarPawnSimApi.h | 8 +++--- .../Plugins/AirSim/Source/WorldSimApi.cpp | 6 ++-- 5 files changed, 31 insertions(+), 31 deletions(-) diff --git a/UE4Project/Plugins/AirSim/Source/SimMode/SimModeBase.cpp b/UE4Project/Plugins/AirSim/Source/SimMode/SimModeBase.cpp index c8b6a58e..cf2d6ee8 100644 --- a/UE4Project/Plugins/AirSim/Source/SimMode/SimModeBase.cpp +++ b/UE4Project/Plugins/AirSim/Source/SimMode/SimModeBase.cpp @@ -53,7 +53,7 @@ void ASimModeBase::BeginPlay() //this must be done from within actor otherwise we don't get player start APlayerController* player_controller = this->GetWorld()->GetFirstPlayerController(); FTransform player_start_transform = player_controller->GetViewTarget()->GetActorTransform(); - global_ned_transform_.reset(new CoordFrameTransformer(player_start_transform, + global_ned_transform_.reset(new CoordFrameTransformer(player_start_transform, UAirBlueprintLib::GetWorldToMetersScale(this))); world_sim_api_.reset(new WorldSimApi(this)); @@ -62,7 +62,7 @@ void ASimModeBase::BeginPlay() setupClockSpeed(); setStencilIDs(); - + record_tick_count = 0; setupInputBindings(); @@ -109,7 +109,7 @@ void ASimModeBase::setStencilIDs() if (getSettings().segmentation_setting.init_method == AirSimSettings::SegmentationSetting::InitMethodType::CommonObjectsRandomIDs) { - + UAirBlueprintLib::InitializeMeshStencilIDs(!getSettings().segmentation_setting.override_existing); } //else don't init @@ -152,7 +152,7 @@ void ASimModeBase::initializeTimeOfDay() UObject* sun_obj = sun_prop->GetObjectPropertyValue_InContainer(sky_sphere_); sun_ = Cast(sun_obj); if (sun_) - default_sun_rotation_ = sun_->GetActorRotation(); + default_sun_rotation_ = sun_->GetActorRotation(); } } @@ -160,7 +160,7 @@ void ASimModeBase::setTimeOfDay(bool is_enabled, const std::string& start_dateti float celestial_clock_speed, float update_interval_secs, bool move_sun) { bool enabled_currently = tod_enabled_; - + if (is_enabled) { if (!sun_) { @@ -170,7 +170,7 @@ void ASimModeBase::setTimeOfDay(bool is_enabled, const std::string& start_dateti else { sun_->GetRootComponent()->Mobility = EComponentMobility::Movable; - // this is a bit odd but given how advanceTimeOfDay() works currently, + // this is a bit odd but given how advanceTimeOfDay() works currently, // tod_sim_clock_start_ needs to be reset here. tod_sim_clock_start_ = ClockFactory::get()->nowNanos(); @@ -256,8 +256,8 @@ void ASimModeBase::showClockStats() { float clock_speed = getSettings().clock_speed; if (clock_speed != 1) { - UAirBlueprintLib::LogMessageString("ClockSpeed config, actual: ", - Utils::stringf("%f, %f", clock_speed, ClockFactory::get()->getTrueScaleWrtWallClock()), + UAirBlueprintLib::LogMessageString("ClockSpeed config, actual: ", + Utils::stringf("%f, %f", clock_speed, ClockFactory::get()->getTrueScaleWrtWallClock()), LogDebugLevel::Informational); } } @@ -337,13 +337,13 @@ void ASimModeBase::initializeCameraDirector(const FTransform& camera_transform, FActorSpawnParameters camera_spawn_params; camera_spawn_params.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AdjustIfPossibleButAlwaysSpawn; camera_spawn_params.Name = "CameraDirector"; - CameraDirector = this->GetWorld()->SpawnActor(camera_director_class_, + CameraDirector = this->GetWorld()->SpawnActor(camera_director_class_, camera_transform, camera_spawn_params); CameraDirector->setFollowDistance(follow_distance); CameraDirector->setCameraRotationLagEnabled(false); //create external camera required for the director camera_spawn_params.Name = "ExternalCamera"; - CameraDirector->ExternalCamera = this->GetWorld()->SpawnActor(external_camera_class_, + CameraDirector->ExternalCamera = this->GetWorld()->SpawnActor(external_camera_class_, camera_transform, camera_spawn_params); } else { @@ -405,9 +405,9 @@ void ASimModeBase::setupVehiclesAndCamera() //determine camera director camera default pose and spawn it const auto& camera_director_setting = getSettings().camera_director; - FVector camera_director_position_uu = uu_origin.GetLocation() + + FVector camera_director_position_uu = uu_origin.GetLocation() + getGlobalNedTransform().fromLocalEnu(camera_director_setting.position); - FTransform camera_transform(toFRotator(camera_director_setting.rotation, FRotator::ZeroRotator), + FTransform camera_transform(toFRotator(camera_director_setting.rotation, FRotator::ZeroRotator), camera_director_position_uu); initializeCameraDirector(camera_transform, camera_director_setting.follow_distance); @@ -464,7 +464,7 @@ void ASimModeBase::setupVehiclesAndCamera() const std::string vehicle_name = std::string(TCHAR_TO_UTF8(*(vehicle_pawn->GetName()))); CarPawnSimApi::Params pawn_sim_api_params(vehicle_pawn, &getGlobalNedTransform(), - getVehiclePawnEvents(vehicle_pawn), getVehiclePawnCameras(vehicle_pawn), pip_camera_class, + getVehiclePawnEvents(vehicle_pawn), getVehiclePawnCameras(vehicle_pawn), pip_camera_class, home_geopoint, vehicle_name); auto vehicle_sim_api = createVehicleSimApi(pawn_sim_api_params); @@ -548,7 +548,7 @@ void ASimModeBase::drawLidarDebugPoints() msr::airlib::VehicleApiBase* api = getApiProvider()->getVehicleApi(vehicle_name); if (api != nullptr) { - + msr::airlib::uint count_lidars = api->getSensors().size(msr::airlib::SensorBase::SensorType::Lidar); for (msr::airlib::uint i = 0; i < count_lidars; i++) { diff --git a/UE4Project/Plugins/AirSim/Source/SimMode/SimModeBase.h b/UE4Project/Plugins/AirSim/Source/SimMode/SimModeBase.h index 0ae4aee5..bc4104dc 100644 --- a/UE4Project/Plugins/AirSim/Source/SimMode/SimModeBase.h +++ b/UE4Project/Plugins/AirSim/Source/SimMode/SimModeBase.h @@ -31,14 +31,14 @@ class AIRSIM_API ASimModeBase : public AActor UFUNCTION(BlueprintCallable, Category = "Api") void startApiServer(); - + UFUNCTION(BlueprintCallable, Category = "Api") void stopApiServer(); UFUNCTION(BlueprintCallable, Category = "Api") bool isApiServerStarted(); -public: +public: // Sets default values for this actor's properties ASimModeBase(); virtual void BeginPlay() override; diff --git a/UE4Project/Plugins/AirSim/Source/Vehicles/Car/CarPawnSimApi.cpp b/UE4Project/Plugins/AirSim/Source/Vehicles/Car/CarPawnSimApi.cpp index 6a84e449..6db36d17 100644 --- a/UE4Project/Plugins/AirSim/Source/Vehicles/Car/CarPawnSimApi.cpp +++ b/UE4Project/Plugins/AirSim/Source/Vehicles/Car/CarPawnSimApi.cpp @@ -224,7 +224,7 @@ void CarPawnSimApi::setStartPosition(const FVector& position, const FRotator& ro //compute our home point Vector3r nedWrtOrigin = ned_transform_.toGlobalEnu(initial_state_.start_location); - home_geo_point_ = msr::airlib::EarthUtils::nedToGeodetic(nedWrtOrigin, + home_geo_point_ = msr::airlib::EarthUtils::nedToGeodetic(nedWrtOrigin, AirSimSettings::singleton().origin_geopoint); } @@ -302,7 +302,7 @@ void CarPawnSimApi::createCamerasFromSettings() } } -void CarPawnSimApi::onCollision(class UPrimitiveComponent* MyComp, class AActor* Other, class UPrimitiveComponent* OtherComp, +void CarPawnSimApi::onCollision(class UPrimitiveComponent* MyComp, class AActor* Other, class UPrimitiveComponent* OtherComp, bool bSelfMoved, FVector HitLocation, FVector HitNormal, FVector NormalImpulse, const FHitResult& Hit) { // Deflect along the surface when we collide. @@ -323,8 +323,8 @@ void CarPawnSimApi::onCollision(class UPrimitiveComponent* MyComp, class AActor* ++state_.collision_info.collision_count; - UAirBlueprintLib::LogMessageString("Collision", Utils::stringf("#%d with %s - ObjID %d", - state_.collision_info.collision_count, + UAirBlueprintLib::LogMessageString("Collision", Utils::stringf("#%d with %s - ObjID %d", + state_.collision_info.collision_count, state_.collision_info.object_name.c_str(), state_.collision_info.object_id), LogDebugLevel::Informational); } @@ -398,7 +398,7 @@ msr::airlib::RCData CarPawnSimApi::getRCData() const rc_data_.switches = joystick_state_.buttons; rc_data_.vendor_id = joystick_state_.pid_vid.substr(0, joystick_state_.pid_vid.find('&')); - + //switch index 0 to 7 for FrSky Taranis RC is: //front-upper-left, front-upper-right, top-right-left, top-right-left, top-left-right, top-right-right, top-left-left, top-right-left @@ -461,7 +461,7 @@ void CarPawnSimApi::toggleTrace() if (!state_.tracing_enabled) UKismetSystemLibrary::FlushPersistentDebugLines(params_.pawn->GetWorld()); - else { + else { state_.debug_position_offset = state_.current_debug_position - state_.current_position; state_.last_debug_position = state_.last_position; } @@ -609,7 +609,7 @@ void CarPawnSimApi::updateKinematics(float dt) kinematics_->update(); } -float computeAngleChange(float prev_rotation_angle_rad, float new_rotation_angle_rad) +float computeAngleChange(float prev_rotation_angle_rad, float new_rotation_angle_rad) { return new_rotation_angle_rad + (new_rotation_angle_rad > prev_rotation_angle_rad ? 0.0f : 2.0f * M_PI) - prev_rotation_angle_rad; } @@ -626,7 +626,7 @@ void CarPawnSimApi::updateWheelStates() // at very low velocities the angular velocity becomes very unstable, // so a higher smoothing factor is needed to obtain a usable estimate - float higher_smoothing_factor_rpm_threshold = 80; + float higher_smoothing_factor_rpm_threshold = 80; float avg_rear_wheel_rpm = (wheel_states_->rr.rpm + wheel_states_->rl.rpm) / 2; float rpm_smoothing_coeff = 0.7; if (avg_rear_wheel_rpm < higher_smoothing_factor_rpm_threshold) { diff --git a/UE4Project/Plugins/AirSim/Source/Vehicles/Car/CarPawnSimApi.h b/UE4Project/Plugins/AirSim/Source/Vehicles/Car/CarPawnSimApi.h index 4b4f8016..898d2d9d 100644 --- a/UE4Project/Plugins/AirSim/Source/Vehicles/Car/CarPawnSimApi.h +++ b/UE4Project/Plugins/AirSim/Source/Vehicles/Car/CarPawnSimApi.h @@ -44,7 +44,7 @@ class CarPawnSimApi : public msr::airlib::VehicleSimApiBase typedef msr::airlib::ImageCaptureBase ImageCaptureBase; struct Params { - APawn* pawn; + APawn* pawn; const CoordFrameTransformer* global_transform; PawnEvents* pawn_events; common_utils::UniqueValueMap cameras; @@ -61,7 +61,7 @@ class CarPawnSimApi : public msr::airlib::VehicleSimApiBase const msr::airlib::GeoPoint home_geopoint_val, std::string vehicle_name_val) { - pawn = pawn_val; + pawn = pawn_val; global_transform = global_transform_val; pawn_events = pawn_events_val; cameras = cameras_val; @@ -204,7 +204,7 @@ class CarPawnSimApi : public msr::airlib::VehicleSimApiBase FVector last_debug_position; FVector current_position; FVector current_debug_position; - FVector debug_position_offset; + FVector debug_position_offset; bool tracing_enabled; bool collisions_enabled; bool passthrough_enabled; @@ -216,7 +216,7 @@ class CarPawnSimApi : public msr::airlib::VehicleSimApiBase FVector ground_offset; FVector transformation_offset; }; - + State state_, initial_state_; std::unique_ptr kinematics_; diff --git a/UE4Project/Plugins/AirSim/Source/WorldSimApi.cpp b/UE4Project/Plugins/AirSim/Source/WorldSimApi.cpp index ef74fbea..6b8fba1c 100644 --- a/UE4Project/Plugins/AirSim/Source/WorldSimApi.cpp +++ b/UE4Project/Plugins/AirSim/Source/WorldSimApi.cpp @@ -19,7 +19,7 @@ bool WorldSimApi::isPaused() const void WorldSimApi::reset() { UAirBlueprintLib::RunCommandOnGameThread([this]() { - simmode_->reset(); + simmode_->reset(); }, true); } @@ -108,7 +108,7 @@ bool WorldSimApi::setObjectPose(const std::string& object_name, const WorldSimAp FTransform actor_transform = simmode_->getGlobalNedTransform().fromGlobalEnu(pose); AActor* actor = UAirBlueprintLib::FindActor(simmode_, FString(object_name.c_str())); if (actor) { - if (teleport) + if (teleport) result = actor->SetActorLocationAndRotation(actor_transform.GetLocation(), actor_transform.GetRotation(), false, nullptr, ETeleportType::TeleportPhysics); else result = actor->SetActorLocationAndRotation(actor_transform.GetLocation(), actor_transform.GetRotation(), true); @@ -160,7 +160,7 @@ std::unique_ptr> WorldSimApi::swapTextures(const std::s if (invalidChoice) break; } - + if (invalidChoice) continue; dynamic_cast(shuffler)->SwapTexture(tex_id, component_id, material_id); From 573b6677a048cbdecdee4fcfcdeeaf4285159671 Mon Sep 17 00:00:00 2001 From: vctr-dng <94930828+vctr-dng@users.noreply.github.com> Date: Wed, 11 Feb 2026 01:50:41 -0500 Subject: [PATCH 5/7] feat: expose through AirSim API reset pose and set velocity vector --- AirSim/AirLib/include/api/RpcLibClientBase.hpp | 2 ++ AirSim/AirLib/include/api/VehicleSimApiBase.hpp | 2 ++ AirSim/AirLib/include/api/WorldSimApiBase.hpp | 1 + AirSim/AirLib/src/api/RpcLibClientBase.cpp | 10 ++++++++++ AirSim/AirLib/src/api/RpcLibServerBase.cpp | 8 ++++++++ 5 files changed, 23 insertions(+) diff --git a/AirSim/AirLib/include/api/RpcLibClientBase.hpp b/AirSim/AirLib/include/api/RpcLibClientBase.hpp index d21792a1..10576bd1 100644 --- a/AirSim/AirLib/include/api/RpcLibClientBase.hpp +++ b/AirSim/AirLib/include/api/RpcLibClientBase.hpp @@ -84,6 +84,8 @@ class RpcLibClientBase { Pose simGetVehiclePose(const std::string& vehicle_name = "") const; void simSetVehiclePose(const Pose& pose, bool ignore_collision, const std::string& vehicle_name = ""); + void simResetToPose(const Pose& pose, const std::string& vehicle_name = ""); + void simSetVehicleLinearVelocity(const Vector3r& velocity, const std::string& vehicle_name = ""); void simSetTraceLine(const std::vector& color_rgba, float thickness=3.0f, const std::string& vehicle_name = ""); vector simGetImages(vector request, const std::string& vehicle_name = ""); diff --git a/AirSim/AirLib/include/api/VehicleSimApiBase.hpp b/AirSim/AirLib/include/api/VehicleSimApiBase.hpp index 9a626201..558dec92 100644 --- a/AirSim/AirLib/include/api/VehicleSimApiBase.hpp +++ b/AirSim/AirLib/include/api/VehicleSimApiBase.hpp @@ -50,6 +50,8 @@ class VehicleSimApiBase : public msr::airlib::UpdatableObject { virtual Pose getPose() const = 0; virtual void setPose(const Pose& pose, bool ignore_collision) = 0; + virtual void resetToPose(const Pose& pose) = 0; + virtual void setLinearVelocity(const Vector3r& velocity) = 0; virtual const Kinematics::State* getGroundTruthKinematics() const = 0; virtual const WheelStates* getWheelStates() const = 0; diff --git a/AirSim/AirLib/include/api/WorldSimApiBase.hpp b/AirSim/AirLib/include/api/WorldSimApiBase.hpp index ba463b05..1c5b9eb3 100644 --- a/AirSim/AirLib/include/api/WorldSimApiBase.hpp +++ b/AirSim/AirLib/include/api/WorldSimApiBase.hpp @@ -28,6 +28,7 @@ class WorldSimApiBase { virtual bool isPaused() const = 0; virtual void reset() = 0; + virtual void resetToPose(const Pose& pose, const std::string& vehicle_name = "") = 0; virtual void pause(bool is_paused) = 0; virtual void continueForTime(double seconds) = 0; diff --git a/AirSim/AirLib/src/api/RpcLibClientBase.cpp b/AirSim/AirLib/src/api/RpcLibClientBase.cpp index f0660dbd..f5f26a37 100644 --- a/AirSim/AirLib/src/api/RpcLibClientBase.cpp +++ b/AirSim/AirLib/src/api/RpcLibClientBase.cpp @@ -208,6 +208,16 @@ void RpcLibClientBase::simSetVehiclePose(const Pose& pose, bool ignore_collision pimpl_->client.call("simSetVehiclePose", RpcLibAdapatorsBase::Pose(pose), ignore_collision, vehicle_name); } +void RpcLibClientBase::simResetToPose(const Pose& pose, const std::string& vehicle_name) +{ + pimpl_->client.call("simResetToPose", RpcLibAdapatorsBase::Pose(pose), vehicle_name); +} + +void RpcLibClientBase::simSetVehicleLinearVelocity(const Vector3r& velocity, const std::string& vehicle_name) +{ + pimpl_->client.call("simSetVehicleLinearVelocity", RpcLibAdapatorsBase::Vector3r(velocity), vehicle_name); +} + void RpcLibClientBase::simSetTraceLine(const std::vector& color_rgba, float thickness, const std::string & vehicle_name) { pimpl_->client.call("simSetTraceLine", color_rgba, thickness, vehicle_name); diff --git a/AirSim/AirLib/src/api/RpcLibServerBase.cpp b/AirSim/AirLib/src/api/RpcLibServerBase.cpp index fb709f3a..6151861b 100644 --- a/AirSim/AirLib/src/api/RpcLibServerBase.cpp +++ b/AirSim/AirLib/src/api/RpcLibServerBase.cpp @@ -150,6 +150,10 @@ RpcLibServerBase::RpcLibServerBase(ApiProvider* api_provider, const std::string& return RpcLibAdapatorsBase::Pose(pose); }); + pimpl_->server.bind("simSetVehicleLinearVelocity", [&](const RpcLibAdapatorsBase::Vector3r& velocity, const std::string& vehicle_name) -> void { + getVehicleSimApi(vehicle_name)->setLinearVelocity(velocity.to()); + }); + pimpl_->server.bind("simSetTraceLine", [&](const std::vector& color_rgba, float thickness, const std::string& vehicle_name) -> void { getVehicleSimApi(vehicle_name)->setTraceLine(color_rgba, thickness); }); @@ -184,6 +188,10 @@ RpcLibServerBase::RpcLibServerBase(ApiProvider* api_provider, const std::string& resetInProgress = false; }); + pimpl_->server.bind("simResetToPose", [&](const RpcLibAdapatorsBase::Pose& pose, const std::string& vehicle_name) -> void { + getWorldSimApi()->resetToPose(pose.to(), vehicle_name); + }); + pimpl_->server.bind("simPrintLogMessage", [&](const std::string& message, const std::string& message_param, unsigned char severity) -> void { getWorldSimApi()->printLogMessage(message, message_param, severity); }); From ad509650c9c842b172840f4ca07a96384c0f5354 Mon Sep 17 00:00:00 2001 From: vctr-dng <94930828+vctr-dng@users.noreply.github.com> Date: Wed, 11 Feb 2026 01:52:33 -0500 Subject: [PATCH 6/7] chore: fix trailing whitespace --- .../AirLib/include/api/RpcLibClientBase.hpp | 2 +- .../AirLib/include/api/VehicleSimApiBase.hpp | 2 +- AirSim/AirLib/include/api/WorldSimApiBase.hpp | 10 +++--- AirSim/AirLib/src/api/RpcLibClientBase.cpp | 8 ++--- AirSim/AirLib/src/api/RpcLibServerBase.cpp | 34 +++++++++---------- 5 files changed, 28 insertions(+), 28 deletions(-) diff --git a/AirSim/AirLib/include/api/RpcLibClientBase.hpp b/AirSim/AirLib/include/api/RpcLibClientBase.hpp index 10576bd1..ce9e5dae 100644 --- a/AirSim/AirLib/include/api/RpcLibClientBase.hpp +++ b/AirSim/AirLib/include/api/RpcLibClientBase.hpp @@ -63,7 +63,7 @@ class RpcLibClientBase { void simPlotLineStrip(const vector& points, const vector& color_rgba, float thickness, float duration, bool is_persistent); void simPlotLineList(const vector& points, const vector& color_rgba, float thickness, float duration, bool is_persistent); void simPlotArrows(const vector& points_start, const vector& points_end, const vector& color_rgba, float thickness, float arrow_size, float duration, bool is_persistent); - void simPlotStrings(const vector& strings, const vector& positions, float scale, const vector& color_rgba, float duration); + void simPlotStrings(const vector& strings, const vector& positions, float scale, const vector& color_rgba, float duration); void simPlotTransforms(const vector& poses, float scale, float thickness, float duration, bool is_persistent); void simPlotTransformsWithNames(const vector& poses, const vector& names, float tf_scale, float tf_thickness, float text_scale, const vector& text_color_rgba, float duration); diff --git a/AirSim/AirLib/include/api/VehicleSimApiBase.hpp b/AirSim/AirLib/include/api/VehicleSimApiBase.hpp index 558dec92..648d8112 100644 --- a/AirSim/AirLib/include/api/VehicleSimApiBase.hpp +++ b/AirSim/AirLib/include/api/VehicleSimApiBase.hpp @@ -23,7 +23,7 @@ class VehicleSimApiBase : public msr::airlib::UpdatableObject { } //this method is called at every render tick when we want to transfer state from - //physics engine to render engine. As physics engine is halted while + //physics engine to render engine. As physics engine is halted while //this happens, this method should do minimal processing virtual void updateRenderedState(float dt) { diff --git a/AirSim/AirLib/include/api/WorldSimApiBase.hpp b/AirSim/AirLib/include/api/WorldSimApiBase.hpp index 1c5b9eb3..a917f2a2 100644 --- a/AirSim/AirLib/include/api/WorldSimApiBase.hpp +++ b/AirSim/AirLib/include/api/WorldSimApiBase.hpp @@ -46,12 +46,12 @@ class WorldSimApiBase { //----------- Plotting APIs ----------/ virtual void simFlushPersistentMarkers() = 0; - virtual void simPlotPoints(const vector& points, const vector& color_rgba, float size, float duration, bool is_persistent) = 0; - virtual void simPlotLineStrip(const vector& points, const vector& color_rgba, float thickness, float duration, bool is_persistent) = 0; - virtual void simPlotLineList(const vector& points, const vector& color_rgba, float thickness, float duration, bool is_persistent) = 0; - virtual void simPlotArrows(const vector& points_start, const vector& points_end, const vector& color_rgba, float thickness, float arrow_size, float duration, bool is_persistent) = 0; + virtual void simPlotPoints(const vector& points, const vector& color_rgba, float size, float duration, bool is_persistent) = 0; + virtual void simPlotLineStrip(const vector& points, const vector& color_rgba, float thickness, float duration, bool is_persistent) = 0; + virtual void simPlotLineList(const vector& points, const vector& color_rgba, float thickness, float duration, bool is_persistent) = 0; + virtual void simPlotArrows(const vector& points_start, const vector& points_end, const vector& color_rgba, float thickness, float arrow_size, float duration, bool is_persistent) = 0; virtual void simPlotStrings(const vector& strings, const vector& positions, float scale, const vector& color_rgba, float duration) = 0; - virtual void simPlotTransforms(const vector& poses, float scale, float thickness, float duration, bool is_persistent) = 0; + virtual void simPlotTransforms(const vector& poses, float scale, float thickness, float duration, bool is_persistent) = 0; virtual void simPlotTransformsWithNames(const vector& poses, const vector& names, float tf_scale, float tf_thickness, float text_scale, const vector& text_color_rgba, float duration) = 0; virtual std::vector listSceneObjects(const std::string& name_regex) const = 0; diff --git a/AirSim/AirLib/src/api/RpcLibClientBase.cpp b/AirSim/AirLib/src/api/RpcLibClientBase.cpp index f5f26a37..099375c4 100644 --- a/AirSim/AirLib/src/api/RpcLibClientBase.cpp +++ b/AirSim/AirLib/src/api/RpcLibClientBase.cpp @@ -40,7 +40,7 @@ STRICT_MODE_OFF STRICT_MODE_ON #ifdef _MSC_VER __pragma(warning( disable : 4239)) -#endif +#endif namespace msr { namespace airlib { @@ -125,7 +125,7 @@ void RpcLibClientBase::confirmConnection(double timeout) clock->sleep_for(delay); } - + if (getConnectionState() != RpcLibClientBase::ConnectionState::Connected) { throw std::runtime_error("Failed connecting to RPC server (airsim). Is the simulator running?"); @@ -135,7 +135,7 @@ void RpcLibClientBase::confirmConnection(double timeout) auto client_ver = getClientVersion(); auto server_min_ver = getMinRequiredServerVersion(); auto client_min_ver = getMinRequiredClientVersion(); - + std::string ver_info = Utils::stringf("Client Ver:%i (Min Req:%i), Server Ver:%i (Min Req:%i)", client_ver, client_min_ver, server_ver, server_min_ver); @@ -225,7 +225,7 @@ void RpcLibClientBase::simSetTraceLine(const std::vector& color_rgba, flo vector RpcLibClientBase::simGetImages(vector request, const std::string& vehicle_name) { - const auto& response_adaptor = pimpl_->client.call("simGetImages", + const auto& response_adaptor = pimpl_->client.call("simGetImages", RpcLibAdapatorsBase::ImageRequest::from(request), vehicle_name) .as>(); diff --git a/AirSim/AirLib/src/api/RpcLibServerBase.cpp b/AirSim/AirLib/src/api/RpcLibServerBase.cpp index 6151861b..7ed68c34 100644 --- a/AirSim/AirLib/src/api/RpcLibServerBase.cpp +++ b/AirSim/AirLib/src/api/RpcLibServerBase.cpp @@ -49,7 +49,7 @@ struct RpcLibServerBase::impl { ~impl() { } - void stop() { + void stop() { server.close_sessions(); if (!is_async_) { // this deadlocks UI thread if async_run was called while there are pending rpc calls. @@ -92,20 +92,20 @@ RpcLibServerBase::RpcLibServerBase(ApiProvider* api_provider, const std::string& pimpl_->server.bind("getSettingsString", [&]() -> std::string { return getWorldSimApi()->getSettingsString(); }); - - pimpl_->server.bind("simPause", [&](bool is_paused) -> void { - getWorldSimApi()->pause(is_paused); + + pimpl_->server.bind("simPause", [&](bool is_paused) -> void { + getWorldSimApi()->pause(is_paused); }); - pimpl_->server.bind("simIsPaused", [&]() -> bool { - return getWorldSimApi()->isPaused(); + pimpl_->server.bind("simIsPaused", [&]() -> bool { + return getWorldSimApi()->isPaused(); }); - pimpl_->server.bind("simContinueForTime", [&](double seconds) -> void { - getWorldSimApi()->continueForTime(seconds); + pimpl_->server.bind("simContinueForTime", [&](double seconds) -> void { + getWorldSimApi()->continueForTime(seconds); }); - pimpl_->server.bind("simSetTimeOfDay", [&](bool is_enabled, const string& start_datetime, bool is_start_datetime_dst, + pimpl_->server.bind("simSetTimeOfDay", [&](bool is_enabled, const string& start_datetime, bool is_start_datetime_dst, float celestial_clock_speed, float update_interval_secs, bool move_sun) -> void { - getWorldSimApi()->setTimeOfDay(is_enabled, start_datetime, is_start_datetime_dst, + getWorldSimApi()->setTimeOfDay(is_enabled, start_datetime, is_start_datetime_dst, celestial_clock_speed, update_interval_secs, move_sun); }); @@ -116,13 +116,13 @@ RpcLibServerBase::RpcLibServerBase(ApiProvider* api_provider, const std::string& getWorldSimApi()->setWeatherParameter(param, val); }); - pimpl_->server.bind("enableApiControl", [&](bool is_enabled, const std::string& vehicle_name) -> void { + pimpl_->server.bind("enableApiControl", [&](bool is_enabled, const std::string& vehicle_name) -> void { getVehicleApi(vehicle_name)->enableApiControl(is_enabled); }); - pimpl_->server.bind("isApiControlEnabled", [&](const std::string& vehicle_name) -> bool { + pimpl_->server.bind("isApiControlEnabled", [&](const std::string& vehicle_name) -> bool { return getVehicleApi(vehicle_name)->isApiControlEnabled(); }); - pimpl_->server.bind("simGetImages", [&](const std::vector& request_adapter, const std::string& vehicle_name) -> + pimpl_->server.bind("simGetImages", [&](const std::vector& request_adapter, const std::string& vehicle_name) -> vector { const auto& response = getVehicleSimApi(vehicle_name)->getImages(RpcLibAdapatorsBase::ImageRequest::to(request_adapter)); return RpcLibAdapatorsBase::ImageResponse::from(response); @@ -170,7 +170,7 @@ RpcLibServerBase::RpcLibServerBase(ApiProvider* api_provider, const std::string& pimpl_->server. bind("simGetSegmentationObjectID", [&](const std::string& mesh_name) -> int { return getWorldSimApi()->getSegmentationObjectID(mesh_name); - }); + }); pimpl_->server.bind("reset", [&]() -> void { //Exit if already resetting. @@ -231,7 +231,7 @@ RpcLibServerBase::RpcLibServerBase(ApiProvider* api_provider, const std::string& return RpcLibAdapatorsBase::CameraInfo(camera_info); }); - pimpl_->server.bind("simSetCameraOrientation", [&](const std::string& camera_name, const RpcLibAdapatorsBase::Quaternionr& orientation, + pimpl_->server.bind("simSetCameraOrientation", [&](const std::string& camera_name, const RpcLibAdapatorsBase::Quaternionr& orientation, const std::string& vehicle_name) -> void { getVehicleSimApi(vehicle_name)->setCameraOrientation(camera_name, orientation.to()); }); @@ -242,7 +242,7 @@ RpcLibServerBase::RpcLibServerBase(ApiProvider* api_provider, const std::string& }); pimpl_->server.bind("simGetCollisionInfo", [&](const std::string& vehicle_name) -> RpcLibAdapatorsBase::CollisionInfo { - const auto& collision_info = getVehicleSimApi(vehicle_name)->getCollisionInfo(); + const auto& collision_info = getVehicleSimApi(vehicle_name)->getCollisionInfo(); return RpcLibAdapatorsBase::CollisionInfo(collision_info); }); @@ -251,7 +251,7 @@ RpcLibServerBase::RpcLibServerBase(ApiProvider* api_provider, const std::string& }); pimpl_->server.bind("simGetObjectPose", [&](const std::string& object_name) -> RpcLibAdapatorsBase::Pose { - const auto& pose = getWorldSimApi()->getObjectPose(object_name); + const auto& pose = getWorldSimApi()->getObjectPose(object_name); return RpcLibAdapatorsBase::Pose(pose); }); pimpl_->server.bind("simSetObjectPose", [&](const std::string& object_name, const RpcLibAdapatorsBase::Pose& pose, bool teleport) -> bool { From 41a92175db9d70eff438d4ab91a2b3b81c92185d Mon Sep 17 00:00:00 2001 From: vctr-dng <94930828+vctr-dng@users.noreply.github.com> Date: Wed, 11 Feb 2026 02:06:28 -0500 Subject: [PATCH 7/7] feat: bigger custom map --- UE4Project/Content/customMap.umap | Bin 9446700 -> 12417585 bytes 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 UE4Project/Content/customMap.umap diff --git a/UE4Project/Content/customMap.umap b/UE4Project/Content/customMap.umap old mode 100755 new mode 100644 index 06be086d7ee5420a140c6a83a61e3cde71ca9efd..1de1d7d05cdf2b48389e8162beacb3e92b803ad2 GIT binary patch delta 2469929 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

fOyT&Z#BNp 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 delta 559024 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 e?10z_u?u21#2$#f5c?qZL!|G1+V?