virtualmodelcontrol 1.2.0__tar.gz → 1.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/CHANGELOG.md +12 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/PKG-INFO +1 -1
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/installation.md +2 -2
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/tutorials/real-time.md +4 -2
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/_version.py +2 -2
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/sim/run.py +66 -32
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/sim/test_wallclock.py +76 -0
- virtualmodelcontrol-1.2.1/tests/test_python_versions.py +58 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/.gitignore +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/CITATION.cff +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/LICENSE +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/README.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/benchmarks/tick.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/_ext/video.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/_static/create-lab.png +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/_static/custom.css +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/_static/favicon.svg +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/_static/logo-light.svg +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/_static/logo.svg +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/_static/readme-hero.svg +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/_templates/autosummary/module.rst +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/_templates/partials/toc.html +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/api/index.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/concepts/conventions.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/concepts/efficiency.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/concepts/finger.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/concepts/library.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/concepts/passivity.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/concepts/pcc.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/concepts/vmc.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/conf.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/development/changelog.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/development/contributing.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/development/roadmap.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/development/support.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/docs_setup.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/examples/finger.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/examples/hand.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/examples/hanging-arm.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/examples/soft-arm.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/examples/turtle.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/examples/two-arms.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/index.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/schematics/__init__.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/schematics/_draw.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/schematics/bimanual.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/schematics/control_loop.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/schematics/energy_flow.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/schematics/finger.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/schematics/four_steps.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/schematics/hand.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/schematics/helyx.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/schematics/library_map.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/schematics/mechanism.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/schematics/params.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/schematics/pcc.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/schematics/turtle.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/schematics/ur5.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/scripts/readme_figure.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/troubleshooting.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/tutorials/build-a-robot.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/tutorials/configurations.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/tutorials/contact.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/tutorials/coordinates-and-components.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/tutorials/crawl.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/tutorials/energy.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/tutorials/estimation.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/tutorials/extend.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/tutorials/first-controller.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/tutorials/fit.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/tutorials/force.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/tutorials/friction.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/tutorials/introduction.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/tutorials/kinematics.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/tutorials/mpc.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/tutorials/optimize.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/tutorials/outside.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/tutorials/parameters.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/tutorials/reach.yaml +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/tutorials/run-logs.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/tutorials/run-settings.yaml +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/tutorials/stiffness.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/tutorials/swaps.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/tutorials/tuning.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/tutorials/underactuated.md +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/pyproject.toml +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/__init__.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/adaptation/__init__.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/adaptation/force.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/adaptation/limits.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/adaptation/position.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/adaptation/scalar.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/adaptation/seeking.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/adaptation/stiffness.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/compiler.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/config/__init__.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/config/controllers.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/config/coordinates.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/config/experiment.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/config/files.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/config/spec.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/control/__init__.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/control/blending.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/control/controller.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/control/output.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/control/projection.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/control/schedule.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/control/state.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/control/tank.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/control/underactuated.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/core/__init__.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/core/backends.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/core/params.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/core/registry.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/core/signals.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/core/space.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/core/symbolic.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/core/units.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/dynamics.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/estimation/__init__.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/estimation/balance.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/estimation/compliance.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/estimation/contact.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/estimation/imu.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/estimation/inversion.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/estimation/kalman.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/estimation/measurement.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/estimation/momentum.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/estimation/sensors.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/estimation/stiffness.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/estimation/velocity.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/hardware/__init__.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/hardware/profile.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/identification/__init__.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/identification/efficiency.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/identification/params.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/identification/plateaus.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/identification/steps.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/identification/stiffness.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/identification/transmission.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/math.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/mechanisms/__init__.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/mechanisms/components/__init__.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/mechanisms/components/base.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/mechanisms/components/constrained.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/mechanisms/components/dissipation.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/mechanisms/components/gated.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/mechanisms/components/inertance.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/mechanisms/components/locomotion.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/mechanisms/components/sources.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/mechanisms/components/storage.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/mechanisms/coordinates/__init__.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/mechanisms/coordinates/base.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/mechanisms/coordinates/frames.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/mechanisms/coordinates/geometry.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/mechanisms/coordinates/joints.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/mechanisms/coordinates/ops.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/mechanisms/coordinates/references.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/mechanisms/mechanism.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/models/__init__.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/models/actuation.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/models/assembly.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/models/continuum/__init__.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/models/continuum/pcc.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/models/efficiency.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/models/equations.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/models/friction.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/models/function.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/models/joint_space.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/models/kinematic.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/models/kinematics.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/models/rigid/__init__.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/models/rigid/couplings.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/models/rigid/poe.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/models/rigid/spline.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/optimization/__init__.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/optimization/asktell.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/optimization/builder.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/optimization/collocation.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/optimization/equilibrium.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/optimization/horizon.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/optimization/mpc.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/optimization/nlp.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/optimization/problem.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/optimization/result.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/optimization/search.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/optimization/shooting.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/optimization/solver.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/optimization/tank.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/optimization/terms.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/optimization/trajectory.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/optimization/variables.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/optimization/virtual.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/py.typed +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/robots/__init__.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/robots/adapt.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/robots/bimanual.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/robots/helyx.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/robots/planar.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/robots/turtle.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/robots/ur5.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/sim/__init__.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/sim/balance.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/sim/model_plant.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/sim/plant.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/sim/replay.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/sim/rollout.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/sim/runlog.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/system.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/testing.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/viz/__init__.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/viz/animation.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/viz/draw.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/viz/style.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/adaptation/test_fingertip.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/adaptation/test_force.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/adaptation/test_grasp.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/adaptation/test_holding.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/adaptation/test_loop.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/adaptation/test_position.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/adaptation/test_scalar.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/adaptation/test_seeking.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/adaptation/test_stiffness_tracking.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/adaptation/test_virtual_state.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/backend_helpers.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/config/test_config.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/conftest.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/control/test_blending.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/control/test_honesty.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/control/test_inputs.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/control/test_output.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/control/test_projection.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/control/test_schedule.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/control/test_state_layout.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/control/test_tank.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/control/test_underactuated.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/control/test_underactuated_golden.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/control/test_vmc_golden.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/core/test_backends.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/core/test_backends_torch.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/core/test_params.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/core/test_registry.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/core/test_signals.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/core/test_space.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/core/test_symbolic.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/data/adaptation.npz +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/data/compliance.npz +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/data/components.npz +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/data/configs/finger.yaml +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/data/configs/hand.yaml +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/data/configs/soft-arm.yaml +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/data/configs/turtle.yaml +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/data/configs/two-arms.yaml +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/data/configs/ur5-hand.yaml +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/data/derivatives.npz +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/data/dynamics.npz +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/data/efficiency.npz +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/data/estimation.npz +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/data/finger.npz +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/data/fingertip.npz +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/data/hand.npz +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/data/heuristics.npz +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/data/imu.npz +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/data/kalman.npz +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/data/mocap.npz +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/data/optimization.json +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/data/optimization.npz +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/data/pcc.npz +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/data/transmission.npz +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/data/turtle.npz +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/data/underactuated.npz +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/data/vmc.npz +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/estimation/test_compliance_golden.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/estimation/test_contact.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/estimation/test_imu.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/estimation/test_inversion.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/estimation/test_kalman.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/estimation/test_kalman_golden.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/estimation/test_kalman_unscented.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/estimation/test_mocap_golden.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/estimation/test_momentum.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/estimation/test_sensors.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/estimation/test_unmeasured.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/estimation/test_velocity.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/hardware/test_profile.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/hardware/test_templates.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/helpers.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/identification/test_efficiency_fit.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/identification/test_fit_friction.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/identification/test_fit_params.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/identification/test_friction.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/identification/test_steps.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/identification/test_stiffness_fit.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/identification/test_transmission.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/lab_optimization.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/mechanisms/test_components.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/mechanisms/test_components_golden.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/mechanisms/test_contact.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/mechanisms/test_coordinates.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/mechanisms/test_distances.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/mechanisms/test_frames.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/mechanisms/test_friction.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/mechanisms/test_gated.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/mechanisms/test_mechanism.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/mechanisms/test_more_components.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/mechanisms/test_pair_contact.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/mechanisms/test_phase_spring.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/mechanisms/test_virtual_model.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/models/test_actuation.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/models/test_assembly.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/models/test_contact_map.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/models/test_efficiency.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/models/test_equations.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/models/test_floating.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/models/test_floating_base.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/models/test_function.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/models/test_kinematics.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/models/test_pcc.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/models/test_poe.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/models/test_rail.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/models/test_static_friction.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/models/test_underactuated.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/optimization/test_asktell.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/optimization/test_collocation.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/optimization/test_equilibrium.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/optimization/test_horizon.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/optimization/test_lab.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/optimization/test_mpc.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/optimization/test_periodic.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/optimization/test_plant.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/optimization/test_problem.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/optimization/test_search.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/optimization/test_shooting.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/optimization/test_solvers.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/optimization/test_structure.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/optimization/test_swap.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/optimization/test_tank.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/optimization/test_terms.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/optimization/test_variables.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/optimization/test_virtual.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/robots/test_adapt.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/robots/test_bimanual.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/robots/test_crawler.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/robots/test_hand.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/robots/test_helyx.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/robots/test_parametric.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/robots/test_planar.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/robots/test_turtle.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/robots/test_ur5.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/sim/test_balance.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/sim/test_record.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/sim/test_replay.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/sim/test_rollout.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/sim/test_run.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/sim/test_runlog.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/small_plan.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/soft_arm_plan.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/test_benchmark.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/test_compiler.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/test_docs.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/test_dynamics.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/test_import.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/test_math.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/test_readme.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/test_testing.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/underactuated_lab.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/viz/test_animate.py +0 -0
- {virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/tests/viz/test_viz.py +0 -0
|
@@ -4,6 +4,18 @@ All notable changes to this project are documented here. The format follows
|
|
|
4
4
|
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and versions follow
|
|
5
5
|
[Semantic Versioning](https://semver.org/) (0.x: the API may change between minor versions).
|
|
6
6
|
|
|
7
|
+
## [1.2.1] - 2026-10-10
|
|
8
|
+
|
|
9
|
+
A patch: a Ctrl-C can no longer lose the log of a real-time run. Nothing else changes.
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- A Ctrl-C (or `_thread.interrupt_main()`) that arrived in the middle of a real-time step could land
|
|
14
|
+
inside a call into CasADi or numpy, come out as a `SystemError` and lose the log. On the main thread,
|
|
15
|
+
with Python's own handler on SIGINT, `sim.run` now only raises a flag, reads it between two steps and
|
|
16
|
+
returns the log; a second Ctrl-C raises at once, for a run that is stuck. A handler of your own, and
|
|
17
|
+
any other thread, are left alone.
|
|
18
|
+
|
|
7
19
|
## [1.2.0] - 2026-10-09
|
|
8
20
|
|
|
9
21
|
A robot that runs for hours: the log of a real-time run can keep only its last seconds. Nothing that
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: virtualmodelcontrol
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.1
|
|
4
4
|
Summary: Virtual Model Control: robots and controllers as mechanisms of springs, dampers and inertances, compiled with CasADi.
|
|
5
5
|
Project-URL: Repository, https://github.com/vigno0405/VirtualModelControl
|
|
6
6
|
Project-URL: Documentation, https://vigno0405.github.io/VirtualModelControl/
|
|
@@ -120,10 +120,10 @@ pip install -e .
|
|
|
120
120
|
An experiment should always run the same code. Pin the version, and move the pin on purpose:
|
|
121
121
|
|
|
122
122
|
```bash
|
|
123
|
-
pip install "virtualmodelcontrol==1.2.
|
|
123
|
+
pip install "virtualmodelcontrol==1.2.1"
|
|
124
124
|
```
|
|
125
125
|
|
|
126
|
-
In a `requirements.txt` file, write `virtualmodelcontrol==1.2.
|
|
126
|
+
In a `requirements.txt` file, write `virtualmodelcontrol==1.2.1`. In a conda `environment.yml`,
|
|
127
127
|
list it under `pip:`. `pip show virtualmodelcontrol` tells you which version you have, and the
|
|
128
128
|
[changelog](development/changelog.md) what changed between versions.
|
|
129
129
|
|
|
@@ -369,8 +369,10 @@ assert old.info["stale"] == len(old.arrays()["t"])
|
|
|
369
369
|
assert not old.arrays()["motor_torque"].any() and blind.info["guard_trips"] > 20
|
|
370
370
|
```
|
|
371
371
|
|
|
372
|
-
**Ctrl-C.** It ends a real-time run with the log so far.
|
|
373
|
-
|
|
372
|
+
**Ctrl-C.** It ends a real-time run with the log so far. The step that is running finishes first
|
|
373
|
+
(an interrupt in the middle of a step could land inside a call into CasADi or numpy and lose the log),
|
|
374
|
+
and a second Ctrl-C stops the run at once, for one that is stuck. A signal handler of your own is
|
|
375
|
+
left alone. Here the controller raises it at its 60th step:
|
|
374
376
|
|
|
375
377
|
```{code-cell} python
|
|
376
378
|
class Stop(Slow):
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.2.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 2,
|
|
21
|
+
__version__ = version = '1.2.1'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 2, 1)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -2,9 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
import contextlib
|
|
6
|
+
import signal
|
|
7
|
+
import threading
|
|
5
8
|
import time
|
|
6
9
|
import warnings
|
|
7
|
-
from collections.abc import Callable, Iterable
|
|
10
|
+
from collections.abc import Callable, Iterable, Iterator
|
|
8
11
|
from dataclasses import dataclass
|
|
9
12
|
from datetime import datetime
|
|
10
13
|
from typing import Any
|
|
@@ -69,7 +72,7 @@ def run(
|
|
|
69
72
|
Each step reads the plant, asks the controller for a command (zero torque if the guard
|
|
70
73
|
trips), writes it, then advances a simulated plant by ``clock.dt`` or, with a ``WallClock``,
|
|
71
74
|
waits for the next step. On real time, ``T=None`` runs until Ctrl-C, and Ctrl-C ends the run
|
|
72
|
-
with the log so far. ``z0`` sets the controller's initial
|
|
75
|
+
with the log so far, after the step that is running. ``z0`` sets the controller's initial
|
|
73
76
|
virtual state, or is a function of the first reading that returns it. The log holds, at every
|
|
74
77
|
step, the measurements, the command (and the law's torque before any output stage), the
|
|
75
78
|
virtual state ``z`` when the controller has one, and what ``record`` asks for (see
|
|
@@ -186,6 +189,36 @@ def _reset(controller: Any, t: float, meas: Signals, z0: Any) -> None:
|
|
|
186
189
|
controller.reset(t, meas, z0=z0)
|
|
187
190
|
|
|
188
191
|
|
|
192
|
+
@contextlib.contextmanager
|
|
193
|
+
def _ctrl_c_waits_for_the_step() -> Iterator[Callable[[], bool]]:
|
|
194
|
+
"""Ctrl-C waits for the step that is running.
|
|
195
|
+
|
|
196
|
+
On the main thread, with Python's own handler on SIGINT, a first Ctrl-C only raises a flag
|
|
197
|
+
that the loop reads between two steps. An interrupt raised in the middle of a step can land
|
|
198
|
+
inside a call into C code (CasADi, numpy), which turns it into a SystemError and loses the log.
|
|
199
|
+
A second Ctrl-C raises KeyboardInterrupt at once, for a run that is stuck. Any other handler,
|
|
200
|
+
and any other thread, is left alone.
|
|
201
|
+
"""
|
|
202
|
+
flag = threading.Event()
|
|
203
|
+
ours = (
|
|
204
|
+
threading.current_thread() is threading.main_thread()
|
|
205
|
+
and signal.getsignal(signal.SIGINT) is signal.default_int_handler
|
|
206
|
+
)
|
|
207
|
+
|
|
208
|
+
def on_sigint(signum: int, frame: object) -> None:
|
|
209
|
+
if flag.is_set():
|
|
210
|
+
raise KeyboardInterrupt
|
|
211
|
+
flag.set()
|
|
212
|
+
|
|
213
|
+
if ours:
|
|
214
|
+
signal.signal(signal.SIGINT, on_sigint)
|
|
215
|
+
try:
|
|
216
|
+
yield flag.is_set
|
|
217
|
+
finally:
|
|
218
|
+
if ours:
|
|
219
|
+
signal.signal(signal.SIGINT, signal.default_int_handler)
|
|
220
|
+
|
|
221
|
+
|
|
189
222
|
def _run_wall(
|
|
190
223
|
plant: Any,
|
|
191
224
|
controller: Any,
|
|
@@ -204,36 +237,37 @@ def _run_wall(
|
|
|
204
237
|
_reset(controller, 0.0, meas, z0)
|
|
205
238
|
_describe(log, plant, controller)
|
|
206
239
|
steps = overruns = stale = dropped = 0
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
240
|
+
with _ctrl_c_waits_for_the_step() as interrupted:
|
|
241
|
+
try:
|
|
242
|
+
while (limit is None or steps < limit) and not interrupted():
|
|
243
|
+
now = clock.now()
|
|
244
|
+
t = now - t0
|
|
245
|
+
meas = plant.read()
|
|
246
|
+
old = clock.stale is not None and plant.t - meas.t > clock.stale
|
|
247
|
+
stale += old
|
|
248
|
+
good = guard.ok(meas) and not old
|
|
249
|
+
if good:
|
|
250
|
+
cmd = controller.step(t, meas)
|
|
251
|
+
else:
|
|
252
|
+
cmd = Signals(t, motor_torque=np.zeros(motors))
|
|
253
|
+
plant.write(cmd)
|
|
254
|
+
values = _values(t, cmd, meas, controller, plant, extras if good else None)
|
|
255
|
+
log.step(dt=now - previous, **values)
|
|
256
|
+
steps += 1
|
|
257
|
+
if window is not None and len(log.rows["t"]) > 1.25 * window / clock.dt:
|
|
258
|
+
# a fifth at a time: trimming a list costs its length
|
|
259
|
+
drop = len(log.rows["t"]) // 5
|
|
260
|
+
dropped += drop
|
|
261
|
+
for rows in log.rows.values():
|
|
262
|
+
del rows[:drop]
|
|
263
|
+
previous, tick = now, tick + clock.dt
|
|
264
|
+
wait = tick - clock.now()
|
|
265
|
+
if wait > 0:
|
|
266
|
+
clock.sleep(wait)
|
|
267
|
+
else: # late: start again from now rather than catching up in a burst
|
|
268
|
+
overruns, tick = overruns + 1, clock.now()
|
|
269
|
+
except KeyboardInterrupt: # Ctrl-C ends a real-time run with the log so far
|
|
270
|
+
log.rows = {name: rows[: steps - dropped] for name, rows in log.rows.items()}
|
|
237
271
|
dt = np.diff(log.arrays()["t"].ravel()) if steps > 1 else np.array([clock.dt])
|
|
238
272
|
log.info = {
|
|
239
273
|
"steps": steps,
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"""The run loop on real time: steps on schedule, measured time, stale readings, overruns."""
|
|
2
2
|
|
|
3
|
+
import signal
|
|
4
|
+
import threading
|
|
3
5
|
import time
|
|
4
6
|
|
|
5
7
|
import numpy as np
|
|
@@ -120,6 +122,80 @@ def test_ctrl_c_ends_a_real_time_run_with_the_log_so_far():
|
|
|
120
122
|
assert len(rows["t"]) == len(rows["motor_torque"]) == len(rows["motor_position"]) == 5
|
|
121
123
|
|
|
122
124
|
|
|
125
|
+
@pytest.fixture
|
|
126
|
+
def pythons_sigint_handler():
|
|
127
|
+
"""SIGINT as a plain Python program has it, and whatever it was put back afterwards."""
|
|
128
|
+
before = signal.signal(signal.SIGINT, signal.default_int_handler)
|
|
129
|
+
yield
|
|
130
|
+
signal.signal(signal.SIGINT, before)
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def test_a_ctrl_c_in_the_middle_of_a_step_ends_the_run_after_that_step(pythons_sigint_handler):
|
|
134
|
+
"""The step is never interrupted: inside a call into C code (CasADi, numpy) the interrupt would
|
|
135
|
+
come out as a SystemError and the log would be lost."""
|
|
136
|
+
|
|
137
|
+
class Signalled(Controller):
|
|
138
|
+
def step(self, t, meas):
|
|
139
|
+
out = super().step(t, meas)
|
|
140
|
+
if len(self.times) == 5:
|
|
141
|
+
signal.raise_signal(signal.SIGINT) # as it arrives in the middle of the step
|
|
142
|
+
return out
|
|
143
|
+
|
|
144
|
+
time = FakeTime()
|
|
145
|
+
clock = vmc.sim.WallClock(dt=0.01, now=time.now, sleep=time.sleep)
|
|
146
|
+
log = vmc.sim.run(Plant(time), Signalled(time), clock, T=None)
|
|
147
|
+
rows = log.arrays()
|
|
148
|
+
assert log.info["steps"] == 5 and all(
|
|
149
|
+
len(v) == 5 for v in rows.values()
|
|
150
|
+
) # whole steps, the fifth too
|
|
151
|
+
assert (
|
|
152
|
+
signal.getsignal(signal.SIGINT) is signal.default_int_handler
|
|
153
|
+
) # and the handler is put back
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
def test_a_second_ctrl_c_stops_a_run_at_once(pythons_sigint_handler):
|
|
157
|
+
class Stuck(Controller):
|
|
158
|
+
def step(self, t, meas):
|
|
159
|
+
if len(self.times) == 2:
|
|
160
|
+
signal.raise_signal(signal.SIGINT)
|
|
161
|
+
signal.raise_signal(signal.SIGINT) # the first only asked; this one raises
|
|
162
|
+
return super().step(t, meas)
|
|
163
|
+
|
|
164
|
+
time = FakeTime()
|
|
165
|
+
clock = vmc.sim.WallClock(dt=0.01, now=time.now, sleep=time.sleep)
|
|
166
|
+
log = vmc.sim.run(Plant(time), Stuck(time), clock, T=None)
|
|
167
|
+
assert log.info["steps"] == 2 and all(len(v) == 2 for v in log.arrays().values())
|
|
168
|
+
assert signal.getsignal(signal.SIGINT) is signal.default_int_handler
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
def test_a_handler_of_the_program_and_other_threads_are_left_alone(pythons_sigint_handler):
|
|
172
|
+
seen = []
|
|
173
|
+
mine = lambda *_: seen.append(1) # noqa: E731
|
|
174
|
+
signal.signal(signal.SIGINT, mine)
|
|
175
|
+
|
|
176
|
+
class Looking(Controller):
|
|
177
|
+
def step(self, t, meas):
|
|
178
|
+
seen.append(signal.getsignal(signal.SIGINT) is mine)
|
|
179
|
+
return super().step(t, meas)
|
|
180
|
+
|
|
181
|
+
time = FakeTime()
|
|
182
|
+
clock = vmc.sim.WallClock(dt=0.01, now=time.now, sleep=time.sleep)
|
|
183
|
+
vmc.sim.run(Plant(time), Looking(time), clock, T=0.03)
|
|
184
|
+
assert seen == [True] * 3 and signal.getsignal(signal.SIGINT) is mine
|
|
185
|
+
signal.signal(signal.SIGINT, signal.default_int_handler)
|
|
186
|
+
done = []
|
|
187
|
+
|
|
188
|
+
def in_a_thread(): # signals can only be set on the main thread: no error, the run just goes
|
|
189
|
+
time = FakeTime()
|
|
190
|
+
clock = vmc.sim.WallClock(dt=0.01, now=time.now, sleep=time.sleep)
|
|
191
|
+
done.append(vmc.sim.run(Plant(time), Controller(time), clock, T=0.03).info["steps"])
|
|
192
|
+
|
|
193
|
+
thread = threading.Thread(target=in_a_thread)
|
|
194
|
+
thread.start()
|
|
195
|
+
thread.join()
|
|
196
|
+
assert done == [3]
|
|
197
|
+
|
|
198
|
+
|
|
123
199
|
def test_a_simulated_run_needs_its_duration():
|
|
124
200
|
with pytest.raises(ValueError, match="duration"):
|
|
125
201
|
vmc.sim.run(None, None, vmc.sim.SimClock(0.01), T=None)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"""Everything written in Python compiles on the oldest Python the library supports.
|
|
2
|
+
|
|
3
|
+
A syntax of a newer Python is the usual surprise on a student's machine (an f-string that reuses
|
|
4
|
+
its own quotes is legal on 3.12 and a SyntaxError on 3.10). The tests import only some modules and
|
|
5
|
+
the docs build runs only some snippets, so this reads them all: every ``.py`` file of the
|
|
6
|
+
repository and every Python code block of the Markdown pages. It fails on the 3.10 job of the CI,
|
|
7
|
+
which is where it matters; a newer interpreter at least catches the warnings that are going to be
|
|
8
|
+
errors.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
import re
|
|
12
|
+
import warnings
|
|
13
|
+
from pathlib import Path
|
|
14
|
+
|
|
15
|
+
ROOT = Path(__file__).resolve().parent.parent
|
|
16
|
+
SKIP = {
|
|
17
|
+
".git",
|
|
18
|
+
".venv",
|
|
19
|
+
"venv",
|
|
20
|
+
"_build",
|
|
21
|
+
"build",
|
|
22
|
+
"dist",
|
|
23
|
+
"node_modules",
|
|
24
|
+
".claude",
|
|
25
|
+
"__pycache__",
|
|
26
|
+
}
|
|
27
|
+
FENCE = re.compile(r"^(`{3,})\s*(\{code-cell\}\s*python|python|py)\s*$(.*?)^\1\s*$", re.S | re.M)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def sources():
|
|
31
|
+
for path in sorted(ROOT.rglob("*")):
|
|
32
|
+
if SKIP & set(path.relative_to(ROOT).parts):
|
|
33
|
+
continue
|
|
34
|
+
if path.suffix == ".py":
|
|
35
|
+
yield str(path.relative_to(ROOT)), path.read_text(encoding="utf-8")
|
|
36
|
+
elif path.suffix == ".md":
|
|
37
|
+
for i, block in enumerate(FENCE.finditer(path.read_text(encoding="utf-8"))):
|
|
38
|
+
body = block.group(3)
|
|
39
|
+
if block.group(2).startswith(
|
|
40
|
+
"{"
|
|
41
|
+
): # a MyST cell: its options (:tags: ...) are not code
|
|
42
|
+
body = "\n".join(line for line in body.splitlines() if not line.startswith(":"))
|
|
43
|
+
yield f"{path.relative_to(ROOT)} (block {i + 1})", body
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def test_every_python_file_and_docs_snippet_compiles_on_the_oldest_supported_python():
|
|
47
|
+
problems, count = [], 0
|
|
48
|
+
with warnings.catch_warnings():
|
|
49
|
+
warnings.simplefilter("error", SyntaxWarning)
|
|
50
|
+
warnings.simplefilter("error", DeprecationWarning)
|
|
51
|
+
for name, text in sources():
|
|
52
|
+
count += 1
|
|
53
|
+
try:
|
|
54
|
+
compile(text, name, "exec")
|
|
55
|
+
except (SyntaxError, SyntaxWarning, DeprecationWarning) as exc:
|
|
56
|
+
problems.append(f"{name}: {type(exc).__name__}: {exc}")
|
|
57
|
+
assert count > 400, "the repository was not found where this test expects it"
|
|
58
|
+
assert not problems, "\n".join(problems)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/_templates/autosummary/module.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/docs/tutorials/coordinates-and-components.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/adaptation/force.py
RENAMED
|
File without changes
|
{virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/adaptation/limits.py
RENAMED
|
File without changes
|
|
File without changes
|
{virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/adaptation/scalar.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/config/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/config/experiment.py
RENAMED
|
File without changes
|
{virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/config/files.py
RENAMED
|
File without changes
|
{virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/config/spec.py
RENAMED
|
File without changes
|
{virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/control/__init__.py
RENAMED
|
File without changes
|
{virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/control/blending.py
RENAMED
|
File without changes
|
|
File without changes
|
{virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/control/output.py
RENAMED
|
File without changes
|
|
File without changes
|
{virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/control/schedule.py
RENAMED
|
File without changes
|
{virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/control/state.py
RENAMED
|
File without changes
|
{virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/control/tank.py
RENAMED
|
File without changes
|
|
File without changes
|
{virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/core/__init__.py
RENAMED
|
File without changes
|
{virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/core/backends.py
RENAMED
|
File without changes
|
{virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/core/params.py
RENAMED
|
File without changes
|
{virtualmodelcontrol-1.2.0 → virtualmodelcontrol-1.2.1}/src/virtualmodelcontrol/core/registry.py
RENAMED
|
File without changes
|