openscvx 0.3.2.dev235__tar.gz → 0.3.2.dev248__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.
- {openscvx-0.3.2.dev235/openscvx.egg-info → openscvx-0.3.2.dev248}/PKG-INFO +2 -2
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/arm/three_link_arm.py +3 -3
- {openscvx-0.3.2.dev235/examples/abstract → openscvx-0.3.2.dev248/examples/rocket}/3DoF_pdg.py +7 -4
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/_version.py +3 -3
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/discretization/discretization.py +22 -2
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/solvers/cvxpy.py +34 -17
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248/openscvx.egg-info}/PKG-INFO +2 -2
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx.egg-info/SOURCES.txt +1 -1
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/pyproject.toml +1 -1
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/test_discretization.py +24 -1
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/.github/assets/logo.svg +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/.github/release-drafter.yml +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/.github/workflows/_docs.yml +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/.github/workflows/docs.yml +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/.github/workflows/lint.yml +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/.github/workflows/nightly.yml +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/.github/workflows/release-drafter.yml +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/.github/workflows/release.yml +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/.github/workflows/tests-integration.yml +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/.github/workflows/tests-unit.yml +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/.gitignore +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/CONTRIBUTING.md +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/LICENSE +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/README.md +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Overview/constraint_reformulation.md +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Overview/control_parameterization.md +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Overview/discretization.md +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Overview/ocp.md +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Overview/scvx.md +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Overview/time_dilation.md +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/UnderTheHood/lowering_architecture.md +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/UnderTheHood/vectorization_and_vmapping.md +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Usage/advanced_problem_setup.md +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Usage/api.md +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Usage/api_constraints.md +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Usage/api_control.md +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Usage/api_integrators.md +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Usage/api_state.md +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Usage/api_trajoptproblem.md +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Usage/api_variable.md +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Usage/basic_problem_setup.md +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Usage/tutorial_6dof_los_guidance.md +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Usage/tutorial_6dof_obstacle_avoidance.md +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Usage/tutorials.md +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/assets/favicon.png +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/assets/images/ct-scvx_dark.png +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/assets/images/ct-scvx_light.png +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/assets/images/ctcs_dark.png +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/assets/images/ctcs_light.png +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/assets/images/problem_class_dark.png +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/assets/images/problem_class_light.png +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/assets/logo.svg +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/citation.md +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/examples.md +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/getting-started.md +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/index.md +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/javascripts/mathjax.js +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/abstract/brachistochrone.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/car/dubins_car.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/car/dubins_car_disjoint.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/car/dubins_car_stljax.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/drone/cinema_vp.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/drone/cinema_vp_realtime_base.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/drone/dr_double_integrator.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/drone/dr_vp.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/drone/dr_vp_nodal.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/drone/dr_vp_polytope.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/drone/drone_racing.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/drone/obstacle_avoidance.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/drone/obstacle_avoidance_nodal.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/drone/obstacle_avoidance_realtime_base.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/drone/obstacle_avoidance_vmap.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/plotting.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/plotting_viser.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/realtime/cinema_vp_realtime.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/realtime/drone_racing_realtime.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/realtime/dubins_car_realtime.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/realtime/obstacle_avoidance_realtime.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/spacecraft/proxops_cw.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/figures/ctlos_cine.gif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/figures/ctlos_dr.gif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/figures/dtlos_cine.gif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/figures/dtlos_dr.gif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/figures/openscvx_logo.svg +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/figures/openscvx_logo_square.png +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/figures/oscvx_structure_full_dark.svg +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/figures/video_preview.png +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/__init__.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/1-background.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/1-background@1x.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/1-background@2x.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/1-background@3x.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/1-background@4x.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/2-mars.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/2-mars@1x.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/2-mars@2x.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/2-mars@3x.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/2-mars@4x.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/3-moon.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/3-moon@1x.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/3-moon@2x.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/3-moon@3x.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/3-moon@4x.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/4-sat1.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/4-sat1@1x.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/4-sat1@2x.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/4-sat1@3x.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/4-sat1@4x.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/5-space.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/5-space@1x.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/5-space@2x.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/5-space@3x.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/5-space@4x.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/6-earth.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/6-earth@1x.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/6-earth@2x.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/6-earth@3x.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/6-earth@4x.avif +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/javascripts/parallax.js +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/logo.svg +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/stylesheets/custom.css +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/stylesheets/parallax.css +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/home.html +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/main.html +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/partials/parallax/hero.html +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/partials/parallax.html +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/mkdocs.yml +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/__init__.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/algorithms/__init__.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/algorithms/autotuning.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/algorithms/base.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/algorithms/optimization_results.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/algorithms/penalized_trust_region.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/config.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/discretization/__init__.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/expert/__init__.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/expert/byof.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/expert/lowering.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/expert/validation.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/init/__init__.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/init/interpolation.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/integrators/__init__.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/integrators/runge_kutta.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/lowered/__init__.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/lowered/cvxpy_constraints.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/lowered/cvxpy_variables.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/lowered/dynamics.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/lowered/jax_constraints.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/lowered/parameters.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/lowered/problem.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/lowered/unified.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/plotting/__init__.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/plotting/plotting.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/plotting/scp_iteration.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/plotting/viser/__init__.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/plotting/viser/animated.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/plotting/viser/plotly_integration.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/plotting/viser/primitives.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/plotting/viser/scp.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/plotting/viser/server.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/problem.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/propagation/__init__.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/propagation/post_processing.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/propagation/propagation.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/solvers/__init__.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/__init__.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/augmentation.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/builder.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/constraint_set.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/__init__.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/arithmetic.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/array.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/constraint.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/control.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/expr.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/lie/__init__.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/lie/adjoint.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/lie/se3.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/lie/so3.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/linalg.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/math.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/spatial.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/state.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/stl.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/variable.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/vmap.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/hashing.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/lower.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/lowerers/__init__.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/lowerers/cvxpy.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/lowerers/jax.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/preprocessing.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/problem.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/time.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/unified.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/utils/__init__.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/utils/cache.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/utils/caching.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/utils/printing.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/utils/profiling.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/utils/utils.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx.egg-info/dependency_links.txt +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx.egg-info/requires.txt +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx.egg-info/top_level.txt +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/scripts/gen_example_pages.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/scripts/gen_ref_pages.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/setup.cfg +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/__init__.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/brachistochrone_analytical.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/__init__.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/__init__.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/test_arithmetic.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/test_array.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/test_constraint.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/test_expr.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/test_lie.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/test_linalg.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/test_math.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/test_node_reference.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/test_parameters.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/test_scaling.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/test_spatial.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/test_variable.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/test_vmap.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/test_augmentation.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/test_hashing.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/test_lower_cvxpy.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/test_lower_jax.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/test_preprocessing.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/test_unified.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/test_brachistochrone.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/test_cvxpygen_optional.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/test_examples.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/test_expert.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/test_init.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/test_integrators.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/test_plotting.py +0 -0
- {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/test_propagation.py +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openscvx
|
|
3
|
-
Version: 0.3.2.
|
|
3
|
+
Version: 0.3.2.dev248
|
|
4
4
|
Summary: A general Python-based successive convexification implementation which uses a JAX backend.
|
|
5
5
|
Author-email: Chris Hayner and Griffin Norris <haynec@uw.edu>
|
|
6
6
|
License: Apache Software License
|
|
7
|
-
Project-URL: Homepage, https://
|
|
7
|
+
Project-URL: Homepage, https://haynec.github.io/openscvx/
|
|
8
8
|
Classifier: Programming Language :: Python :: 3
|
|
9
9
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
10
10
|
Requires-Python: >=3.9
|
|
@@ -205,10 +205,10 @@ problem = Problem(
|
|
|
205
205
|
|
|
206
206
|
# Solver settings
|
|
207
207
|
problem.settings.prp.dt = 0.01
|
|
208
|
-
problem.settings.scp.w_tr =
|
|
209
|
-
problem.settings.scp.lam_cost =
|
|
208
|
+
problem.settings.scp.w_tr = 1e0
|
|
209
|
+
problem.settings.scp.lam_cost = 1e0
|
|
210
210
|
problem.settings.scp.lam_vc = 1e1
|
|
211
|
-
problem.settings.scp.lam_vb =
|
|
211
|
+
problem.settings.scp.lam_vb = 1e1
|
|
212
212
|
|
|
213
213
|
if __name__ == "__main__":
|
|
214
214
|
print("3-Link Arm Trajectory Optimization with Product of Exponentials FK")
|
{openscvx-0.3.2.dev235/examples/abstract → openscvx-0.3.2.dev248/examples/rocket}/3DoF_pdg.py
RENAMED
|
@@ -38,20 +38,23 @@ position.max = np.array([3000, 3000, 3000])
|
|
|
38
38
|
position.min = np.array([-3000, -3000, 0])
|
|
39
39
|
position.initial = np.array([2000, 0, 1500])
|
|
40
40
|
position.final = np.array([0, 0, 0])
|
|
41
|
+
position.guess = np.linspace(position.initial, position.final, n)
|
|
41
42
|
|
|
42
43
|
velocity = ox.State("velocity", shape=(3,)) # 3D velocity [vx, vy, vz]
|
|
43
44
|
velocity.max = np.array([v_max, v_max, v_max])
|
|
44
45
|
velocity.min = np.array([-v_max, -v_max, -v_max])
|
|
45
46
|
velocity.initial = np.array([80, 30, -75])
|
|
46
47
|
velocity.final = np.array([0, 0, 0])
|
|
48
|
+
velocity.guess = np.linspace(velocity.initial, velocity.final, n)
|
|
47
49
|
|
|
48
50
|
mass = ox.State("mass", shape=(1,)) # Vehicle mass
|
|
49
51
|
mass.max = np.array([1905])
|
|
50
52
|
mass.min = np.array([1505])
|
|
51
53
|
mass.initial = np.array([1905])
|
|
52
|
-
mass.final = [("maximize",
|
|
53
|
-
mass.scaling_min = np.array([
|
|
54
|
+
mass.final = [("maximize", 1700)]
|
|
55
|
+
mass.scaling_min = np.array([1700])
|
|
54
56
|
# mass.scaling_max = np.array([1700])
|
|
57
|
+
mass.guess = np.linspace(mass.initial, 1690, n).reshape(-1, 1)
|
|
55
58
|
|
|
56
59
|
# Define control
|
|
57
60
|
thrust = ox.Control("thrust", shape=(3,)) # Thrust force vector [Tx, Ty, Tz]
|
|
@@ -153,8 +156,8 @@ problem.settings.dis.dis_type = "ZOH"
|
|
|
153
156
|
|
|
154
157
|
problem.settings.dis.solver = "Dopri8"
|
|
155
158
|
|
|
156
|
-
problem.settings.cvx.solver = "
|
|
157
|
-
problem.settings.cvx.solver_args = {"enforce_dpp": True}
|
|
159
|
+
# problem.settings.cvx.solver = "QOCO"
|
|
160
|
+
# problem.settings.cvx.solver_args = {"enforce_dpp": True}
|
|
158
161
|
|
|
159
162
|
|
|
160
163
|
plotting_dict = {
|
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '0.3.2.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 3, 2, '
|
|
31
|
+
__version__ = version = '0.3.2.dev248'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 3, 2, 'dev248')
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'g784b8ffdc'
|
|
@@ -18,6 +18,12 @@ def dVdt(
|
|
|
18
18
|
n_u: int,
|
|
19
19
|
N: int,
|
|
20
20
|
dis_type: str,
|
|
21
|
+
S_x: np.ndarray,
|
|
22
|
+
c_x: np.ndarray,
|
|
23
|
+
S_u: np.ndarray,
|
|
24
|
+
c_u: np.ndarray,
|
|
25
|
+
inv_S_x: np.ndarray,
|
|
26
|
+
inv_S_u: np.ndarray,
|
|
21
27
|
params: dict,
|
|
22
28
|
) -> jnp.ndarray:
|
|
23
29
|
"""Compute the time derivative of the augmented state vector.
|
|
@@ -42,6 +48,9 @@ def dVdt(
|
|
|
42
48
|
Returns:
|
|
43
49
|
jnp.ndarray: Time derivative of augmented state vector.
|
|
44
50
|
"""
|
|
51
|
+
|
|
52
|
+
# TODO Implement scaling of V vector
|
|
53
|
+
|
|
45
54
|
# Define the nodes
|
|
46
55
|
nodes = jnp.arange(0, N - 1)
|
|
47
56
|
|
|
@@ -102,6 +111,8 @@ def dVdt(
|
|
|
102
111
|
)
|
|
103
112
|
# fmt: on
|
|
104
113
|
|
|
114
|
+
# TODO Implement scaling of V vector
|
|
115
|
+
|
|
105
116
|
return dVdt.reshape(-1)
|
|
106
117
|
|
|
107
118
|
|
|
@@ -159,6 +170,9 @@ def calculate_discretization(
|
|
|
159
170
|
V0 = jnp.zeros((N - 1, i4))
|
|
160
171
|
V0 = V0.at[:, :n_x].set(x[:-1].astype(float))
|
|
161
172
|
V0 = V0.at[:, n_x : n_x + n_x * n_x].set(jnp.eye(n_x).reshape(1, -1).repeat(N - 1, axis=0))
|
|
173
|
+
V0 = V0.reshape(-1)
|
|
174
|
+
|
|
175
|
+
# TODO Implement scaling of V vector
|
|
162
176
|
|
|
163
177
|
# Choose integrator
|
|
164
178
|
integrator_args = dict(
|
|
@@ -171,6 +185,12 @@ def calculate_discretization(
|
|
|
171
185
|
n_u=n_u,
|
|
172
186
|
N=N,
|
|
173
187
|
dis_type=settings.dis.dis_type,
|
|
188
|
+
S_x=settings.sim.S_x,
|
|
189
|
+
c_x=settings.sim.c_x,
|
|
190
|
+
S_u=settings.sim.S_u,
|
|
191
|
+
c_u=settings.sim.c_u,
|
|
192
|
+
inv_S_x=settings.sim.inv_S_x,
|
|
193
|
+
inv_S_u=settings.sim.inv_S_u,
|
|
174
194
|
params=params, # Pass params as single dict
|
|
175
195
|
)
|
|
176
196
|
|
|
@@ -183,7 +203,7 @@ def calculate_discretization(
|
|
|
183
203
|
sol = solve_ivp_rk45(
|
|
184
204
|
dVdt_wrapped,
|
|
185
205
|
1.0 / (N - 1),
|
|
186
|
-
V0
|
|
206
|
+
V0,
|
|
187
207
|
args=(),
|
|
188
208
|
is_not_compiled=settings.dev.debug,
|
|
189
209
|
)
|
|
@@ -191,7 +211,7 @@ def calculate_discretization(
|
|
|
191
211
|
sol = solve_ivp_diffrax(
|
|
192
212
|
dVdt_wrapped,
|
|
193
213
|
1.0 / (N - 1),
|
|
194
|
-
V0
|
|
214
|
+
V0,
|
|
195
215
|
solver_name=settings.dis.solver,
|
|
196
216
|
rtol=settings.dis.rtol,
|
|
197
217
|
atol=settings.dis.atol,
|
|
@@ -55,9 +55,9 @@ def optimal_control_problem(settings: Config, lowered: "LoweredProblem"):
|
|
|
55
55
|
grad_g_X_cross = ocp_vars.grad_g_X_cross
|
|
56
56
|
grad_g_U_cross = ocp_vars.grad_g_U_cross
|
|
57
57
|
nu_vb_cross = ocp_vars.nu_vb_cross
|
|
58
|
-
|
|
58
|
+
inv_S_x = ocp_vars.inv_S_x
|
|
59
59
|
c_x = ocp_vars.c_x
|
|
60
|
-
|
|
60
|
+
inv_S_u = ocp_vars.inv_S_u
|
|
61
61
|
c_u = ocp_vars.c_u
|
|
62
62
|
x_nonscaled = ocp_vars.x_nonscaled
|
|
63
63
|
u_nonscaled = ocp_vars.u_nonscaled
|
|
@@ -128,38 +128,52 @@ def optimal_control_problem(settings: Config, lowered: "LoweredProblem"):
|
|
|
128
128
|
cost -= lam_cost * x_nonscaled[-1][i]
|
|
129
129
|
|
|
130
130
|
if settings.scp.uniform_time_grid:
|
|
131
|
+
S_u_inv_td = inv_S_u[settings.sim.time_dilation_slice, settings.sim.time_dilation_slice]
|
|
132
|
+
c_u_td = c_u[settings.sim.time_dilation_slice]
|
|
131
133
|
constr += [
|
|
132
|
-
u_nonscaled[i][settings.sim.time_dilation_slice]
|
|
133
|
-
== u_nonscaled[i - 1][settings.sim.time_dilation_slice]
|
|
134
|
+
S_u_inv_td @ (u_nonscaled[i][settings.sim.time_dilation_slice] - c_u_td)
|
|
135
|
+
== S_u_inv_td @ (u_nonscaled[i - 1][settings.sim.time_dilation_slice] - c_u_td)
|
|
134
136
|
for i in range(1, settings.scp.n)
|
|
135
137
|
]
|
|
136
138
|
|
|
137
139
|
constr += [
|
|
138
|
-
(x[i] -
|
|
140
|
+
(x[i] - inv_S_x @ (x_bar[i] - c_x) - dx[i]) == 0 for i in range(settings.scp.n)
|
|
139
141
|
] # State Error
|
|
140
142
|
constr += [
|
|
141
|
-
(u[i] -
|
|
143
|
+
(u[i] - inv_S_u @ (u_bar[i] - c_u) - du[i]) == 0 for i in range(settings.scp.n)
|
|
142
144
|
] # Control Error
|
|
143
145
|
|
|
144
146
|
constr += [
|
|
145
|
-
x_nonscaled[i]
|
|
146
|
-
==
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
147
|
+
inv_S_x @ (x_nonscaled[i] - c_x)
|
|
148
|
+
== inv_S_x
|
|
149
|
+
@ (
|
|
150
|
+
A_d[i - 1] @ dx_nonscaled[i - 1]
|
|
151
|
+
+ B_d[i - 1] @ du_nonscaled[i - 1]
|
|
152
|
+
+ C_d[i - 1] @ du_nonscaled[i]
|
|
153
|
+
+ x_prop[i - 1]
|
|
154
|
+
+ nu[i - 1]
|
|
155
|
+
- c_x
|
|
156
|
+
)
|
|
151
157
|
for i in range(1, settings.scp.n)
|
|
152
158
|
] # Dynamics Constraint
|
|
153
159
|
|
|
154
|
-
constr += [u_nonscaled[i] <= settings.sim.u.max for i in range(settings.scp.n)]
|
|
155
160
|
constr += [
|
|
156
|
-
u_nonscaled[i]
|
|
161
|
+
inv_S_u @ (u_nonscaled[i] - c_u) <= inv_S_u @ (settings.sim.u.max - c_u)
|
|
162
|
+
for i in range(settings.scp.n)
|
|
163
|
+
]
|
|
164
|
+
constr += [
|
|
165
|
+
inv_S_u @ (u_nonscaled[i] - c_u) >= inv_S_u @ (settings.sim.u.min - c_u)
|
|
166
|
+
for i in range(settings.scp.n)
|
|
157
167
|
] # Control Constraints
|
|
158
168
|
|
|
159
169
|
# TODO: (norrisg) formalize this
|
|
160
|
-
constr += [x_nonscaled[i][:] <= settings.sim.x.max for i in range(settings.scp.n)]
|
|
161
170
|
constr += [
|
|
162
|
-
x_nonscaled[i][:]
|
|
171
|
+
inv_S_x @ (x_nonscaled[i][:] - c_x) <= inv_S_x @ (settings.sim.x.max - c_x)
|
|
172
|
+
for i in range(settings.scp.n)
|
|
173
|
+
]
|
|
174
|
+
constr += [
|
|
175
|
+
inv_S_x @ (x_nonscaled[i][:] - c_x) >= inv_S_x @ (settings.sim.x.min - c_x)
|
|
176
|
+
for i in range(settings.scp.n)
|
|
163
177
|
] # State Constraints (Also implemented in CTCS but included for numerical stability)
|
|
164
178
|
|
|
165
179
|
########
|
|
@@ -219,7 +233,10 @@ def optimal_control_problem(settings: Config, lowered: "LoweredProblem"):
|
|
|
219
233
|
overwrite = input("Solver directory already exists. Overwrite? (y/n): ")
|
|
220
234
|
if overwrite.lower() == "y":
|
|
221
235
|
cpg.generate_code(
|
|
222
|
-
prob,
|
|
236
|
+
prob,
|
|
237
|
+
solver=settings.cvx.solver,
|
|
238
|
+
code_dir="solver",
|
|
239
|
+
wrapper=True,
|
|
223
240
|
)
|
|
224
241
|
else:
|
|
225
242
|
pass
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openscvx
|
|
3
|
-
Version: 0.3.2.
|
|
3
|
+
Version: 0.3.2.dev248
|
|
4
4
|
Summary: A general Python-based successive convexification implementation which uses a JAX backend.
|
|
5
5
|
Author-email: Chris Hayner and Griffin Norris <haynec@uw.edu>
|
|
6
6
|
License: Apache Software License
|
|
7
|
-
Project-URL: Homepage, https://
|
|
7
|
+
Project-URL: Homepage, https://haynec.github.io/openscvx/
|
|
8
8
|
Classifier: Programming Language :: Python :: 3
|
|
9
9
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
10
10
|
Requires-Python: >=3.9
|
|
@@ -49,7 +49,6 @@ docs/assets/images/problem_class_light.png
|
|
|
49
49
|
docs/javascripts/mathjax.js
|
|
50
50
|
examples/plotting.py
|
|
51
51
|
examples/plotting_viser.py
|
|
52
|
-
examples/abstract/3DoF_pdg.py
|
|
53
52
|
examples/abstract/brachistochrone.py
|
|
54
53
|
examples/arm/three_link_arm.py
|
|
55
54
|
examples/car/dubins_car.py
|
|
@@ -70,6 +69,7 @@ examples/realtime/cinema_vp_realtime.py
|
|
|
70
69
|
examples/realtime/drone_racing_realtime.py
|
|
71
70
|
examples/realtime/dubins_car_realtime.py
|
|
72
71
|
examples/realtime/obstacle_avoidance_realtime.py
|
|
72
|
+
examples/rocket/3DoF_pdg.py
|
|
73
73
|
examples/spacecraft/proxops_cw.py
|
|
74
74
|
figures/ctlos_cine.gif
|
|
75
75
|
figures/ctlos_dr.gif
|
|
@@ -19,6 +19,12 @@ def settings():
|
|
|
19
19
|
p.sim = Dummy()
|
|
20
20
|
p.sim.n_states = 2
|
|
21
21
|
p.sim.n_controls = 1
|
|
22
|
+
p.sim.S_x = jnp.eye(p.sim.n_states)
|
|
23
|
+
p.sim.c_x = jnp.zeros(p.sim.n_states)
|
|
24
|
+
p.sim.S_u = jnp.eye(p.sim.n_controls)
|
|
25
|
+
p.sim.c_u = jnp.zeros(p.sim.n_controls)
|
|
26
|
+
p.sim.inv_S_x = jnp.eye(p.sim.n_states)
|
|
27
|
+
p.sim.inv_S_u = jnp.eye(p.sim.n_controls)
|
|
22
28
|
p.scp = Dummy()
|
|
23
29
|
p.scp.n = 5
|
|
24
30
|
p.dis = Dummy()
|
|
@@ -100,7 +106,24 @@ def test_jit_dVdt_compiles(settings):
|
|
|
100
106
|
# bind out the Python callables & settings
|
|
101
107
|
def wrapped(tau_, V_):
|
|
102
108
|
return dVdt(
|
|
103
|
-
tau_,
|
|
109
|
+
tau_,
|
|
110
|
+
V_,
|
|
111
|
+
u_cur,
|
|
112
|
+
u_next,
|
|
113
|
+
state_dot,
|
|
114
|
+
A,
|
|
115
|
+
B,
|
|
116
|
+
n_x,
|
|
117
|
+
n_u,
|
|
118
|
+
N,
|
|
119
|
+
settings.dis.dis_type,
|
|
120
|
+
{},
|
|
121
|
+
settings.sim.S_x,
|
|
122
|
+
settings.sim.c_x,
|
|
123
|
+
settings.sim.S_u,
|
|
124
|
+
settings.sim.c_u,
|
|
125
|
+
settings.sim.inv_S_x,
|
|
126
|
+
settings.sim.inv_S_u,
|
|
104
127
|
)
|
|
105
128
|
|
|
106
129
|
# now JIT only over (tau_, V_)
|
|
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
|
{openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/UnderTheHood/vectorization_and_vmapping.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
|
{openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Usage/tutorial_6dof_obstacle_avoidance.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/drone/obstacle_avoidance_realtime_base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/realtime/obstacle_avoidance_realtime.py
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
|
{openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/2-mars.avif
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/3-moon.avif
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/4-sat1.avif
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/5-space.avif
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/6-earth.avif
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/javascripts/parallax.js
RENAMED
|
File without changes
|
|
File without changes
|
{openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/stylesheets/custom.css
RENAMED
|
File without changes
|
{openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/stylesheets/parallax.css
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/partials/parallax/hero.html
RENAMED
|
File without changes
|