openscvx 0.3.1.dev4__tar.gz → 0.3.1.dev17__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 (213) hide show
  1. {openscvx-0.3.1.dev4/openscvx.egg-info → openscvx-0.3.1.dev17}/PKG-INFO +8 -5
  2. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/README.md +7 -4
  3. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/examples/abstract/3DoF_pdg.py +8 -0
  4. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/examples/abstract/brachistochrone.py +8 -0
  5. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/examples/car/dubins_car.py +8 -0
  6. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/examples/car/dubins_car_disjoint.py +8 -0
  7. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/examples/car/dubins_car_stljax.py +8 -0
  8. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/examples/drone/cinema_vp.py +8 -0
  9. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/examples/drone/cinema_vp_realtime_base.py +8 -0
  10. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/examples/drone/dr_double_integrator.py +8 -0
  11. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/examples/drone/dr_vp.py +8 -0
  12. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/examples/drone/dr_vp_nodal.py +8 -0
  13. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/examples/drone/dr_vp_polytope.py +8 -0
  14. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/examples/drone/drone_racing.py +8 -0
  15. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/examples/drone/obstacle_avoidance.py +8 -0
  16. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/examples/drone/obstacle_avoidance_nodal.py +8 -0
  17. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/examples/drone/obstacle_avoidance_realtime_base.py +8 -0
  18. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/_version.py +3 -3
  19. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/algorithms/optimization_results.py +2 -0
  20. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/algorithms/ptr.py +12 -8
  21. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/algorithms/solver_state.py +4 -0
  22. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/plotting/__init__.py +2 -20
  23. openscvx-0.3.1.dev17/openscvx/plotting/plotting.py +1155 -0
  24. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/problem.py +6 -1
  25. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17/openscvx.egg-info}/PKG-INFO +8 -5
  26. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx.egg-info/SOURCES.txt +1 -0
  27. openscvx-0.3.1.dev17/tests/test_plotting.py +624 -0
  28. openscvx-0.3.1.dev4/openscvx/plotting/plotting.py +0 -851
  29. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/.github/assets/logo.svg +0 -0
  30. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/.github/release-drafter.yml +0 -0
  31. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/.github/workflows/_docs.yml +0 -0
  32. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/.github/workflows/docs.yml +0 -0
  33. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/.github/workflows/lint.yml +0 -0
  34. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/.github/workflows/nightly.yml +0 -0
  35. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/.github/workflows/release-drafter.yml +0 -0
  36. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/.github/workflows/release.yml +0 -0
  37. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/.github/workflows/tests-integration.yml +0 -0
  38. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/.github/workflows/tests-unit.yml +0 -0
  39. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/.gitignore +0 -0
  40. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/LICENSE +0 -0
  41. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/Overview/constraint_reformulation.md +0 -0
  42. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/Overview/control_parameterization.md +0 -0
  43. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/Overview/discretization.md +0 -0
  44. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/Overview/ocp.md +0 -0
  45. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/Overview/scvx.md +0 -0
  46. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/Overview/time_dilation.md +0 -0
  47. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/UnderTheHood/lowering_architecture.md +0 -0
  48. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/UnderTheHood/vectorization_and_vmapping.md +0 -0
  49. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/Usage/advanced_problem_setup.md +0 -0
  50. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/Usage/api.md +0 -0
  51. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/Usage/api_constraints.md +0 -0
  52. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/Usage/api_control.md +0 -0
  53. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/Usage/api_integrators.md +0 -0
  54. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/Usage/api_state.md +0 -0
  55. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/Usage/api_trajoptproblem.md +0 -0
  56. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/Usage/api_variable.md +0 -0
  57. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/Usage/basic_problem_setup.md +0 -0
  58. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/Usage/tutorial_6dof_los_guidance.md +0 -0
  59. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/Usage/tutorial_6dof_obstacle_avoidance.md +0 -0
  60. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/Usage/tutorials.md +0 -0
  61. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/assets/favicon.png +0 -0
  62. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/assets/images/ct-scvx_dark.png +0 -0
  63. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/assets/images/ct-scvx_light.png +0 -0
  64. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/assets/images/ctcs_dark.png +0 -0
  65. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/assets/images/ctcs_light.png +0 -0
  66. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/assets/images/problem_class_dark.png +0 -0
  67. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/assets/images/problem_class_light.png +0 -0
  68. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/assets/logo.svg +0 -0
  69. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/citation.md +0 -0
  70. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/examples.md +0 -0
  71. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/getting-started.md +0 -0
  72. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/index.md +0 -0
  73. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/docs/javascripts/mathjax.js +0 -0
  74. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/examples/plotting.py +0 -0
  75. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/examples/realtime/cinema_vp_realtime.py +0 -0
  76. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/examples/realtime/drone_racing_realtime.py +0 -0
  77. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/examples/realtime/dubins_car_realtime.py +0 -0
  78. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/examples/realtime/obstacle_avoidance_realtime.py +0 -0
  79. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/figures/ctlos_cine.gif +0 -0
  80. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/figures/ctlos_dr.gif +0 -0
  81. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/figures/dtlos_cine.gif +0 -0
  82. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/figures/dtlos_dr.gif +0 -0
  83. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/figures/openscvx_logo.svg +0 -0
  84. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/figures/oscvx_structure_full_dark.svg +0 -0
  85. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/figures/video_preview.png +0 -0
  86. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/__init__.py +0 -0
  87. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/1-background.avif +0 -0
  88. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/1-background@1x.avif +0 -0
  89. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/1-background@2x.avif +0 -0
  90. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/1-background@3x.avif +0 -0
  91. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/1-background@4x.avif +0 -0
  92. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/2-mars.avif +0 -0
  93. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/2-mars@1x.avif +0 -0
  94. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/2-mars@2x.avif +0 -0
  95. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/2-mars@3x.avif +0 -0
  96. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/2-mars@4x.avif +0 -0
  97. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/3-moon.avif +0 -0
  98. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/3-moon@1x.avif +0 -0
  99. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/3-moon@2x.avif +0 -0
  100. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/3-moon@3x.avif +0 -0
  101. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/3-moon@4x.avif +0 -0
  102. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/4-sat1.avif +0 -0
  103. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/4-sat1@1x.avif +0 -0
  104. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/4-sat1@2x.avif +0 -0
  105. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/4-sat1@3x.avif +0 -0
  106. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/4-sat1@4x.avif +0 -0
  107. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/5-space.avif +0 -0
  108. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/5-space@1x.avif +0 -0
  109. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/5-space@2x.avif +0 -0
  110. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/5-space@3x.avif +0 -0
  111. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/5-space@4x.avif +0 -0
  112. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/6-earth.avif +0 -0
  113. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/6-earth@1x.avif +0 -0
  114. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/6-earth@2x.avif +0 -0
  115. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/6-earth@3x.avif +0 -0
  116. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/images/layers/6-earth@4x.avif +0 -0
  117. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/javascripts/parallax.js +0 -0
  118. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/logo.svg +0 -0
  119. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/stylesheets/custom.css +0 -0
  120. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/assets/stylesheets/parallax.css +0 -0
  121. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/home.html +0 -0
  122. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/main.html +0 -0
  123. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/partials/parallax/hero.html +0 -0
  124. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/material/overrides/partials/parallax.html +0 -0
  125. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/mkdocs.yml +0 -0
  126. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/__init__.py +0 -0
  127. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/algorithms/__init__.py +0 -0
  128. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/algorithms/autotuning.py +0 -0
  129. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/config.py +0 -0
  130. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/discretization/__init__.py +0 -0
  131. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/discretization/discretization.py +0 -0
  132. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/integrators/__init__.py +0 -0
  133. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/integrators/runge_kutta.py +0 -0
  134. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/lowered/__init__.py +0 -0
  135. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/lowered/cvxpy_constraints.py +0 -0
  136. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/lowered/cvxpy_variables.py +0 -0
  137. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/lowered/dynamics.py +0 -0
  138. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/lowered/jax_constraints.py +0 -0
  139. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/lowered/parameters.py +0 -0
  140. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/lowered/problem.py +0 -0
  141. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/lowered/unified.py +0 -0
  142. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/propagation/__init__.py +0 -0
  143. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/propagation/post_processing.py +0 -0
  144. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/propagation/propagation.py +0 -0
  145. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/solvers/__init__.py +0 -0
  146. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/solvers/cvxpy.py +0 -0
  147. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/symbolic/__init__.py +0 -0
  148. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/symbolic/augmentation.py +0 -0
  149. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/symbolic/builder.py +0 -0
  150. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/symbolic/constraint_set.py +0 -0
  151. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/symbolic/expr/__init__.py +0 -0
  152. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/symbolic/expr/arithmetic.py +0 -0
  153. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/symbolic/expr/array.py +0 -0
  154. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/symbolic/expr/constraint.py +0 -0
  155. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/symbolic/expr/control.py +0 -0
  156. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/symbolic/expr/expr.py +0 -0
  157. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/symbolic/expr/linalg.py +0 -0
  158. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/symbolic/expr/math.py +0 -0
  159. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/symbolic/expr/spatial.py +0 -0
  160. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/symbolic/expr/state.py +0 -0
  161. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/symbolic/expr/stl.py +0 -0
  162. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/symbolic/expr/variable.py +0 -0
  163. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/symbolic/hashing.py +0 -0
  164. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/symbolic/lower.py +0 -0
  165. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/symbolic/lowerers/__init__.py +0 -0
  166. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/symbolic/lowerers/cvxpy.py +0 -0
  167. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/symbolic/lowerers/jax.py +0 -0
  168. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/symbolic/preprocessing.py +0 -0
  169. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/symbolic/problem.py +0 -0
  170. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/symbolic/time.py +0 -0
  171. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/symbolic/unified.py +0 -0
  172. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/utils/__init__.py +0 -0
  173. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/utils/cache.py +0 -0
  174. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/utils/caching.py +0 -0
  175. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/utils/printing.py +0 -0
  176. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/utils/profiling.py +0 -0
  177. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx/utils/utils.py +0 -0
  178. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx.egg-info/dependency_links.txt +0 -0
  179. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx.egg-info/requires.txt +0 -0
  180. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/openscvx.egg-info/top_level.txt +0 -0
  181. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/pyproject.toml +0 -0
  182. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/scripts/gen_example_pages.py +0 -0
  183. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/scripts/gen_ref_pages.py +0 -0
  184. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/setup.cfg +0 -0
  185. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/__init__.py +0 -0
  186. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/brachistochrone_analytical.py +0 -0
  187. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/symbolic/__init__.py +0 -0
  188. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/symbolic/expr/__init__.py +0 -0
  189. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/symbolic/expr/test_arithmetic.py +0 -0
  190. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/symbolic/expr/test_array.py +0 -0
  191. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/symbolic/expr/test_constraint.py +0 -0
  192. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/symbolic/expr/test_expr.py +0 -0
  193. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/symbolic/expr/test_linalg.py +0 -0
  194. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/symbolic/expr/test_math.py +0 -0
  195. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/symbolic/expr/test_node_reference.py +0 -0
  196. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/symbolic/expr/test_parameters.py +0 -0
  197. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/symbolic/expr/test_scaling.py +0 -0
  198. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/symbolic/expr/test_spatial.py +0 -0
  199. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/symbolic/expr/test_variable.py +0 -0
  200. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/symbolic/test_augmentation.py +0 -0
  201. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/symbolic/test_hashing.py +0 -0
  202. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/symbolic/test_lower_cvxpy.py +0 -0
  203. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/symbolic/test_lower_jax.py +0 -0
  204. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/symbolic/test_preprocessing.py +0 -0
  205. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/symbolic/test_unified.py +0 -0
  206. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/test_brachistochrone.py +0 -0
  207. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/test_cvxpygen_optional.py +0 -0
  208. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/test_discretization.py +0 -0
  209. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/test_examples.py +0 -0
  210. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/test_integrators.py +0 -0
  211. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/test_propagation.py +0 -0
  212. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/test_pyqtgraph_functions.py +0 -0
  213. {openscvx-0.3.1.dev4 → openscvx-0.3.1.dev17}/tests/test_pyqtgraph_helpers.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openscvx
