sleipnirgroup-jormungandr 0.6.7.dev22__tar.gz → 0.6.7.dev23__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.
Potentially problematic release.
This version of sleipnirgroup-jormungandr might be problematic. Click here for more details.
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/PKG-INFO +1 -1
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/src/sleipnir/__init__.py +1 -1
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/test/optimization/cart_pole_ocp_test.py +39 -28
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/test/optimization/differential_drive_ocp_test.py +18 -23
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/CMakeLists.txt +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/LICENSE.txt +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/README.md +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/SleipnirConfig.cmake.in +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/cmake/BuildTypes.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/cmake/CompilerFlags.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/cmake/Pybind11Mkdoc.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/cmake/SubdirList.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/cmake/arm-none-eabi.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/autodiff/expression.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/autodiff/expression_graph.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/autodiff/expression_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/autodiff/gradient.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/autodiff/hessian.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/autodiff/jacobian.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/autodiff/sleipnir_base.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/autodiff/slice.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/autodiff/variable.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/autodiff/variable_block.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/autodiff/variable_matrix.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/multistart.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/ocp/dynamics_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/ocp/timestep_method.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/ocp/transcription_method.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/ocp.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/problem.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/solver/exit_status.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/solver/ipm.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/solver/ipm_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/solver/iteration_info.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/solver/newton.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/solver/newton_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/solver/options.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/solver/sqp.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/solver/sqp_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/solver/util/all_finite.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/solver/util/append_as_triplets.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/solver/util/bounds.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/solver/util/dense_kkt_solver.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/solver/util/feasibility_restoration.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/solver/util/filter.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/solver/util/fraction_to_the_boundary_rule.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/solver/util/inertia.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/solver/util/kkt_error.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/solver/util/kkt_solver.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/solver/util/lagrange_multiplier_estimate.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/solver/util/problem_scaling.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/solver/util/sparse_inf_norms.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/optimization/solver/util/sparse_kkt_solver.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/util/assert.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/util/concepts.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/util/empty.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/util/function_ref.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/util/intrusive_shared_ptr.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/util/pool.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/util/print.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/util/print_diagnostics.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/util/profiler.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/util/scope_exit.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/util/spy.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/include/sleipnir/util/symbol_exports.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/pyproject.toml +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/cpp/autodiff/bind_expression_type.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/cpp/autodiff/bind_gradient.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/cpp/autodiff/bind_hessian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/cpp/autodiff/bind_jacobian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/cpp/autodiff/bind_variable.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/cpp/autodiff/bind_variable_block.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/cpp/autodiff/bind_variable_matrix.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/cpp/binders.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/cpp/docstrings.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/cpp/for_each_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/cpp/main.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/cpp/optimization/bind_equality_constraints.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/cpp/optimization/bind_inequality_constraints.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/cpp/optimization/bind_ocp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/cpp/optimization/bind_problem.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/cpp/optimization/ocp/bind_dynamics_type.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/cpp/optimization/ocp/bind_timestep_method.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/cpp/optimization/ocp/bind_transcription_method.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/cpp/optimization/solver/bind_exit_status.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/cpp/optimization/solver/bind_iteration_info.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/cpp/try_cast.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/src/sleipnir/autodiff/__init__.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/src/sleipnir/optimization/__init__.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/test/autodiff/gradient_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/test/autodiff/hessian_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/test/autodiff/jacobian_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/test/autodiff/variable_matrix_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/test/autodiff/variable_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/test/optimization/arm_on_elevator_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/test/optimization/cart_pole_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/test/optimization/cart_pole_util.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/test/optimization/constraints_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/test/optimization/decision_variable_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/test/optimization/differential_drive_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/test/optimization/differential_drive_util.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/test/optimization/double_integrator_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/test/optimization/flywheel_ocp_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/test/optimization/flywheel_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/test/optimization/linear_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/test/optimization/multistart_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/test/optimization/near.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/test/optimization/nonlinear_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/test/optimization/problem_spy_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/test/optimization/quadratic_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/test/optimization/rk4.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/test/optimization/solver/exit_status_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/test/optimization/trivial_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/src/autodiff/gradient.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/src/autodiff/hessian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/src/autodiff/jacobian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/src/autodiff/variable_matrix.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/src/optimization/ocp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/src/optimization/problem.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/src/optimization/solver/ipm.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/src/optimization/solver/newton.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/src/optimization/solver/sqp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/src/util/pool.cpp +0 -0
|
@@ -6,7 +6,6 @@ from cart_pole_util import (
|
|
|
6
6
|
cart_pole_dynamics_double,
|
|
7
7
|
cart_pole_dynamics_variable,
|
|
8
8
|
)
|
|
9
|
-
from rk4 import rk4
|
|
10
9
|
from sleipnir.autodiff import ExpressionType, VariableMatrix
|
|
11
10
|
from sleipnir.optimization import (
|
|
12
11
|
OCP,
|
|
@@ -86,28 +85,37 @@ def test_cart_pole_ocp():
|
|
|
86
85
|
assert X.value(2, 0) == pytest.approx(x_initial[2, 0], abs=1e-8)
|
|
87
86
|
assert X.value(3, 0) == pytest.approx(x_initial[3, 0], abs=1e-8)
|
|
88
87
|
|
|
89
|
-
#
|
|
90
|
-
|
|
91
|
-
#
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
88
|
+
# Verify solution
|
|
89
|
+
for k in range(N):
|
|
90
|
+
# Cart position constraints
|
|
91
|
+
assert X.value(0, k) >= 0.0
|
|
92
|
+
assert X.value(0, k) <= d_max
|
|
93
|
+
|
|
94
|
+
# Input constraints
|
|
95
|
+
assert U.value(0, k) >= -u_max
|
|
96
|
+
assert U.value(0, k) <= u_max
|
|
97
|
+
|
|
98
|
+
# Dynamics constraints
|
|
99
|
+
#
|
|
100
|
+
# Direct collocation constrains the system dynamics at the midpoint of a
|
|
101
|
+
# cubic Hermite spline through each pair of adjacent states.
|
|
102
|
+
f = cart_pole_dynamics_double
|
|
103
|
+
h = problem.dt().value(0, k)
|
|
104
|
+
x_begin = X[:, k : k + 1].value()
|
|
105
|
+
x_end = X[:, k + 1 : k + 2].value()
|
|
106
|
+
u_begin = U[:, k : k + 1].value()
|
|
107
|
+
u_end = U[:, k + 1 : k + 2].value()
|
|
108
|
+
|
|
109
|
+
xdot_begin = f(x_begin, u_begin)
|
|
110
|
+
xdot_end = f(x_end, u_end)
|
|
111
|
+
xdot_c = -3.0 / (2.0 * h) * (x_begin - x_end) - 0.25 * (xdot_begin + xdot_end)
|
|
112
|
+
|
|
113
|
+
x_c = 0.5 * (x_begin + x_end) + h / 8.0 * (xdot_begin - xdot_end)
|
|
114
|
+
u_c = 0.5 * (u_begin + u_end)
|
|
115
|
+
|
|
116
|
+
expected_xdot_c = f(x_c, u_c)
|
|
117
|
+
for row in range(xdot_c.shape[0]):
|
|
118
|
+
assert xdot_c[row, 0] == pytest.approx(expected_xdot_c[row, 0], abs=1e-8)
|
|
111
119
|
|
|
112
120
|
# Verify final state
|
|
113
121
|
assert X.value(0, N) == pytest.approx(x_final[0, 0], abs=1e-8)
|
|
@@ -121,17 +129,20 @@ def test_cart_pole_ocp():
|
|
|
121
129
|
"Time (s),Cart position (m),Pole angle (rad),Cart velocity (m/s),Pole angular velocity (rad/s)\n"
|
|
122
130
|
)
|
|
123
131
|
|
|
132
|
+
time = 0.0
|
|
124
133
|
for k in range(N + 1):
|
|
125
134
|
f.write(
|
|
126
|
-
f"{
|
|
135
|
+
f"{time},{X.value(0, k)},{X.value(1, k)},{X.value(2, k)},{X.value(3, k)}\n"
|
|
127
136
|
)
|
|
128
137
|
|
|
138
|
+
time += problem.dt().value(0, k)
|
|
139
|
+
|
|
129
140
|
# Log inputs for offline viewing
|
|
130
141
|
with open("Cart-pole inputs.csv", "w") as f:
|
|
131
142
|
f.write("Time (s),Cart force (N)\n")
|
|
132
143
|
|
|
144
|
+
time = 0.0
|
|
133
145
|
for k in range(N + 1):
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
f.write(f"{k * dt},0.0\n")
|
|
146
|
+
f.write(f"{time},{U.value(0, k)}\n")
|
|
147
|
+
|
|
148
|
+
time += problem.dt().value(0, k)
|
|
@@ -68,29 +68,24 @@ def test_differential_drive_ocp():
|
|
|
68
68
|
assert X.value(3, 0) == pytest.approx(x_initial[3, 0], abs=1e-8)
|
|
69
69
|
assert X.value(4, 0) == pytest.approx(x_initial[4, 0], abs=1e-8)
|
|
70
70
|
|
|
71
|
-
#
|
|
72
|
-
|
|
73
|
-
#
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
assert
|
|
89
|
-
assert X.value(3, k) == pytest.approx(x[3, 0], abs=1e-8)
|
|
90
|
-
assert X.value(4, k) == pytest.approx(x[4, 0], abs=1e-8)
|
|
91
|
-
|
|
92
|
-
# Project state forward
|
|
93
|
-
x = rk4(differential_drive_dynamics_double, x, u, problem.dt().value(0, k))
|
|
71
|
+
# Verify solution
|
|
72
|
+
for k in range(N):
|
|
73
|
+
# Input constraints
|
|
74
|
+
assert U.value(0, k) >= -u_max[0, 0]
|
|
75
|
+
assert U.value(0, k) <= u_max[0, 0]
|
|
76
|
+
assert U.value(1, k) >= -u_max[1, 0]
|
|
77
|
+
assert U.value(1, k) <= u_max[1, 0]
|
|
78
|
+
|
|
79
|
+
# Dynamics constraints
|
|
80
|
+
expected_x_k1 = rk4(
|
|
81
|
+
differential_drive_dynamics_double,
|
|
82
|
+
X[:, k : k + 1].value(),
|
|
83
|
+
U[:, k : k + 1].value(),
|
|
84
|
+
problem.dt().value(0, k),
|
|
85
|
+
)
|
|
86
|
+
actual_x_k1 = X[:, k + 1 : k + 2].value()
|
|
87
|
+
for row in range(actual_x_k1.shape[0]):
|
|
88
|
+
assert actual_x_k1[row, 0] == pytest.approx(expected_x_k1[row, 0], abs=1e-8)
|
|
94
89
|
|
|
95
90
|
# Verify final state
|
|
96
91
|
assert X.value(0, N) == pytest.approx(x_final[0, 0], abs=1e-8)
|
{sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/CMakeLists.txt
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
|
|
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
|
{sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/pyproject.toml
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
|
{sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/python/cpp/main.cpp
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sleipnirgroup_jormungandr-0.6.7.dev22 → sleipnirgroup_jormungandr-0.6.7.dev23}/src/util/pool.cpp
RENAMED
|
File without changes
|