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.
Files changed (238) hide show
  1. {openscvx-0.3.2.dev235/openscvx.egg-info → openscvx-0.3.2.dev248}/PKG-INFO +2 -2
  2. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/arm/three_link_arm.py +3 -3
  3. {openscvx-0.3.2.dev235/examples/abstract → openscvx-0.3.2.dev248/examples/rocket}/3DoF_pdg.py +7 -4
  4. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/_version.py +3 -3
  5. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/discretization/discretization.py +22 -2
  6. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/solvers/cvxpy.py +34 -17
  7. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248/openscvx.egg-info}/PKG-INFO +2 -2
  8. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx.egg-info/SOURCES.txt +1 -1
  9. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/pyproject.toml +1 -1
  10. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/test_discretization.py +24 -1
  11. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/.github/assets/logo.svg +0 -0
  12. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/.github/release-drafter.yml +0 -0
  13. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/.github/workflows/_docs.yml +0 -0
  14. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/.github/workflows/docs.yml +0 -0
  15. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/.github/workflows/lint.yml +0 -0
  16. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/.github/workflows/nightly.yml +0 -0
  17. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/.github/workflows/release-drafter.yml +0 -0
  18. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/.github/workflows/release.yml +0 -0
  19. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/.github/workflows/tests-integration.yml +0 -0
  20. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/.github/workflows/tests-unit.yml +0 -0
  21. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/.gitignore +0 -0
  22. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/CONTRIBUTING.md +0 -0
  23. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/LICENSE +0 -0
  24. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/README.md +0 -0
  25. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Overview/constraint_reformulation.md +0 -0
  26. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Overview/control_parameterization.md +0 -0
  27. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Overview/discretization.md +0 -0
  28. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Overview/ocp.md +0 -0
  29. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Overview/scvx.md +0 -0
  30. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Overview/time_dilation.md +0 -0
  31. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/UnderTheHood/lowering_architecture.md +0 -0
  32. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/UnderTheHood/vectorization_and_vmapping.md +0 -0
  33. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Usage/advanced_problem_setup.md +0 -0
  34. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Usage/api.md +0 -0
  35. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Usage/api_constraints.md +0 -0
  36. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Usage/api_control.md +0 -0
  37. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Usage/api_integrators.md +0 -0
  38. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Usage/api_state.md +0 -0
  39. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Usage/api_trajoptproblem.md +0 -0
  40. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Usage/api_variable.md +0 -0
  41. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Usage/basic_problem_setup.md +0 -0
  42. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Usage/tutorial_6dof_los_guidance.md +0 -0
  43. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Usage/tutorial_6dof_obstacle_avoidance.md +0 -0
  44. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/Usage/tutorials.md +0 -0
  45. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/assets/favicon.png +0 -0
  46. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/assets/images/ct-scvx_dark.png +0 -0
  47. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/assets/images/ct-scvx_light.png +0 -0
  48. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/assets/images/ctcs_dark.png +0 -0
  49. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/assets/images/ctcs_light.png +0 -0
  50. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/assets/images/problem_class_dark.png +0 -0
  51. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/assets/images/problem_class_light.png +0 -0
  52. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/assets/logo.svg +0 -0
  53. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/citation.md +0 -0
  54. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/examples.md +0 -0
  55. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/getting-started.md +0 -0
  56. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/index.md +0 -0
  57. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/docs/javascripts/mathjax.js +0 -0
  58. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/abstract/brachistochrone.py +0 -0
  59. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/car/dubins_car.py +0 -0
  60. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/car/dubins_car_disjoint.py +0 -0
  61. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/car/dubins_car_stljax.py +0 -0
  62. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/drone/cinema_vp.py +0 -0
  63. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/drone/cinema_vp_realtime_base.py +0 -0
  64. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/drone/dr_double_integrator.py +0 -0
  65. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/drone/dr_vp.py +0 -0
  66. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/drone/dr_vp_nodal.py +0 -0
  67. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/drone/dr_vp_polytope.py +0 -0
  68. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/drone/drone_racing.py +0 -0
  69. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/drone/obstacle_avoidance.py +0 -0
  70. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/drone/obstacle_avoidance_nodal.py +0 -0
  71. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/drone/obstacle_avoidance_realtime_base.py +0 -0
  72. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/drone/obstacle_avoidance_vmap.py +0 -0
  73. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/plotting.py +0 -0
  74. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/plotting_viser.py +0 -0
  75. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/realtime/cinema_vp_realtime.py +0 -0
  76. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/realtime/drone_racing_realtime.py +0 -0
  77. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/realtime/dubins_car_realtime.py +0 -0
  78. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/realtime/obstacle_avoidance_realtime.py +0 -0
  79. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/examples/spacecraft/proxops_cw.py +0 -0
  80. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/figures/ctlos_cine.gif +0 -0
  81. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/figures/ctlos_dr.gif +0 -0
  82. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/figures/dtlos_cine.gif +0 -0
  83. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/figures/dtlos_dr.gif +0 -0
  84. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/figures/openscvx_logo.svg +0 -0
  85. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/figures/openscvx_logo_square.png +0 -0
  86. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/figures/oscvx_structure_full_dark.svg +0 -0
  87. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/figures/video_preview.png +0 -0
  88. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/__init__.py +0 -0
  89. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/1-background.avif +0 -0
  90. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/1-background@1x.avif +0 -0
  91. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/1-background@2x.avif +0 -0
  92. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/1-background@3x.avif +0 -0
  93. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/1-background@4x.avif +0 -0
  94. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/2-mars.avif +0 -0
  95. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/2-mars@1x.avif +0 -0
  96. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/2-mars@2x.avif +0 -0
  97. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/2-mars@3x.avif +0 -0
  98. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/2-mars@4x.avif +0 -0
  99. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/3-moon.avif +0 -0
  100. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/3-moon@1x.avif +0 -0
  101. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/3-moon@2x.avif +0 -0
  102. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/3-moon@3x.avif +0 -0
  103. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/3-moon@4x.avif +0 -0
  104. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/4-sat1.avif +0 -0
  105. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/4-sat1@1x.avif +0 -0
  106. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/4-sat1@2x.avif +0 -0
  107. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/4-sat1@3x.avif +0 -0
  108. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/4-sat1@4x.avif +0 -0
  109. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/5-space.avif +0 -0
  110. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/5-space@1x.avif +0 -0
  111. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/5-space@2x.avif +0 -0
  112. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/5-space@3x.avif +0 -0
  113. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/5-space@4x.avif +0 -0
  114. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/6-earth.avif +0 -0
  115. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/6-earth@1x.avif +0 -0
  116. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/6-earth@2x.avif +0 -0
  117. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/6-earth@3x.avif +0 -0
  118. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/images/layers/6-earth@4x.avif +0 -0
  119. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/javascripts/parallax.js +0 -0
  120. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/logo.svg +0 -0
  121. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/stylesheets/custom.css +0 -0
  122. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/assets/stylesheets/parallax.css +0 -0
  123. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/home.html +0 -0
  124. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/main.html +0 -0
  125. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/partials/parallax/hero.html +0 -0
  126. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/material/overrides/partials/parallax.html +0 -0
  127. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/mkdocs.yml +0 -0
  128. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/__init__.py +0 -0
  129. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/algorithms/__init__.py +0 -0
  130. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/algorithms/autotuning.py +0 -0
  131. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/algorithms/base.py +0 -0
  132. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/algorithms/optimization_results.py +0 -0
  133. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/algorithms/penalized_trust_region.py +0 -0
  134. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/config.py +0 -0
  135. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/discretization/__init__.py +0 -0
  136. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/expert/__init__.py +0 -0
  137. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/expert/byof.py +0 -0
  138. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/expert/lowering.py +0 -0
  139. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/expert/validation.py +0 -0
  140. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/init/__init__.py +0 -0
  141. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/init/interpolation.py +0 -0
  142. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/integrators/__init__.py +0 -0
  143. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/integrators/runge_kutta.py +0 -0
  144. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/lowered/__init__.py +0 -0
  145. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/lowered/cvxpy_constraints.py +0 -0
  146. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/lowered/cvxpy_variables.py +0 -0
  147. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/lowered/dynamics.py +0 -0
  148. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/lowered/jax_constraints.py +0 -0
  149. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/lowered/parameters.py +0 -0
  150. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/lowered/problem.py +0 -0
  151. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/lowered/unified.py +0 -0
  152. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/plotting/__init__.py +0 -0
  153. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/plotting/plotting.py +0 -0
  154. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/plotting/scp_iteration.py +0 -0
  155. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/plotting/viser/__init__.py +0 -0
  156. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/plotting/viser/animated.py +0 -0
  157. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/plotting/viser/plotly_integration.py +0 -0
  158. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/plotting/viser/primitives.py +0 -0
  159. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/plotting/viser/scp.py +0 -0
  160. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/plotting/viser/server.py +0 -0
  161. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/problem.py +0 -0
  162. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/propagation/__init__.py +0 -0
  163. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/propagation/post_processing.py +0 -0
  164. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/propagation/propagation.py +0 -0
  165. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/solvers/__init__.py +0 -0
  166. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/__init__.py +0 -0
  167. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/augmentation.py +0 -0
  168. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/builder.py +0 -0
  169. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/constraint_set.py +0 -0
  170. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/__init__.py +0 -0
  171. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/arithmetic.py +0 -0
  172. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/array.py +0 -0
  173. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/constraint.py +0 -0
  174. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/control.py +0 -0
  175. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/expr.py +0 -0
  176. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/lie/__init__.py +0 -0
  177. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/lie/adjoint.py +0 -0
  178. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/lie/se3.py +0 -0
  179. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/lie/so3.py +0 -0
  180. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/linalg.py +0 -0
  181. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/math.py +0 -0
  182. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/spatial.py +0 -0
  183. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/state.py +0 -0
  184. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/stl.py +0 -0
  185. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/variable.py +0 -0
  186. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/expr/vmap.py +0 -0
  187. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/hashing.py +0 -0
  188. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/lower.py +0 -0
  189. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/lowerers/__init__.py +0 -0
  190. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/lowerers/cvxpy.py +0 -0
  191. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/lowerers/jax.py +0 -0
  192. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/preprocessing.py +0 -0
  193. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/problem.py +0 -0
  194. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/time.py +0 -0
  195. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/symbolic/unified.py +0 -0
  196. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/utils/__init__.py +0 -0
  197. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/utils/cache.py +0 -0
  198. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/utils/caching.py +0 -0
  199. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/utils/printing.py +0 -0
  200. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/utils/profiling.py +0 -0
  201. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx/utils/utils.py +0 -0
  202. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx.egg-info/dependency_links.txt +0 -0
  203. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx.egg-info/requires.txt +0 -0
  204. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/openscvx.egg-info/top_level.txt +0 -0
  205. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/scripts/gen_example_pages.py +0 -0
  206. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/scripts/gen_ref_pages.py +0 -0
  207. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/setup.cfg +0 -0
  208. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/__init__.py +0 -0
  209. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/brachistochrone_analytical.py +0 -0
  210. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/__init__.py +0 -0
  211. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/__init__.py +0 -0
  212. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/test_arithmetic.py +0 -0
  213. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/test_array.py +0 -0
  214. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/test_constraint.py +0 -0
  215. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/test_expr.py +0 -0
  216. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/test_lie.py +0 -0
  217. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/test_linalg.py +0 -0
  218. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/test_math.py +0 -0
  219. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/test_node_reference.py +0 -0
  220. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/test_parameters.py +0 -0
  221. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/test_scaling.py +0 -0
  222. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/test_spatial.py +0 -0
  223. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/test_variable.py +0 -0
  224. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/expr/test_vmap.py +0 -0
  225. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/test_augmentation.py +0 -0
  226. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/test_hashing.py +0 -0
  227. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/test_lower_cvxpy.py +0 -0
  228. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/test_lower_jax.py +0 -0
  229. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/test_preprocessing.py +0 -0
  230. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/symbolic/test_unified.py +0 -0
  231. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/test_brachistochrone.py +0 -0
  232. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/test_cvxpygen_optional.py +0 -0
  233. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/test_examples.py +0 -0
  234. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/test_expert.py +0 -0
  235. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/test_init.py +0 -0
  236. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/test_integrators.py +0 -0
  237. {openscvx-0.3.2.dev235 → openscvx-0.3.2.dev248}/tests/test_plotting.py +0 -0
  238. {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.dev235
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://openscvx.github.io/openscvx/
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 = 1e1
209
- problem.settings.scp.lam_cost = 1e2
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 = 1e2
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")
@@ -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", 1690)]
53
- mass.scaling_min = np.array([1690])
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 = "CLARABEL"
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.dev235'
32
- __version_tuple__ = version_tuple = (0, 3, 2, 'dev235')
31
+ __version__ = version = '0.3.2.dev248'
32
+ __version_tuple__ = version_tuple = (0, 3, 2, 'dev248')
33
33
 
34
- __commit_id__ = commit_id = 'ga87310a79'
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.reshape(-1),
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.reshape(-1),
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
- S_x = ocp_vars.S_x
58
+ inv_S_x = ocp_vars.inv_S_x
59
59
  c_x = ocp_vars.c_x
60
- S_u = ocp_vars.S_u
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] - np.linalg.inv(S_x) @ (x_bar[i] - c_x) - dx[i]) == 0 for i in range(settings.scp.n)
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] - np.linalg.inv(S_u) @ (u_bar[i] - c_u) - du[i]) == 0 for i in range(settings.scp.n)
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
- == A_d[i - 1] @ dx_nonscaled[i - 1]
147
- + B_d[i - 1] @ du_nonscaled[i - 1]
148
- + C_d[i - 1] @ du_nonscaled[i]
149
- + x_prop[i - 1]
150
- + nu[i - 1]
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] >= settings.sim.u.min for i in range(settings.scp.n)
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][:] >= settings.sim.x.min for i in range(settings.scp.n)
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, solver=settings.cvx.solver, code_dir="solver", wrapper=True
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.dev235
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://openscvx.github.io/openscvx/
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
@@ -31,7 +31,7 @@ dependencies = [
31
31
  ]
32
32
 
33
33
  [project.urls]
34
- Homepage = "https://openscvx.github.io/openscvx/"
34
+ Homepage = "https://haynec.github.io/openscvx/"
35
35
 
36
36
  [project.optional-dependencies]
37
37
  gui = [
@@ -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_, V_, u_cur, u_next, state_dot, A, B, n_x, n_u, N, settings.dis.dis_type, {}
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