3
- Version: 0.3.1.dev4
3
+ Version: 0.3.1.dev17
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
@@ -266,15 +266,18 @@ Dependencies can then be installed using Conda or Pip
266
266
 
267
267
  ### Running Trajectory Optimization
268
268
 
269
- See `examples/params/` folder for several example trajectory optimization problems.
269
+ See `examples/` folder for several example trajectory optimization problems grouped by application.
270
270
  To run a problem simply run any of the examples directly, for example:
271
271
 
272
272
  ```sh
273
- python3 examples/params/brachistochrone.py
273
+ python3 examples/abstract/brachistochrone.py
274
274
  ```
275
+
276
+ > **Note:** To run the examples, you'll need to clone this repository and install OpenSCvx in editable mode (`pip install -e .`). See the [Local Development](#local-development) section above for detailed installation instructions.
277
+
275
278
  and adjust the plotting as needed.
276
279
 
277
- Check out the problem definitions inside `examples/params` to see how to define your own problems.
280
+ Check out the problem definitions inside `examples/` to see how to define your own problems.
278
281
 
279
282
  ## Code Structure
280
283
  <img src="figures/oscvx_structure_full_dark.svg" width="1200"/>
@@ -285,10 +288,10 @@ Check out the problem definitions inside `examples/params` to see how to define
285
288
  - [X] Implement QOCOGen with CVPYGEN
286
289
  - [X] Non-Dilated Time Propagation
287
290
  - [X] Save and reload the compiled JAX code
291
+ - [x] Unified Mathematical Interface
288
292
  - [ ] Auto-SCvx Weight Tuning
289
293
  - [ ] Compiled at the subproblem level with JAX
290
294
  - [ ] Single Shot propagation
291
- - [ ] Unified Mathematical Interface
292
295
 
293
296
  ## What is implemented
294
297
 
@@ -229,15 +229,18 @@ Dependencies can then be installed using Conda or Pip
229
229
 
230
230
  ### Running Trajectory Optimization
231
231
 
232
- See `examples/params/` folder for several example trajectory optimization problems.
232
+ See `examples/` folder for several example trajectory optimization problems grouped by application.
233
233
  To run a problem simply run any of the examples directly, for example:
234
234
 
235
235
  ```sh
236
- python3 examples/params/brachistochrone.py
236
+ python3 examples/abstract/brachistochrone.py
237
237
  ```
238
+
239
+ > **Note:** To run the examples, you'll need to clone this repository and install OpenSCvx in editable mode (`pip install -e .`). See the [Local Development](#local-development) section above for detailed installation instructions.
240
+
238
241
  and adjust the plotting as needed.
239
242
 
240
- Check out the problem definitions inside `examples/params` to see how to define your own problems.
243
+ Check out the problem definitions inside `examples/` to see how to define your own problems.
241
244
 
