Skip to content

Repository files navigation

BobSim

BobSim is the BobDyn high-fidelity vehicle analysis workspace. It wraps the BobLib Modelica vehicle models in a local browser app for configuring vehicles, writing BobLib-backed Modelica definitions, running standard studies, exploring results, and keeping generated artifacts organized. The underlying Python and Modelica workflows are still available as Make targets for automation and focused development work.

The full documentation lives at:

https://bobdyn.com

Use the BobDyn documentation site as the detailed source of truth. This README is the quick release guide for getting a clean checkout running and checking that it is healthy.

Repository Layout

  • _0_Utils/: shared Python utilities, plotting/reporting helpers, and the BobLib submodule.
  • _1_VisualSim/: experimental/offline visualization tooling; core model visualization currently happens in OMEdit.
  • _2_EnvelopeSim/: GGV/YMD performance-envelope workflows.
  • _3_StandardSim/: standard vehicle studies: RampSteerEval, SteadyStateEval, TransientEval, and FourPostEval.
  • _4_OptSim/: sensitivity and response-surface workflows.
  • _5_App/: local browser app for configuring setups, launching workflows, and inspecting generated reports, metrics, configs, and job logs.
  • tests/: release-polish and workflow regression checks.
  • vehicle.yml: active vehicle data used by BobSim projection, reporting, and sensitivity workflows. The Modelica standard entry points now use checked-in BobLib records.

App Quick Start

Initialize the BobLib submodule:

make init

Build the Docker development image:

make docker-build

Show the available targets:

make help

The Docker image is based on OpenModelica and installs the Python dependencies from requirements.txt.

Start the BobSim app:

make app

Then open http://127.0.0.1:8765.

The app is the primary entry point for normal vehicle-development work. Use it to select or edit a vehicle configuration, save the setup, write the generated Modelica records into BobLib, configure simulation runs, review logs, and browse saved results. Generated builds, workspaces, and result archives are local runtime content and are intentionally ignored by git.

The command-line targets below mirror the same workflow pieces for CI, automation, and focused debugging.

Build the BobSim desktop deploy artifact:

make deploy

Deploy builds the desktop wrapper with the Python backend bundled. It does not build or package local simulation executables, reports, or app caches; those are generated by the user through the app on their machine. Deploy outputs are written under _0_Utils/deploy/dist/BobSim/.

Package the current local artifact for release:

make deploy-package DEPLOY_VERSION=2026.06.27

Clean, build, package, and optionally upload the current machine's native release artifact:

python _0_Utils/deploy/deploy.py --release --install-deps --version 2026.06.27
python _0_Utils/deploy/deploy.py --release --install-deps --version 2026.06.27 --upload-release

PyInstaller deploy artifacts are built per operating system. A local Linux build creates the Linux executable; Windows and macOS release assets are generated by the Release Builds GitHub Actions workflow when a v* tag is pushed or when the workflow is run manually. The release source and build tooling live on main; generated .exe, .app, .zip, .tar.gz, and checksum files should stay out of git and be attached to the GitHub Release for the tag instead.

To generate a platform asset from another machine:

git fetch --tags
git checkout v2026.06.27
python -m pip install --upgrade pip
python -m pip install -r requirements.txt -r _0_Utils/deploy/requirements.txt
python _0_Utils/deploy/deploy.py --release --version 2026.06.27 --upload-release

Uploading requires the GitHub CLI (gh) to be installed and authenticated.

Release Checks

Run the local fast CI gate:

make ci

This runs:

  • make lint
  • make typecheck
  • make test

GitHub Actions runs the same fast gate inside the BobSim Docker image with the BobLib submodule checked out recursively. Full StandardSim baseline simulations are intentionally left out of normal GitHub CI because they can exceed hosted runner limits.

Run the full StandardSim baseline explicitly when you need to refresh or review simulation artifacts:

make regression-baseline

Target Language

BobSim's make targets use a small, intentional vocabulary:

  • docker-*: build or rebuild the development image.
  • shell-*: open an interactive shell in a workflow context.
  • standard-*: build and run standard vehicle evaluations.
  • envelope-*: generate performance-envelope outputs.
  • opt-*: run sensitivity and response-surface workflows.
  • clean-*: remove generated artifacts.

Standard Simulation Entrypoints

Most standard simulation work should be launched from the app so the vehicle configuration, generated Modelica, run logs, and saved results stay keyed together. The Make targets remain useful for direct smoke tests and batch development.

Run the complete standard baseline:

make standard-eval-all

That target builds missing executables, then runs RampSteerEval, SteadyStateEval, TransientEval, and FourPostEval.

For focused standard work, build and run individual studies:

make standard-build
make standard-eval-ramp-steer
make standard-eval-steady-state
make standard-eval-transient

make standard-build-four-post
make standard-eval-four-post

Build-only targets are also available:

make standard-build
make standard-build-four-post

Reports and metric CSVs are written under _3_StandardSim/generated_results/.

Cleanup

Remove local Python/tool caches:

make clean

Use more specific cleanup targets when you only want to clear generated workflow artifacts:

make clean-app
make clean-visual
make clean-standard
make clean-envelope
make clean-opt
make clean-all

About

Vehicle simulation orchestration for BobDyn

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages