Skip to content

BobDyn/BobSim

BobDyn/BobSim is the high-fidelity vehicle analysis workspace for BobDyn. It takes BobDyn/BobLib Modelica vehicle models, builds OpenModelica executables, runs repeatable studies, extracts signals, computes metrics, renders plots, and writes public review artifacts.

The normal entry point is the BobSim app. Use the released desktop executable for day-to-day work, or run the same app from a source checkout when developing. It configures the active vehicle, writes the generated Modelica definition, launches StandardSim workflows, and inspects reports, metrics, logs, and saved result snapshots.

Use BobDyn/BobSim when the question is about vehicle response: how the car behaves in a standard maneuver, which limit is active, how a parameter change moves a metric, or whether a design direction deserves deeper model work.

Use BobDyn/BobLib when the question is about the low-level model itself: Modelica package structure, VehicleInterfaces integration, records, tire models, suspension assemblies, direct OMEdit inspection, or initialization debugging.

Operating Model

BobSim keeps the physical model and the analysis workflow separate.

The app path is:

  1. Choose or create a vehicle in Setup.
  2. Save the vehicle.
  3. Click Write to MBD to generate the Modelica vehicle definition.
  4. Open Simulation, configure a workflow, then build and run it.
  5. Open Archive to download the PDF report, metrics, and per-run signal archive.

The CLI path is the same workflow as commands: build the relevant standard model, run a standard/envelope/sensitivity workflow from YAML configs, then inspect the report, metrics CSV, plots, or aggregate table.

Vehicle setup is managed through app vehicle YAML and the generated Modelica definition, while BobLib remains the physical model library. BobSim workflow YAML owns case definitions, solver settings, runtime overrides, output extraction, plotting, and reporting.

Repository Layout

PathRole
makefilePublic command language for setup, build, run, test, and cleanup
DockerfileOpenModelica and Python environment
docker-compose.ymlWorkflow services used by the make targets
requirements.txtPython analysis/reporting dependencies
_0_Utils/Shared utilities, plotting, reporting, and the BobLib submodule
_0_Utils/external/BobLib/BobDyn/BobLib Modelica library checkout
_1_VisualSim/Experimental/offline visualization templates; app preview and OMEdit cover normal visualization
_2_EnvelopeSim/Optional GGV and YMD envelope calculations implemented separately from the Modelica standard workflows
_3_StandardSim/RampSteerEval, SteadyStateEval, TransientEval, and FourPostEval
_4_OptSim/Sensitivity and response-surface workflows
_5_App/Local browser app for setup, simulation launch, result review, and saved app libraries
tests/Release-polish and workflow regression checks

Quick Start

For normal use, download the BobSim desktop asset for your operating system from the GitHub Release, extract it, and run BobSim.

The desktop app bundles the Python backend and embedded frontend. OpenModelica and generated simulation executables stay local to the user's machine.

For source-checkout development, launch the app with:

bash
git clone --recurse-submodules https://github.com/BobDyn/BobSim.git
cd BobSim
make init
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
make app

Then open:

text
http://127.0.0.1:8765

Use the app path first:

text
Setup -> Save Vehicle -> Write to MBD -> Simulation -> Archive

BobSim app Setup view with guided steps, vehicle controls, and architecture preview

For Docker-backed CLI workflows:

bash
make docker-build
make help

Run the high-fidelity baseline:

bash
make standard-eval-all

That target builds missing Modelica executables, then runs RampSteerEval, SteadyStateEval, TransientEval, and FourPostEval against the active BobLib model definitions and BobSim workflow configs.

Target Language

BobSim's make targets are intentionally compact and prefix-driven:

AreaPrimary commandsPurpose
Appmake appLaunch the source-checkout browser workbench
Deploymake deploy, make deploy-releaseBuild the native BobSim desktop artifact for the current OS
Dockermake docker-build, make docker-rebuildBuild the reproducible OpenModelica/Python environment
Shellsmake shell, make shell-standard, make shell-envelope, make shell-optOpen interactive workflow contexts
StandardSimmake standard-build, make standard-eval-allBuild and run high-fidelity Modelica evaluations
EnvelopeSimmake envelope-ggv, make envelope-ymd, make envelope-allGenerate reduced GGV and YMD envelope outputs
OptSimmake opt-standard, make opt-envelope, make opt-refinedRun sensitivities and response-surface workflows
Qualitymake lint, make typecheck, make test, make ciRun release checks
Cleanupmake clean-standard, make clean-envelope, make clean-opt, make clean-allRemove build and result artifacts

Run make help for the exact target list in the current checkout.

Documentation Map

PageUse it for
AppSetup, Simulation, Archive, saved vehicles, saved configs, and local run packages
ConfigurationWorkflow YAML, runtime flags, report and plot config
StandardSimRampSteerEval, SteadyStateEval, TransientEval, FourPostEval, runners, reports
ArchiveLocal run packages, metrics CSVs, raw case artifacts, preservation
EnvelopeSimOptional GGV and YMD envelope calculations
OptSimStandard sensitivities, envelope sensitivities, refined response surfaces
DevelopmentDocker, local Python, make targets, quality checks, troubleshooting

In-progress tooling:

PageUse it for
VisualSimInactive/offline visualization tooling; app preview and OMEdit cover the normal visual paths

What To Run First

For a first user workflow, launch the downloaded BobSim executable or run make app from a source checkout.

Then run through:

text
Setup -> Save Vehicle -> Write to MBD -> Simulation -> Archive

BobSim app Simulation catalog with standard workflow cards

For a scripted release baseline:

bash
make standard-eval-all
make ci

Expected standard outputs:

text
_3_StandardSim/generated_results/ramp_steer_eval_report.pdf
_3_StandardSim/generated_results/ramp_steer_eval_report_metrics.csv
_3_StandardSim/generated_results/steady_state_eval_report.pdf
_3_StandardSim/generated_results/steady_state_eval_report_metrics.csv
_3_StandardSim/generated_results/transient_eval_report.pdf
_3_StandardSim/generated_results/transient_eval_report_metrics.csv
_3_StandardSim/generated_results/four_post_eval_report.pdf
_3_StandardSim/generated_results/four_post_eval_report_metrics.csv

_3_StandardSim/results/steady_state_eval_report.pdf
_3_StandardSim/results/steady_state_eval_report_metrics.csv
_3_StandardSim/results/transient_eval_report.pdf
_3_StandardSim/results/transient_eval_report_metrics.csv
_3_StandardSim/results/four_post_eval_report.pdf
_3_StandardSim/results/four_post_eval_report_metrics.csv

Optional envelope outputs:

text
_2_EnvelopeSim/results/ggv_report.pdf
_2_EnvelopeSim/results/ggv_report_metrics.csv
_2_EnvelopeSim/results/ymd_report.pdf
_2_EnvelopeSim/results/ymd_report_metrics.csv

Public Release Posture

BobSim is built to make results traceable:

  • Vehicle inputs are saved as app vehicle configs and generated Modelica definitions.
  • App vehicle/config snapshots are stored alongside saved result bundles.
  • Workflow cases and runtime settings are plain YAML.
  • Simulation overrides are written as text files.
  • Metrics are exported as CSV.
  • Reports come from the same configs that ran the studies.
  • Sensitivity variants are materialized as per-variant Modelica records and result tables.
  • The command language is small enough to remember.

The aim is that a public report metric can be traced back to the workflow config, extracted signals, compiled Modelica executable, and active vehicle record.

EnvelopeSim should be read in that same spirit: it is a separate, transparent implementation of common vehicle envelope calculations such as GGV and YMD maps. These calculations appear in many vehicle dynamics toolchains. BobSim's implementation is intended to be sane and usable when desired, not the gold standard or the canonical reference for envelope theory.

Released as open-source vehicle simulation tooling.