242
245
  ## Code Structure
243
246
  <img src="figures/oscvx_structure_full_dark.svg" width="1200"/>
@@ -248,10 +251,10 @@ Check out the problem definitions inside `examples/params` to see how to define
248
251
  - [X] Implement QOCOGen with CVPYGEN
249
252
  - [X] Non-Dilated Time Propagation
250
253
  - [X] Save and reload the compiled JAX code
254
+ - [x] Unified Mathematical Interface
251
255
  - [ ] Auto-SCvx Weight Tuning
252
256
  - [ ] Compiled at the subproblem level with JAX
253
257
  - [ ] Single Shot propagation
254
- - [ ] Unified Mathematical Interface
255
258
 
256
259
  ## What is implemented
257
260
 
@@ -10,8 +10,16 @@ The problem includes:
10
10
  - Glideslope constraint for safe landing approach
11
11
  """
12
12
 
13
+ import os
14
+ import sys
15
+
13
16
  import numpy as np
14
17
 
18
+ # Add grandparent directory to path to import examples.plotting
19
+ current_dir = os.path.dirname(os.path.abspath(__file__))
20
+ grandparent_dir = os.path.dirname(os.path.dirname(current_dir))
21
+ sys.path.append(grandparent_dir)
22
+
15
23
  import openscvx as ox
16
24
  from examples.plotting import plot_control_norm, plot_xy_xz_yz
17
25
  from openscvx import Problem
@@ -10,9 +10,17 @@ trajectory generation with:
10
10
  - Minimal time objective
11
11
  """
12
12
 
13
+ import os
14
+ import sys
15
+
13
16
  import jax.numpy as jnp
14
17
  import numpy as np
15
18
 
19
+ # Add grandparent directory to path to import examples.plotting
20
+ current_dir = os.path.dirname(os.path.abspath(__file__))
21
+ grandparent_dir = os.path.dirname(os.path.dirname(current_dir))
22
+ sys.path.append(grandparent_dir)
23
+
16
24
  import openscvx as ox
17
25
  from examples.plotting import (
18
26
  plot_brachistochrone_position,
@@ -11,9 +11,17 @@ circular obstacle. The problem includes:
11
11
  - Parameter updates for multiple scenarios
12
12
  """
13
13
 
14
+ import os
15
+ import sys
16
+
14
17
  import jax.numpy as jnp
15
18
  import numpy as np
16
19
 
20
+ # Add grandparent directory to path to import examples.plotting
21
+ current_dir = os.path.dirname(os.path.abspath(__file__))
22
+ grandparent_dir = os.path.dirname(os.path.dirname(current_dir))
23
+ sys.path.append(grandparent_dir)
24
+
17
25
  import openscvx as ox
18
26
  from examples.plotting import plot_dubins_car
19
27
  from openscvx import Problem
@@ -10,9 +10,17 @@ using a smooth max approximation for the disjoint constraint. The problem includ
10
10
  - Minimal time objective
11
11
  """
12
12
 
13
+ import os
14
+ import sys
15
+
13
16
  import jax.numpy as jnp
14
17
  import numpy as np
15
18
 
19
+ # Add grandparent directory to path to import examples.plotting
20
+ current_dir = os.path.dirname(os.path.abspath(__file__))
21
+ grandparent_dir = os.path.dirname(os.path.dirname(current_dir))
22
+ sys.path.append(grandparent_dir)
23
+
16
24
  import openscvx as ox
17
25
  from examples.plotting import plot_dubins_car_disjoint
18
26
  from openscvx import Problem
@@ -10,9 +10,17 @@ using the stljax library for STL constraint formulation. The problem includes:
10
10
  - Requires: pip install stljax
11
11
  """
12
12
 
13
+ import os
14
+ import sys
15
+
13
16
  import jax.numpy as jnp
14
17
  import numpy as np
15
18
 
19
+ # Add grandparent directory to path to import examples.plotting
20
+ current_dir = os.path.dirname(os.path.abspath(__file__))
21
+ grandparent_dir = os.path.dirname(os.path.dirname(current_dir))
22
+ sys.path.append(grandparent_dir)
23
+
16
24
  import openscvx as ox
17
25
  from examples.plotting import plot_dubins_car_disjoint
18
26
  from openscvx import Problem
@@ -10,10 +10,18 @@ aerial cinematography with viewpoint constraints. The problem includes:
10
10
  - Attitude planning to maintain visual coverage
11
11
  """
12
12
 
13
+ import os
14
+ import sys
15
+
13
16
  import jax.numpy as jnp
14
17
  import numpy as np
15
18
  import numpy.linalg as la
16
19
 
20
+ # Add grandparent directory to path to import examples.plotting
21
+ current_dir = os.path.dirname(os.path.abspath(__file__))
22
+ grandparent_dir = os.path.dirname(os.path.dirname(current_dir))
23
+ sys.path.append(grandparent_dir)
24
+
17
25
  import openscvx as ox
18
26
  from examples.plotting import plot_animation
19
27
  from openscvx import Problem
@@ -10,10 +10,18 @@ The problem includes:
10
10
  - Configured for real-time re-optimization with moving targets
11
11
  """
12
12
 
13
+ import os
14
+ import sys
15
+
13
16
  import jax.numpy as jnp
14
17
  import numpy as np
15
18
  import numpy.linalg as la
16
19
 
20
+ # Add grandparent directory to path to import examples.plotting
21
+ current_dir = os.path.dirname(os.path.abspath(__file__))
22
+ grandparent_dir = os.path.dirname(os.path.dirname(current_dir))
23
+ sys.path.append(grandparent_dir)
24
+
17
25
  import openscvx as ox
18
26
  from examples.plotting import plot_animation
19
27
  from openscvx import Problem
@@ -10,9 +10,17 @@ double integrator (point mass) dynamics instead of full 6-DOF dynamics. The prob
10
10
  - Loop closure constraint
11
11
  """
12
12
 
13
+ import os
14
+ import sys
15
+
13
16
  import jax.numpy as jnp
14
17
  import numpy as np
15
18
 
19
+ # Add grandparent directory to path to import examples.plotting
20
+ current_dir = os.path.dirname(os.path.abspath(__file__))
21
+ grandparent_dir = os.path.dirname(os.path.dirname(current_dir))
22
+ sys.path.append(grandparent_dir)
23
+
16
24
  import openscvx as ox
17
25
  from examples.plotting import plot_animation_double_integrator
18
26
  from openscvx import Problem
@@ -10,10 +10,18 @@ to maintain visual contact with reference targets. The problem includes:
10
10
  - Minimal time objective
11
11
  """
12
12
 
13
+ import os
14
+ import sys
15
+
13
16
  import jax.numpy as jnp
14
17
  import numpy as np
15
18
  import numpy.linalg as la
16
19
 
20
+ # Add grandparent directory to path to import examples.plotting
21
+ current_dir = os.path.dirname(os.path.abspath(__file__))
22
+ grandparent_dir = os.path.dirname(os.path.dirname(current_dir))
23
+ sys.path.append(grandparent_dir)
24
+
17
25
  import openscvx as ox
18
26
  from examples.plotting import plot_animation
19
27
  from openscvx import Problem
@@ -10,10 +10,18 @@ constraints applied at all nodes. The problem includes:
10
10
  - Minimal time objective
11
11
  """
12
12
 
13
+ import os
14
+ import sys
15
+
13
16
  import jax.numpy as jnp
14
17
  import numpy as np
15
18
  import numpy.linalg as la
16
19
 
20
+ # Add grandparent directory to path to import examples.plotting
21
+ current_dir = os.path.dirname(os.path.abspath(__file__))
22
+ grandparent_dir = os.path.dirname(os.path.dirname(current_dir))
23
+ sys.path.append(grandparent_dir)
24
+
17
25
  import openscvx as ox
18
26
  from examples.plotting import plot_animation
19
27
  from openscvx import Problem
@@ -11,10 +11,18 @@ gates with sensor visibility constraints. The problem includes:
11
11
  - Minimal time objective
12
12
  """
13
13
 
14
+ import os
15
+ import sys
16
+
14
17
  import jax.numpy as jnp
15
18
  import numpy as np
16
19
  import numpy.linalg as la
17
20
 
21
+ # Add grandparent directory to path to import examples.plotting
22
+ current_dir = os.path.dirname(os.path.abspath(__file__))
23
+ grandparent_dir = os.path.dirname(os.path.dirname(current_dir))
24
+ sys.path.append(grandparent_dir)
25
+
18
26
  import openscvx as ox
19
27
  from examples.plotting import plot_animation
20
28
  from openscvx import Problem
@@ -9,9 +9,17 @@ racing through a series of gates in a specified order. The problem includes:
9
9
  - Loop closure (start equals end position)
10
10
  """
11
11
 
12
+ import os
13
+ import sys
14
+
12
15
  import jax.numpy as jnp
13
16
  import numpy as np
14
17
 
18
+ # Add grandparent directory to path to import examples.plotting
19
+ current_dir = os.path.dirname(os.path.abspath(__file__))
20
+ grandparent_dir = os.path.dirname(os.path.dirname(current_dir))
21
+ sys.path.append(grandparent_dir)
22
+
15
23
  import openscvx as ox
16
24
  from examples.plotting import plot_animation
17
25
  from openscvx import Problem
@@ -10,9 +10,17 @@ The problem includes:
10
10
  - Minimal time objective
11
11
  """
12
12
 
13
+ import os
14
+ import sys
15
+
13
16
  import jax.numpy as jnp
14
17
  import numpy as np
15
18
 
19
+ # Add grandparent directory to path to import examples.plotting
20
+ current_dir = os.path.dirname(os.path.abspath(__file__))
21
+ grandparent_dir = os.path.dirname(os.path.dirname(current_dir))
22
+ sys.path.append(grandparent_dir)
23
+
16
24
  import openscvx as ox
17
25
  from examples.plotting import plot_animation
18
26
  from openscvx import Problem
@@ -9,9 +9,17 @@ obstacle avoidance constraints applied at specific nodes. The problem includes:
9
9
  - Minimal time objective
10
10
  """
11
11
 
12
+ import os
13
+ import sys
14
+
12
15
  import jax.numpy as jnp
13
16
  import numpy as np
14
17
 
18
+ # Add grandparent directory to path to import examples.plotting
19
+ current_dir = os.path.dirname(os.path.abspath(__file__))
20
+ grandparent_dir = os.path.dirname(os.path.dirname(current_dir))
21
+ sys.path.append(grandparent_dir)
22
+
15
23
  import openscvx as ox
16
24
  from examples.plotting import plot_animation
17
25
  from openscvx import Problem
@@ -10,9 +10,17 @@ The problem includes:
10
10
  - Configured for real-time re-optimization
11
11
  """
12
12
 
13
+ import os
14
+ import sys
15
+
13
16
  import jax.numpy as jnp
14
17
  import numpy as np
15
18
 
19
+ # Add grandparent directory to path to import examples.plotting
20
+ current_dir = os.path.dirname(os.path.abspath(__file__))
21
+ grandparent_dir = os.path.dirname(os.path.dirname(current_dir))
22
+ sys.path.append(grandparent_dir)
23
+
16
24
  import openscvx as ox
17
25
  from examples.plotting import plot_animation
18
26
  from openscvx import Problem
@@ -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.1.dev4'
32
- __version_tuple__ = version_tuple = (0, 3, 1, 'dev4')
31
+ __version__ = version = '0.3.1.dev17'
32
+ __version_tuple__ = version_tuple = (0, 3, 1, 'dev17')
33
33
 
34
- __commit_id__ = commit_id = 'gfe2df476c'
34
+ __commit_id__ = commit_id = 'g63cc16df8'
@@ -66,6 +66,8 @@ class OptimizationResults:
66
66
  J_tr_history: list[np.ndarray] = field(default_factory=list)
67
67
  J_vb_history: list[np.ndarray] = field(default_factory=list)
68
68
  J_vc_history: list[np.ndarray] = field(default_factory=list)
69
+ TR_history: list[np.ndarray] = field(default_factory=list)
70
+ VC_history: list[np.ndarray] = field(default_factory=list)
69
71
 
70
72
  @property
71
73
  def x(self) -> np.ndarray:
@@ -101,6 +101,8 @@ def format_result(problem, state: "SolverState", converged: bool) -> Optimizatio
101
101
  J_tr_history=state.J_tr,
102
102
  J_vb_history=state.J_vb,
103
103
  J_vc_history=state.J_vc,
104
+ TR_history=state.TR_history,
105
+ VC_history=state.VC_history,
104
106
  )
105
107
 
106
108
 
@@ -142,6 +144,8 @@ def PTR_step(
142
144
  V_multi_shoot,
143
145
  subprop_time,
144
146
  dis_time,
147
+ vc_mat,
148
+ tr_mat,
145
149
  ) = PTR_subproblem(
146
150
  params.items(),
147
151
  cpg_solve,
@@ -157,6 +161,8 @@ def PTR_step(
157
161
  state.V_history.append(V_multi_shoot)
158
162
  state.X.append(x_sol)
159
163
  state.U.append(u_sol)
164
+ state.VC_history.append(vc_mat)
165
+ state.TR_history.append(tr_mat)
160
166
 
161
167
  state.J_tr = np.sum(np.array(J_tr_vec))
162
168
  state.J_vb = np.sum(np.array(J_vb_vec))
@@ -300,14 +306,10 @@ def PTR_subproblem(
300
306
  )
301
307
 
302
308
  # Calculate J_tr_vec using the JAX-compatible block diagonal matrix
303
- J_tr_vec = (
304
- la.norm(
305
- inv_block_diag @ np.hstack((x_new_guess - state.x, u_new_guess - state.u)).T,
306
- axis=0,
307
- )
308
- ** 2
309
- )
310
- J_vc_vec = np.sum(np.abs(prob.var_dict["nu"].value), axis=1)
309
+ tr_mat = inv_block_diag @ np.hstack((x_new_guess - state.x, u_new_guess - state.u)).T
310
+ J_tr_vec = la.norm(tr_mat, axis=0) ** 2
311
+ vc_mat = np.abs(prob.var_dict["nu"].value)
312
+ J_vc_vec = np.sum(vc_mat, axis=1)
311
313
 
312
314
  id_ncvx = 0
313
315
  J_vb_vec = 0
@@ -336,4 +338,6 @@ def PTR_subproblem(
336
338
  V_multi_shoot,
337
339
  subprop_time,
338
340
  dis_time,
341
+ vc_mat,
342
+ abs(tr_mat),
339
343
  )
@@ -59,6 +59,8 @@ class SolverState:
59
59
  X: List[np.ndarray] = field(default_factory=list)
60
60
  U: List[np.ndarray] = field(default_factory=list)
61
61
  V_history: List[np.ndarray] = field(default_factory=list)
62
+ VC_history: List[np.ndarray] = field(default_factory=list)
63
+ TR_history: List[np.ndarray] = field(default_factory=list)
62
64
 
63
65
  @property
64
66
  def x(self) -> np.ndarray:
@@ -225,4 +227,6 @@ class SolverState:
225
227
  X=[settings.sim.x.guess.copy()],
226
228
  U=[settings.sim.u.guess.copy()],
227
229
  V_history=[],
230
+ VC_history=[],
231
+ TR_history=[],
228
232
  )
@@ -13,34 +13,16 @@ violations, and creating animations of the optimization process.
13
13
  """
14
14
 
15
15
  from .plotting import (
16
- frame_args,
17
- full_subject_traj_time,
18
- plot_constraint_violation,
19
16
  plot_control,
20
- plot_initial_guess,
21
- plot_losses,
22
- plot_scp_animation,
17
+ plot_scp_iteration_animation,
23
18
  plot_state,
24
- qdcm,
25
- save_gate_parameters,
26
- scp_traj_interp,
27
19
  )
28
20
 
29
21
  __all__ = [
30
22
  # Core plotting functions
31
23
  "plot_state",
32
24
  "plot_control",
33
- "plot_constraint_violation",
34
- "plot_losses",
35
- "plot_scp_animation",
36
- "plot_initial_guess",
37
- # Trajectory utilities
38
- "full_subject_traj_time",
39
- "scp_traj_interp",
40
- # Helper functions
41
- "qdcm",
42
- "save_gate_parameters",
43
- "frame_args",
25
+ "plot_scp_iteration_animation",
44
26
  ]
45
27
 
46
28
  # Mark module as unstable/deprecated