openscvx 0.5.3.dev44__py3-none-any.whl → 0.5.3.dev45__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- openscvx/_version.py +3 -3
- openscvx/symbolic/expr/math.py +125 -26
- openscvx/symbolic/lowerers/jax/math.py +26 -11
- openscvx/symbolic/lowerers/latex/math.py +5 -6
- {openscvx-0.5.3.dev44.dist-info → openscvx-0.5.3.dev45.dist-info}/METADATA +1 -1
- {openscvx-0.5.3.dev44.dist-info → openscvx-0.5.3.dev45.dist-info}/RECORD +10 -12
- openscvx-0.5.3.dev44.dist-info/scm_file_list.json +0 -460
- openscvx-0.5.3.dev44.dist-info/scm_version.json +0 -8
- {openscvx-0.5.3.dev44.dist-info → openscvx-0.5.3.dev45.dist-info}/WHEEL +0 -0
- {openscvx-0.5.3.dev44.dist-info → openscvx-0.5.3.dev45.dist-info}/entry_points.txt +0 -0
- {openscvx-0.5.3.dev44.dist-info → openscvx-0.5.3.dev45.dist-info}/licenses/LICENSE +0 -0
- {openscvx-0.5.3.dev44.dist-info → openscvx-0.5.3.dev45.dist-info}/top_level.txt +0 -0
openscvx/_version.py
CHANGED
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.5.3.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 5, 3, '
|
|
21
|
+
__version__ = version = '0.5.3.dev45'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 5, 3, 'dev45')
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'g7ded3ab51'
|
openscvx/symbolic/expr/math.py
CHANGED
|
@@ -1135,23 +1135,40 @@ _CINTERP_METHODS = {
|
|
|
1135
1135
|
|
|
1136
1136
|
|
|
1137
1137
|
class Cinterp(Expr):
|
|
1138
|
-
"""1D cubic
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1138
|
+
"""1D piecewise-cubic interpolation for symbolic expressions.
|
|
1139
|
+
|
|
1140
|
+
Evaluates a piecewise-cubic polynomial at query point ``x`` by a segment
|
|
1141
|
+
lookup on the fixed breakpoints ``xp`` followed by Horner evaluation. The
|
|
1142
|
+
polynomial table is held as ``coeffs`` of shape ``(4, n_segments)`` where
|
|
1143
|
+
``n_segments = len(xp) - 1``; row ``k`` holds the degree-``k`` coefficients,
|
|
1144
|
+
so the value in segment ``i`` at local coordinate ``t = x - xp[i]`` is
|
|
1145
|
+
``coeffs[0, i] + coeffs[1, i]*t + coeffs[2, i]*t**2 + coeffs[3, i]*t**3``.
|
|
1146
|
+
|
|
1147
|
+
The table can be supplied two ways, and exactly one must be chosen:
|
|
1148
|
+
|
|
1149
|
+
- **Fit from data (default).** Pass ``fp`` (values at the breakpoints) and
|
|
1150
|
+
an optional ``method``; scipy fits the spline once at construction and the
|
|
1151
|
+
coefficients are baked into the compiled function as constants.
|
|
1152
|
+
- **Coefficient override.** Pass ``coeffs`` directly — either a numeric
|
|
1153
|
+
``(4, n_segments)`` array or a symbolic :class:`~openscvx.Parameter` of
|
|
1154
|
+
that shape. A symbolic override is *not* baked in: the compiled function
|
|
1155
|
+
gathers the current parameter value at run time, so the interpolated
|
|
1156
|
+
function can be swapped **between solves** — with any host-side fitting
|
|
1157
|
+
method you like — without recompiling. ``method`` is meaningless with an
|
|
1158
|
+
override and passing it is an error.
|
|
1144
1159
|
|
|
1145
1160
|
Attributes:
|
|
1146
1161
|
x: Query point at which to evaluate the spline (symbolic expression).
|
|
1147
|
-
xp: 1D array of breakpoints (must be strictly increasing).
|
|
1148
|
-
|
|
1149
|
-
|
|
1162
|
+
xp: 1D array of breakpoints (must be strictly increasing). Fixed at
|
|
1163
|
+
construction; it drives the segment lookup and cannot be symbolic.
|
|
1164
|
+
fp: 1D array of values at the breakpoints (fit path only; ``None`` for a
|
|
1165
|
+
coefficient override).
|
|
1166
|
+
method: Spline method used to fit ``fp`` — ``"cubic"`` (not-a-knot, C2),
|
|
1150
1167
|
``"pchip"`` (monotonicity-preserving, C1), or ``"akima"`` (C1).
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1168
|
+
``None`` for a coefficient override.
|
|
1169
|
+
coeffs: The polynomial table. A numeric ``(4, n_segments)`` array for
|
|
1170
|
+
the fit and numeric-override paths, or the coefficient ``Expr`` for a
|
|
1171
|
+
symbolic override.
|
|
1155
1172
|
|
|
1156
1173
|
Example:
|
|
1157
1174
|
Interpolate a discrete reference path::
|
|
@@ -1173,34 +1190,101 @@ class Cinterp(Expr):
|
|
|
1173
1190
|
altitude = ox.State("altitude", shape=(1,))
|
|
1174
1191
|
rho = ox.Cinterp(altitude[0], alt_data, rho_data, method="pchip")
|
|
1175
1192
|
|
|
1193
|
+
Drive the table with a :class:`~openscvx.Parameter` so the interpolated
|
|
1194
|
+
function can be retuned between solves without recompiling. Fit the
|
|
1195
|
+
spline host-side with any scipy method and push its coefficients (scipy
|
|
1196
|
+
stores them highest-degree-first, so reverse to this class's
|
|
1197
|
+
ascending-degree layout)::
|
|
1198
|
+
|
|
1199
|
+
from scipy.interpolate import PchipInterpolator
|
|
1200
|
+
|
|
1201
|
+
xp = np.linspace(0, 1, 11)
|
|
1202
|
+
n_seg = len(xp) - 1
|
|
1203
|
+
|
|
1204
|
+
cs = PchipInterpolator(xp, fp_data)
|
|
1205
|
+
coeffs = ox.Parameter("spline_coeffs", shape=(4, n_seg),
|
|
1206
|
+
value=cs.c[::-1])
|
|
1207
|
+
|
|
1208
|
+
progress = ox.State("progress", shape=(1,))
|
|
1209
|
+
ref = ox.Cinterp(progress[0], xp, coeffs=coeffs)
|
|
1210
|
+
|
|
1211
|
+
# ... build and solve the problem, then before the next solve:
|
|
1212
|
+
cs = PchipInterpolator(xp, new_fp_data)
|
|
1213
|
+
problem.parameters["spline_coeffs"] = cs.c[::-1]
|
|
1214
|
+
|
|
1176
1215
|
!!! note
|
|
1177
1216
|
`xp` must be strictly increasing.
|
|
1178
1217
|
|
|
1179
1218
|
!!! warning "Extrapolation behavior"
|
|
1180
1219
|
For query points outside `[xp[0], xp[-1]]`, boundary segment
|
|
1181
1220
|
polynomials are extrapolated (consistent with scipy defaults).
|
|
1221
|
+
|
|
1222
|
+
!!! warning "Continuity is the caller's responsibility"
|
|
1223
|
+
With a coefficient override the library no longer guarantees that the
|
|
1224
|
+
table describes a continuous function — that is now the caller's job.
|
|
1225
|
+
A table whose segment polynomials disagree at a breakpoint yields a
|
|
1226
|
+
discontinuous dynamics function, which the discretizer will linearize
|
|
1227
|
+
and integrate without complaint, silently degrading accuracy.
|
|
1182
1228
|
"""
|
|
1183
1229
|
|
|
1184
1230
|
def __init__(
|
|
1185
1231
|
self,
|
|
1186
1232
|
x: Union[Expr, float, int, np.ndarray],
|
|
1187
1233
|
xp: Union[np.ndarray, list],
|
|
1188
|
-
fp: Union[np.ndarray, list],
|
|
1234
|
+
fp: Union[np.ndarray, list, None] = None,
|
|
1189
1235
|
*,
|
|
1190
|
-
|
|
1236
|
+
coeffs: Union[Expr, np.ndarray, list, None] = None,
|
|
1237
|
+
method: Union[str, None] = None,
|
|
1191
1238
|
_coeffs: Union[np.ndarray, None] = None,
|
|
1192
1239
|
):
|
|
1193
1240
|
self.x = to_expr(x)
|
|
1194
1241
|
xp = np.asarray(xp, dtype=float)
|
|
1195
|
-
|
|
1242
|
+
if xp.ndim != 1:
|
|
1243
|
+
raise ValueError(f"Cinterp xp must be 1D, got shape {xp.shape}")
|
|
1244
|
+
self.xp_np = xp
|
|
1245
|
+
n_seg = xp.shape[0] - 1
|
|
1246
|
+
|
|
1247
|
+
if (fp is None) == (coeffs is None):
|
|
1248
|
+
raise ValueError(
|
|
1249
|
+
"Cinterp requires exactly one of fp or coeffs: pass fp to fit a "
|
|
1250
|
+
"spline through breakpoint values, or coeffs to supply the "
|
|
1251
|
+
"polynomial table directly."
|
|
1252
|
+
)
|
|
1196
1253
|
|
|
1254
|
+
if coeffs is not None:
|
|
1255
|
+
# --- Coefficient-override path (numeric array or symbolic Expr). ---
|
|
1256
|
+
if method is not None:
|
|
1257
|
+
raise ValueError(
|
|
1258
|
+
"Cinterp method is meaningless with a coeffs override "
|
|
1259
|
+
"(the table is supplied, not fit); drop the method argument."
|
|
1260
|
+
)
|
|
1261
|
+
expected = (4, n_seg)
|
|
1262
|
+
if isinstance(coeffs, Expr):
|
|
1263
|
+
got = coeffs.check_shape()
|
|
1264
|
+
if got != expected:
|
|
1265
|
+
raise ValueError(
|
|
1266
|
+
f"Cinterp coeffs must have shape {expected} (4 by len(xp) - 1), got {got}"
|
|
1267
|
+
)
|
|
1268
|
+
self.coeffs = coeffs
|
|
1269
|
+
else:
|
|
1270
|
+
arr = np.asarray(coeffs, dtype=float)
|
|
1271
|
+
if arr.shape != expected:
|
|
1272
|
+
raise ValueError(
|
|
1273
|
+
f"Cinterp coeffs must have shape {expected} "
|
|
1274
|
+
f"(4 by len(xp) - 1), got {arr.shape}"
|
|
1275
|
+
)
|
|
1276
|
+
self.coeffs = arr
|
|
1277
|
+
self.fp_np = None
|
|
1278
|
+
self.method = None
|
|
1279
|
+
return
|
|
1280
|
+
|
|
1281
|
+
# --- Fit path: precompute spline coefficients via scipy. ---
|
|
1282
|
+
method = "cubic" if method is None else method
|
|
1197
1283
|
if method not in _CINTERP_METHODS:
|
|
1198
1284
|
raise ValueError(
|
|
1199
1285
|
f"Cinterp method must be one of {set(_CINTERP_METHODS)}, got {method!r}"
|
|
1200
1286
|
)
|
|
1201
|
-
|
|
1202
|
-
if xp.ndim != 1:
|
|
1203
|
-
raise ValueError(f"Cinterp xp must be 1D, got shape {xp.shape}")
|
|
1287
|
+
fp = np.asarray(fp, dtype=float)
|
|
1204
1288
|
if fp.ndim != 1:
|
|
1205
1289
|
raise ValueError(f"Cinterp fp must be 1D, got shape {fp.shape}")
|
|
1206
1290
|
if xp.shape != fp.shape:
|
|
@@ -1208,38 +1292,53 @@ class Cinterp(Expr):
|
|
|
1208
1292
|
f"Cinterp xp and fp must have same length, got {xp.shape} vs {fp.shape}"
|
|
1209
1293
|
)
|
|
1210
1294
|
|
|
1211
|
-
self.xp_np = xp
|
|
1212
1295
|
self.fp_np = fp
|
|
1213
1296
|
self.method = method
|
|
1214
1297
|
|
|
1215
1298
|
if _coeffs is not None:
|
|
1216
1299
|
self.coeffs = _coeffs
|
|
1217
1300
|
else:
|
|
1218
|
-
# Precompute spline coefficients via scipy.
|
|
1219
1301
|
# scipy returns shape (4, n_seg) with c[0]=cubic, c[1]=quadratic, ...
|
|
1220
1302
|
# We reorder to ascending-degree layout for Horner evaluation.
|
|
1221
1303
|
cs = _CINTERP_METHODS[method](xp, fp)
|
|
1222
1304
|
self.coeffs = cs.c[::-1].copy() # row 0 = const, row 3 = cubic
|
|
1223
1305
|
|
|
1224
1306
|
def children(self):
|
|
1307
|
+
if isinstance(self.coeffs, Expr):
|
|
1308
|
+
return [self.x, self.coeffs]
|
|
1225
1309
|
return [self.x]
|
|
1226
1310
|
|
|
1227
1311
|
def canonicalize(self) -> "Expr":
|
|
1228
1312
|
x = self.x.canonicalize()
|
|
1229
|
-
|
|
1313
|
+
if isinstance(self.coeffs, Expr):
|
|
1314
|
+
return Cinterp(x, self.xp_np, coeffs=self.coeffs.canonicalize())
|
|
1315
|
+
if self.fp_np is not None:
|
|
1316
|
+
return Cinterp(x, self.xp_np, self.fp_np, method=self.method, _coeffs=self.coeffs)
|
|
1317
|
+
return Cinterp(x, self.xp_np, coeffs=self.coeffs)
|
|
1230
1318
|
|
|
1231
1319
|
def check_shape(self) -> Tuple[int, ...]:
|
|
1232
1320
|
return self.x.check_shape()
|
|
1233
1321
|
|
|
1234
1322
|
def _hash_into(self, hasher: "hashlib._Hash") -> None:
|
|
1235
1323
|
hasher.update(b"Cinterp")
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1324
|
+
if isinstance(self.coeffs, Expr):
|
|
1325
|
+
hasher.update(b"coeffs_expr")
|
|
1326
|
+
hasher.update(self.xp_np.tobytes())
|
|
1327
|
+
self.coeffs._hash_into(hasher)
|
|
1328
|
+
elif self.fp_np is not None:
|
|
1329
|
+
hasher.update(self.method.encode())
|
|
1330
|
+
hasher.update(self.xp_np.tobytes())
|
|
1331
|
+
hasher.update(self.fp_np.tobytes())
|
|
1332
|
+
else:
|
|
1333
|
+
hasher.update(b"coeffs_num")
|
|
1334
|
+
hasher.update(self.xp_np.tobytes())
|
|
1335
|
+
hasher.update(np.asarray(self.coeffs).tobytes())
|
|
1239
1336
|
self.x._hash_into(hasher)
|
|
1240
1337
|
|
|
1241
1338
|
def __repr__(self) -> str:
|
|
1242
|
-
if self.
|
|
1339
|
+
if isinstance(self.coeffs, Expr):
|
|
1340
|
+
return f"cinterp({self.x!r}, coeffs={self.coeffs!r})"
|
|
1341
|
+
if self.method == "cubic" or self.method is None:
|
|
1243
1342
|
return f"cinterp({self.x!r})"
|
|
1244
1343
|
return f"cinterp({self.x!r}, method={self.method!r})"
|
|
1245
1344
|
|
|
@@ -17,6 +17,8 @@ import jax
|
|
|
17
17
|
import jax.numpy as jnp
|
|
18
18
|
from jax.scipy.special import logsumexp
|
|
19
19
|
|
|
20
|
+
from openscvx.symbolic.expr.expr import Expr
|
|
21
|
+
|
|
20
22
|
# Expression types to handle — uncomment as you paste visitors:
|
|
21
23
|
from openscvx.symbolic.expr.math import (
|
|
22
24
|
Abs,
|
|
@@ -285,33 +287,46 @@ def _visit_linterp(lowerer, node: Linterp):
|
|
|
285
287
|
|
|
286
288
|
@visitor(Cinterp)
|
|
287
289
|
def _visit_cinterp(lowerer, node: Cinterp):
|
|
288
|
-
"""Lower 1D cubic
|
|
290
|
+
"""Lower 1D piecewise-cubic interpolation to a JAX function.
|
|
289
291
|
|
|
290
|
-
Evaluates
|
|
291
|
-
method.
|
|
292
|
-
is symbolic
|
|
293
|
-
|
|
292
|
+
Evaluates the polynomial table via segment lookup on the fixed breakpoints
|
|
293
|
+
and Horner's method. When ``node.coeffs`` is a numeric array it is baked in
|
|
294
|
+
as a constant; when it is a symbolic ``Expr`` (e.g. a ``Parameter``) it is
|
|
295
|
+
lowered too and gathered at run time, so the table can change between solves
|
|
296
|
+
without recompiling. Either way only ``xp`` is fixed. For queries outside
|
|
297
|
+
the data range the boundary segment polynomial is extrapolated.
|
|
294
298
|
|
|
295
299
|
Args:
|
|
296
|
-
node: Cinterp expression node with
|
|
300
|
+
node: Cinterp expression node with xp_np and numeric-or-symbolic coeffs.
|
|
297
301
|
|
|
298
302
|
Returns:
|
|
299
303
|
Function (x, u, node_idx, params) -> interpolated value(s)
|
|
300
304
|
"""
|
|
301
305
|
f_x = lowerer.lower(node.x)
|
|
302
306
|
xp = jnp.asarray(node.xp_np)
|
|
303
|
-
coeffs = jnp.asarray(node.coeffs) # (4, n_seg)
|
|
304
307
|
|
|
305
|
-
def
|
|
306
|
-
|
|
307
|
-
# Segment index (clamp to valid range)
|
|
308
|
+
def evaluate(x_val, coeffs):
|
|
309
|
+
# Segment index (clamp to valid range), then Horner: c0 + t*(c1 + t*(c2 + t*c3)).
|
|
308
310
|
idx = jnp.searchsorted(xp, x_val, side="right") - 1
|
|
309
311
|
idx = jnp.clip(idx, 0, xp.shape[0] - 2)
|
|
310
312
|
t = x_val - xp[idx]
|
|
311
|
-
# Horner evaluation: c0 + t*(c1 + t*(c2 + t*c3))
|
|
312
313
|
c = coeffs[:, idx]
|
|
313
314
|
return c[0] + t * (c[1] + t * (c[2] + t * c[3]))
|
|
314
315
|
|
|
316
|
+
if isinstance(node.coeffs, Expr):
|
|
317
|
+
f_coeffs = lowerer.lower(node.coeffs)
|
|
318
|
+
|
|
319
|
+
def cinterp_fn(x, u, node_idx, params):
|
|
320
|
+
coeffs = f_coeffs(x, u, node_idx, params) # (4, n_seg)
|
|
321
|
+
return evaluate(f_x(x, u, node_idx, params), coeffs)
|
|
322
|
+
|
|
323
|
+
return cinterp_fn
|
|
324
|
+
|
|
325
|
+
coeffs = jnp.asarray(node.coeffs) # (4, n_seg)
|
|
326
|
+
|
|
327
|
+
def cinterp_fn(x, u, node_idx, params):
|
|
328
|
+
return evaluate(f_x(x, u, node_idx, params), coeffs)
|
|
329
|
+
|
|
315
330
|
return cinterp_fn
|
|
316
331
|
|
|
317
332
|
|
|
@@ -171,14 +171,13 @@ def _visit_linterp(lowerer, node: Linterp):
|
|
|
171
171
|
|
|
172
172
|
@visitor(Cinterp)
|
|
173
173
|
def _visit_cinterp(lowerer, node: Cinterp):
|
|
174
|
-
"""Render 1-D cubic
|
|
174
|
+
"""Render 1-D piecewise-cubic interpolation as ``\\operatorname{cinterp}(x)``.
|
|
175
175
|
|
|
176
|
-
Only the query point is
|
|
177
|
-
|
|
178
|
-
|
|
176
|
+
Only the query point is rendered; the breakpoints and the polynomial table
|
|
177
|
+
(whether baked-in coefficients or a symbolic override) are structural and
|
|
178
|
+
stay implicit.
|
|
179
179
|
"""
|
|
180
|
-
|
|
181
|
-
return _call(r"\operatorname{cinterp}", args)
|
|
180
|
+
return _call(r"\operatorname{cinterp}", lowerer.lower(node.x))
|
|
182
181
|
|
|
183
182
|
|
|
184
183
|
@visitor(Bilerp)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openscvx
|
|
3
|
-
Version: 0.5.3.
|
|
3
|
+
Version: 0.5.3.dev45
|
|
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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
openscvx/__init__.py,sha256=89L6wZLhDvqWM9SC-ryulEfwgIOGy0S7UxDn9izvQP8,4539
|
|
2
2
|
openscvx/__main__.py,sha256=Hwm7mtVg3tLdvoUPkpcQv8KF3wxl72PNLBp9axFu8GY,2991
|
|
3
|
-
openscvx/_version.py,sha256=
|
|
3
|
+
openscvx/_version.py,sha256=qA0aqGRY1KfrBAA8_Njo5J5OiOWGYH5z5IzbS-LP_bU,543
|
|
4
4
|
openscvx/config.py,sha256=qfDDYoCe6WqJglKsx5b2W48YOglXenKr-PVRRdCFhYE,9898
|
|
5
5
|
openscvx/loader.py,sha256=5WDLVA6CQxnyi1pRBfP8jQQc0r8RiAM2O_ItKgMXxAk,7660
|
|
6
6
|
openscvx/problem.py,sha256=N0p0zlC6JUi_CEwiUC5XWxWU4Bkzm_IDp-4EgnGpSs4,104744
|
|
@@ -97,7 +97,7 @@ openscvx/symbolic/expr/control.py,sha256=xnuZDM-er755i-H8UW2RCaikeQ82x35rf8SCkvv
|
|
|
97
97
|
openscvx/symbolic/expr/expr.py,sha256=KiknvnuMvw5O6zHMkfKfdpC8OFu9DDxHa92AU0MNKJk,25834
|
|
98
98
|
openscvx/symbolic/expr/linalg.py,sha256=uJn82IyUqPUCYwmLLQcAg-DuPQP1WwrsfDZsd7lS3SQ,12618
|
|
99
99
|
openscvx/symbolic/expr/logic.py,sha256=K994Ml2GorIze_xJYI40SYkEqc8cNFVA_wKvKSmQ8gw,17023
|
|
100
|
-
openscvx/symbolic/expr/math.py,sha256=
|
|
100
|
+
openscvx/symbolic/expr/math.py,sha256=9D5-hORwAkK-1pJx-p_6BeSTZx9CVwLTQszJ5aVGIvQ,49266
|
|
101
101
|
openscvx/symbolic/expr/parameter.py,sha256=s29blJN68EO8zaMVm6wmtdkG0vNUYKM9na-NdrRyV0c,2335
|
|
102
102
|
openscvx/symbolic/expr/spatial.py,sha256=xKChjjYGawJ2x-d3-b16BEonh6zL96qHnzvVq3Gyvsk,6768
|
|
103
103
|
openscvx/symbolic/expr/state.py,sha256=CtSWq8dfPhDvtGqhGJMF2bGHbQ2oPBQ4f2q9e0DWpB8,25802
|
|
@@ -134,7 +134,7 @@ openscvx/symbolic/lowerers/jax/expr.py,sha256=bKaw6OXGufxBB4T26M2eHgaMRLctNhfe-R
|
|
|
134
134
|
openscvx/symbolic/lowerers/jax/lie.py,sha256=l4rTWjaTeqinSs6-CQGIV9z6ru2h4DB3NxFo-lKFLho,9092
|
|
135
135
|
openscvx/symbolic/lowerers/jax/linalg.py,sha256=uHLQXz4pI1GSM0gn1chqZeU8X9C61NzIj0dvDYjoafk,2671
|
|
136
136
|
openscvx/symbolic/lowerers/jax/logic.py,sha256=SkBv_Jzmln_nCo4NzY-jV4NDYEDPpJqT2oGqCO_MxQg,8080
|
|
137
|
-
openscvx/symbolic/lowerers/jax/math.py,sha256=
|
|
137
|
+
openscvx/symbolic/lowerers/jax/math.py,sha256=q-24lFIQUmh-anGPbD0j51ZVZTt-dHHYgFLBolWx_2I,11888
|
|
138
138
|
openscvx/symbolic/lowerers/jax/spatial.py,sha256=f0P9HdPQKKT3-ckBAnsfapWVrzON0WEXTC2S3Zw2rSs,3911
|
|
139
139
|
openscvx/symbolic/lowerers/jax/state.py,sha256=7hF-b6mj9lu5LzJXMUCRja05y7808Ek-B3Sg0z7aQrY,1245
|
|
140
140
|
openscvx/symbolic/lowerers/jax/stl.py,sha256=li_USuDolYEq016ppbwgDfGFSIj7Dr5lSXXGNTZcIcc,9246
|
|
@@ -152,7 +152,7 @@ openscvx/symbolic/lowerers/latex/formulation.py,sha256=G57JLmKPYuVGRwxHrH83t9pRb
|
|
|
152
152
|
openscvx/symbolic/lowerers/latex/lie.py,sha256=fhVHAFvDRFnQOVNarpJjISS17g_YjKL-kc5Q1EGKSEo,3929
|
|
153
153
|
openscvx/symbolic/lowerers/latex/linalg.py,sha256=M0InHJvbhlU8ls8cvAvFGw_CboXb1an81T-MXTOUfgE,2094
|
|
154
154
|
openscvx/symbolic/lowerers/latex/logic.py,sha256=9-okeonGJhdmecCKFv7Zz2IeD2E2MI47-2docOMp4V4,3356
|
|
155
|
-
openscvx/symbolic/lowerers/latex/math.py,sha256=
|
|
155
|
+
openscvx/symbolic/lowerers/latex/math.py,sha256=1QoqRZS43LTYoVR2DuKq8lGxKzhoxnG83tfZmU9y8-w,5768
|
|
156
156
|
openscvx/symbolic/lowerers/latex/spatial.py,sha256=ok_cyVfy7Vy2EIj-zsbsh5BW1DQ5VogJk0S8vzFvkD0,1434
|
|
157
157
|
openscvx/symbolic/lowerers/latex/state.py,sha256=bzbOPNY4dqiUp9otRgpNhF5CQ-jL07lSytCZx7Qfjw0,972
|
|
158
158
|
openscvx/symbolic/lowerers/latex/stl.py,sha256=E1UzrCutC7E2MiuXX_P7FSfaOtt8HIJgKC6Gyqkk10Y,4414
|
|
@@ -176,11 +176,9 @@ openscvx/utils/caching.py,sha256=Uw2e0G1UNn_vmMDqUZGszIH-O9LJhR4wdVKSPToHiy0,169
|
|
|
176
176
|
openscvx/utils/printing.py,sha256=dsccZ9sXc3TBWShQvBg1Al4UFGMP77ApblfxteEJHLQ,16515
|
|
177
177
|
openscvx/utils/profiling.py,sha256=k2x-i0CpG_kRe6dNcNBGu-ylrOtQw4B4C1UaOTjUMfU,1678
|
|
178
178
|
openscvx/utils/utils.py,sha256=M25RHE_7DSr3Reaca0xCXnDSY9KHuqYvXdh5m1ZotEc,3047
|
|
179
|
-
openscvx-0.5.3.
|
|
180
|
-
openscvx-0.5.3.
|
|
181
|
-
openscvx-0.5.3.
|
|
182
|
-
openscvx-0.5.3.
|
|
183
|
-
openscvx-0.5.3.
|
|
184
|
-
openscvx-0.5.3.
|
|
185
|
-
openscvx-0.5.3.dev44.dist-info/top_level.txt,sha256=nUT4Ybefzh40H8tVXqc1RzKESy_MAowElb-CIvAbd4Q,9
|
|
186
|
-
openscvx-0.5.3.dev44.dist-info/RECORD,,
|
|
179
|
+
openscvx-0.5.3.dev45.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
180
|
+
openscvx-0.5.3.dev45.dist-info/METADATA,sha256=dR-An270m0vhNtgphQthQTJMi_ybCLQ-C2ogFv2ZiQE,12993
|
|
181
|
+
openscvx-0.5.3.dev45.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
|
|
182
|
+
openscvx-0.5.3.dev45.dist-info/entry_points.txt,sha256=1Oqek8Sy28hmAZFgZXDxFXYVf56YLYWlHjhh9RYJ7wE,52
|
|
183
|
+
openscvx-0.5.3.dev45.dist-info/top_level.txt,sha256=nUT4Ybefzh40H8tVXqc1RzKESy_MAowElb-CIvAbd4Q,9
|
|
184
|
+
openscvx-0.5.3.dev45.dist-info/RECORD,,
|
|
@@ -1,460 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"files": [
|
|
3
|
-
".gitignore",
|
|
4
|
-
"README.md",
|
|
5
|
-
"CONTRIBUTING.md",
|
|
6
|
-
".gitmodules",
|
|
7
|
-
"CITATION.cff",
|
|
8
|
-
"pyproject.toml",
|
|
9
|
-
"LICENSE",
|
|
10
|
-
"mkdocs.yml",
|
|
11
|
-
"figures/video_preview.png",
|
|
12
|
-
"figures/openscvx_logo_square.png",
|
|
13
|
-
"figures/dtlos_dr.gif",
|
|
14
|
-
"figures/dtlos_cine.gif",
|
|
15
|
-
"figures/ctlos_cine.gif",
|
|
16
|
-
"figures/openscvx_logo.svg",
|
|
17
|
-
"figures/ctlos_dr.gif",
|
|
18
|
-
"figures/oscvx_structure_full_dark.svg",
|
|
19
|
-
"material/__init__.py",
|
|
20
|
-
"material/overrides/home.html",
|
|
21
|
-
"material/overrides/main.html",
|
|
22
|
-
"material/overrides/sitemap.xml",
|
|
23
|
-
"material/overrides/partials/home-viser-strip.html",
|
|
24
|
-
"material/overrides/partials/home-pipeline.html",
|
|
25
|
-
"material/overrides/partials/home-diagram.html",
|
|
26
|
-
"material/overrides/partials/home-dropin-banner.html",
|
|
27
|
-
"material/overrides/partials/home-hero.html",
|
|
28
|
-
"material/overrides/assets/stylesheets/home-hero.css",
|
|
29
|
-
"material/overrides/assets/stylesheets/home-viser.css",
|
|
30
|
-
"material/overrides/assets/stylesheets/home-dropin.css",
|
|
31
|
-
"material/overrides/assets/stylesheets/custom.css",
|
|
32
|
-
".github/release-drafter.yml",
|
|
33
|
-
".github/workflows/tests-qpax.yml",
|
|
34
|
-
".github/workflows/nightly.yml",
|
|
35
|
-
".github/workflows/_extra.yml",
|
|
36
|
-
".github/workflows/branch-name.yml",
|
|
37
|
-
".github/workflows/tests-examples.yml",
|
|
38
|
-
".github/workflows/tests.yml",
|
|
39
|
-
".github/workflows/release-drafter.yml",
|
|
40
|
-
".github/workflows/docs.yml",
|
|
41
|
-
".github/workflows/release.yml",
|
|
42
|
-
".github/workflows/tests-cvxpygen.yml",
|
|
43
|
-
".github/workflows/lint.yml",
|
|
44
|
-
".github/workflows/_docs.yml",
|
|
45
|
-
".github/workflows/tests-mjx.yml",
|
|
46
|
-
".github/workflows/tests-lie.yml",
|
|
47
|
-
".github/assets/logo.svg",
|
|
48
|
-
"openscvx/config.py",
|
|
49
|
-
"openscvx/problem.py",
|
|
50
|
-
"openscvx/__main__.py",
|
|
51
|
-
"openscvx/loader.py",
|
|
52
|
-
"openscvx/__init__.py",
|
|
53
|
-
"openscvx/plotting/scp_iteration.py",
|
|
54
|
-
"openscvx/plotting/plotting.py",
|
|
55
|
-
"openscvx/plotting/publication.py",
|
|
56
|
-
"openscvx/plotting/__init__.py",
|
|
57
|
-
"openscvx/plotting/viser/orbits.py",
|
|
58
|
-
"openscvx/plotting/viser/server.py",
|
|
59
|
-
"openscvx/plotting/viser/plotly_integration.py",
|
|
60
|
-
"openscvx/plotting/viser/scp.py",
|
|
61
|
-
"openscvx/plotting/viser/coordinates.py",
|
|
62
|
-
"openscvx/plotting/viser/animated.py",
|
|
63
|
-
"openscvx/plotting/viser/primitives.py",
|
|
64
|
-
"openscvx/plotting/viser/__init__.py",
|
|
65
|
-
"openscvx/utils/printing.py",
|
|
66
|
-
"openscvx/utils/utils.py",
|
|
67
|
-
"openscvx/utils/profiling.py",
|
|
68
|
-
"openscvx/utils/caching.py",
|
|
69
|
-
"openscvx/utils/cache.py",
|
|
70
|
-
"openscvx/utils/__init__.py",
|
|
71
|
-
"openscvx/init/interpolation.py",
|
|
72
|
-
"openscvx/init/inverse_kinematics.py",
|
|
73
|
-
"openscvx/init/__init__.py",
|
|
74
|
-
"openscvx/solvers/base.py",
|
|
75
|
-
"openscvx/solvers/ptr_solver.py",
|
|
76
|
-
"openscvx/solvers/qpax_ptr_solver.py",
|
|
77
|
-
"openscvx/solvers/cvxpy_ptr_solver.py",
|
|
78
|
-
"openscvx/solvers/moreau_ptr_solver.py",
|
|
79
|
-
"openscvx/solvers/cones.py",
|
|
80
|
-
"openscvx/solvers/__init__.py",
|
|
81
|
-
"openscvx/lowered/parameters.py",
|
|
82
|
-
"openscvx/lowered/cvxpy_variables.py",
|
|
83
|
-
"openscvx/lowered/cvxpy_constraints.py",
|
|
84
|
-
"openscvx/lowered/dynamics.py",
|
|
85
|
-
"openscvx/lowered/unified.py",
|
|
86
|
-
"openscvx/lowered/problem.py",
|
|
87
|
-
"openscvx/lowered/jax_constraints.py",
|
|
88
|
-
"openscvx/lowered/__init__.py",
|
|
89
|
-
"openscvx/symbolic/affine.py",
|
|
90
|
-
"openscvx/symbolic/constraint_set.py",
|
|
91
|
-
"openscvx/symbolic/augmentation.py",
|
|
92
|
-
"openscvx/symbolic/builder.py",
|
|
93
|
-
"openscvx/symbolic/unified.py",
|
|
94
|
-
"openscvx/symbolic/lower.py",
|
|
95
|
-
"openscvx/symbolic/sparsity.py",
|
|
96
|
-
"openscvx/symbolic/problem.py",
|
|
97
|
-
"openscvx/symbolic/hashing.py",
|
|
98
|
-
"openscvx/symbolic/preprocessing.py",
|
|
99
|
-
"openscvx/symbolic/canonicalize.py",
|
|
100
|
-
"openscvx/symbolic/__init__.py",
|
|
101
|
-
"openscvx/symbolic/parser/parser.py",
|
|
102
|
-
"openscvx/symbolic/parser/lie.py",
|
|
103
|
-
"openscvx/symbolic/parser/stljax.py",
|
|
104
|
-
"openscvx/symbolic/parser/_registry.py",
|
|
105
|
-
"openscvx/symbolic/parser/logic.py",
|
|
106
|
-
"openscvx/symbolic/parser/math.py",
|
|
107
|
-
"openscvx/symbolic/parser/array.py",
|
|
108
|
-
"openscvx/symbolic/parser/stl.py",
|
|
109
|
-
"openscvx/symbolic/parser/tokenizer.py",
|
|
110
|
-
"openscvx/symbolic/parser/constraint.py",
|
|
111
|
-
"openscvx/symbolic/parser/spatial.py",
|
|
112
|
-
"openscvx/symbolic/parser/linalg.py",
|
|
113
|
-
"openscvx/symbolic/parser/__init__.py",
|
|
114
|
-
"openscvx/symbolic/expr/vmap.py",
|
|
115
|
-
"openscvx/symbolic/expr/parameter.py",
|
|
116
|
-
"openscvx/symbolic/expr/expr.py",
|
|
117
|
-
"openscvx/symbolic/expr/stljax.py",
|
|
118
|
-
"openscvx/symbolic/expr/logic.py",
|
|
119
|
-
"openscvx/symbolic/expr/state.py",
|
|
120
|
-
"openscvx/symbolic/expr/control.py",
|
|
121
|
-
"openscvx/symbolic/expr/math.py",
|
|
122
|
-
"openscvx/symbolic/expr/array.py",
|
|
123
|
-
"openscvx/symbolic/expr/variable.py",
|
|
124
|
-
"openscvx/symbolic/expr/stl.py",
|
|
125
|
-
"openscvx/symbolic/expr/constraint.py",
|
|
126
|
-
"openscvx/symbolic/expr/spatial.py",
|
|
127
|
-
"openscvx/symbolic/expr/linalg.py",
|
|
128
|
-
"openscvx/symbolic/expr/arithmetic.py",
|
|
129
|
-
"openscvx/symbolic/expr/time.py",
|
|
130
|
-
"openscvx/symbolic/expr/__init__.py",
|
|
131
|
-
"openscvx/symbolic/expr/lie/adjoint.py",
|
|
132
|
-
"openscvx/symbolic/expr/lie/so3.py",
|
|
133
|
-
"openscvx/symbolic/expr/lie/se3.py",
|
|
134
|
-
"openscvx/symbolic/expr/lie/__init__.py",
|
|
135
|
-
"openscvx/symbolic/lowerers/__init__.py",
|
|
136
|
-
"openscvx/symbolic/lowerers/cvxpy/expr.py",
|
|
137
|
-
"openscvx/symbolic/lowerers/cvxpy/_registry.py",
|
|
138
|
-
"openscvx/symbolic/lowerers/cvxpy/logic.py",
|
|
139
|
-
"openscvx/symbolic/lowerers/cvxpy/state.py",
|
|
140
|
-
"openscvx/symbolic/lowerers/cvxpy/control.py",
|
|
141
|
-
"openscvx/symbolic/lowerers/cvxpy/math.py",
|
|
142
|
-
"openscvx/symbolic/lowerers/cvxpy/array.py",
|
|
143
|
-
"openscvx/symbolic/lowerers/cvxpy/_lowerer.py",
|
|
144
|
-
"openscvx/symbolic/lowerers/cvxpy/constraint.py",
|
|
145
|
-
"openscvx/symbolic/lowerers/cvxpy/linalg.py",
|
|
146
|
-
"openscvx/symbolic/lowerers/cvxpy/arithmetic.py",
|
|
147
|
-
"openscvx/symbolic/lowerers/cvxpy/__init__.py",
|
|
148
|
-
"openscvx/symbolic/lowerers/jax/vmap.py",
|
|
149
|
-
"openscvx/symbolic/lowerers/jax/lie.py",
|
|
150
|
-
"openscvx/symbolic/lowerers/jax/expr.py",
|
|
151
|
-
"openscvx/symbolic/lowerers/jax/stljax.py",
|
|
152
|
-
"openscvx/symbolic/lowerers/jax/_registry.py",
|
|
153
|
-
"openscvx/symbolic/lowerers/jax/logic.py",
|
|
154
|
-
"openscvx/symbolic/lowerers/jax/state.py",
|
|
155
|
-
"openscvx/symbolic/lowerers/jax/control.py",
|
|
156
|
-
"openscvx/symbolic/lowerers/jax/math.py",
|
|
157
|
-
"openscvx/symbolic/lowerers/jax/array.py",
|
|
158
|
-
"openscvx/symbolic/lowerers/jax/stl.py",
|
|
159
|
-
"openscvx/symbolic/lowerers/jax/_lowerer.py",
|
|
160
|
-
"openscvx/symbolic/lowerers/jax/constraint.py",
|
|
161
|
-
"openscvx/symbolic/lowerers/jax/spatial.py",
|
|
162
|
-
"openscvx/symbolic/lowerers/jax/linalg.py",
|
|
163
|
-
"openscvx/symbolic/lowerers/jax/arithmetic.py",
|
|
164
|
-
"openscvx/symbolic/lowerers/jax/__init__.py",
|
|
165
|
-
"openscvx/symbolic/lowerers/latex/vmap.py",
|
|
166
|
-
"openscvx/symbolic/lowerers/latex/lie.py",
|
|
167
|
-
"openscvx/symbolic/lowerers/latex/expr.py",
|
|
168
|
-
"openscvx/symbolic/lowerers/latex/_registry.py",
|
|
169
|
-
"openscvx/symbolic/lowerers/latex/logic.py",
|
|
170
|
-
"openscvx/symbolic/lowerers/latex/state.py",
|
|
171
|
-
"openscvx/symbolic/lowerers/latex/control.py",
|
|
172
|
-
"openscvx/symbolic/lowerers/latex/math.py",
|
|
173
|
-
"openscvx/symbolic/lowerers/latex/array.py",
|
|
174
|
-
"openscvx/symbolic/lowerers/latex/stl.py",
|
|
175
|
-
"openscvx/symbolic/lowerers/latex/_lowerer.py",
|
|
176
|
-
"openscvx/symbolic/lowerers/latex/formulation.py",
|
|
177
|
-
"openscvx/symbolic/lowerers/latex/constraint.py",
|
|
178
|
-
"openscvx/symbolic/lowerers/latex/spatial.py",
|
|
179
|
-
"openscvx/symbolic/lowerers/latex/linalg.py",
|
|
180
|
-
"openscvx/symbolic/lowerers/latex/arithmetic.py",
|
|
181
|
-
"openscvx/symbolic/lowerers/latex/__init__.py",
|
|
182
|
-
"openscvx/algorithms/base.py",
|
|
183
|
-
"openscvx/algorithms/history.py",
|
|
184
|
-
"openscvx/algorithms/optimization_results.py",
|
|
185
|
-
"openscvx/algorithms/state.py",
|
|
186
|
-
"openscvx/algorithms/loop.py",
|
|
187
|
-
"openscvx/algorithms/weights.py",
|
|
188
|
-
"openscvx/algorithms/penalty.py",
|
|
189
|
-
"openscvx/algorithms/hyperparams.py",
|
|
190
|
-
"openscvx/algorithms/__init__.py",
|
|
191
|
-
"openscvx/algorithms/autotuner/base.py",
|
|
192
|
-
"openscvx/algorithms/autotuner/constant_proximal_weight.py",
|
|
193
|
-
"openscvx/algorithms/autotuner/ramp_proximal_weight.py",
|
|
194
|
-
"openscvx/algorithms/autotuner/acceptance_ratio.py",
|
|
195
|
-
"openscvx/algorithms/autotuner/adaptive_proximal_weight.py",
|
|
196
|
-
"openscvx/algorithms/autotuner/augmented_lagrangian.py",
|
|
197
|
-
"openscvx/algorithms/autotuner/__init__.py",
|
|
198
|
-
"openscvx/algorithms/scvx/penalized_trust_region.py",
|
|
199
|
-
"openscvx/algorithms/scvx/iteration.py",
|
|
200
|
-
"openscvx/algorithms/scvx/__init__.py",
|
|
201
|
-
"openscvx/propagation/post_processing.py",
|
|
202
|
-
"openscvx/propagation/propagation.py",
|
|
203
|
-
"openscvx/propagation/__init__.py",
|
|
204
|
-
"openscvx/integrators/diffrax.py",
|
|
205
|
-
"openscvx/integrators/__init__.py",
|
|
206
|
-
"openscvx/integrators/runge_kutta.py",
|
|
207
|
-
"openscvx/integrations/base.py",
|
|
208
|
-
"openscvx/integrations/mjx.py",
|
|
209
|
-
"openscvx/integrations/frax.py",
|
|
210
|
-
"openscvx/integrations/menagerie.py",
|
|
211
|
-
"openscvx/integrations/_utils.py",
|
|
212
|
-
"openscvx/integrations/__init__.py",
|
|
213
|
-
"openscvx/expert/validation.py",
|
|
214
|
-
"openscvx/expert/byof.py",
|
|
215
|
-
"openscvx/expert/lowering.py",
|
|
216
|
-
"openscvx/expert/__init__.py",
|
|
217
|
-
"openscvx/discretization/base.py",
|
|
218
|
-
"openscvx/discretization/linearize_discretize.py",
|
|
219
|
-
"openscvx/discretization/linearize_discretize_sparse.py",
|
|
220
|
-
"openscvx/discretization/__init__.py",
|
|
221
|
-
"openscvx/discretization/discretize_linearize.py",
|
|
222
|
-
"openscvx/discretization/sparse_utils/bcoo_helpers.py",
|
|
223
|
-
"openscvx/discretization/sparse_utils/sparse_jacobian.py",
|
|
224
|
-
"openscvx/discretization/sparse_utils/__init__.py",
|
|
225
|
-
"scripts/gen_ref_pages.py",
|
|
226
|
-
"scripts/gen_example_pages.py",
|
|
227
|
-
"scripts/mkdocs_seo_hook.py",
|
|
228
|
-
"scripts/mkdocs_copy_viser_client_hook.py",
|
|
229
|
-
"examples/plotting.py",
|
|
230
|
-
"examples/_viser_embed_export.py",
|
|
231
|
-
"examples/plotting_viser.py",
|
|
232
|
-
"examples/drone/cinema_vp.py",
|
|
233
|
-
"examples/drone/obstacle_avoidance_vmap_2d.py",
|
|
234
|
-
"examples/drone/dr_double_integrator.py",
|
|
235
|
-
"examples/drone/obstacle_avoidance.py",
|
|
236
|
-
"examples/drone/cinema_vp_nodal.py",
|
|
237
|
-
"examples/drone/dr_vp.py",
|
|
238
|
-
"examples/drone/dr_vp_polytope.py",
|
|
239
|
-
"examples/drone/obstacle_avoidance_vmap.py",
|
|
240
|
-
"examples/drone/boresight_trace_mpcc.py",
|
|
241
|
-
"examples/drone/2d_obstacle_avoidance_batched_ic.py",
|
|
242
|
-
"examples/drone/dr_vp_nodal.py",
|
|
243
|
-
"examples/drone/obstacle_avoidance_nodal.py",
|
|
244
|
-
"examples/drone/openscvx_logo.py",
|
|
245
|
-
"examples/drone/drone_racing.py",
|
|
246
|
-
"examples/drone/multi_agent_circle_swap.py",
|
|
247
|
-
"examples/drone/drone_racing_batched_gates.py",
|
|
248
|
-
"examples/drone/logo.py",
|
|
249
|
-
"examples/drone/logo_utils/circle.svg",
|
|
250
|
-
"examples/drone/logo_utils/svg_path_utils.py",
|
|
251
|
-
"examples/drone/logo_utils/acl_logo.svg",
|
|
252
|
-
"examples/drone/logo_utils/openscvx_logo_single.svg",
|
|
253
|
-
"examples/drone/logo_utils/quadrotor_mesh.py",
|
|
254
|
-
"examples/arm/franka_fr3v2_viewplanning_nodal.py",
|
|
255
|
-
"examples/arm/7_dof_arm.py",
|
|
256
|
-
"examples/arm/7_dof_arm_vp.py",
|
|
257
|
-
"examples/arm/7_dof_arm_collision.py",
|
|
258
|
-
"examples/arm/3_dof_arm.py",
|
|
259
|
-
"examples/arm/franka_fr3v2_viewplanning.py",
|
|
260
|
-
"examples/arm/franka_fr3v2_pick_place.py",
|
|
261
|
-
"examples/spacecraft/let_transfer.py",
|
|
262
|
-
"examples/spacecraft/proxops_cw.py",
|
|
263
|
-
"examples/spacecraft/relative_loitering.py",
|
|
264
|
-
"examples/spacecraft/halo_orbit.py",
|
|
265
|
-
"examples/spacecraft/hohmann_transfer.py",
|
|
266
|
-
"examples/abstract/brachistochrone.py",
|
|
267
|
-
"examples/abstract/flappy_bird.py",
|
|
268
|
-
"examples/abstract/brachistochrone_batched.py",
|
|
269
|
-
"examples/abstract/impulsive.py",
|
|
270
|
-
"examples/abstract/stl_integer_variable.py",
|
|
271
|
-
"examples/abstract/stl_or.py",
|
|
272
|
-
"examples/abstract/hypersensitive.py",
|
|
273
|
-
"examples/animations/7_dof_arm.py",
|
|
274
|
-
"examples/animations/dr_vp_polytope.py",
|
|
275
|
-
"examples/animations/obstacle_avoidance_vmap.py",
|
|
276
|
-
"examples/animations/_render.py",
|
|
277
|
-
"examples/animations/_camera.py",
|
|
278
|
-
"examples/animations/_sensor_view.py",
|
|
279
|
-
"examples/animations/franka_fr3v2_pick_place.py",
|
|
280
|
-
"examples/animations/logo.py",
|
|
281
|
-
"examples/mpc/double_integrator_discrete.py",
|
|
282
|
-
"examples/mpc/dubins_car_circle_analytical.py",
|
|
283
|
-
"examples/mpc/double_integrator_drone_racing.py",
|
|
284
|
-
"examples/mpc/dubins_car_circle_discrete.py",
|
|
285
|
-
"examples/mpc/realtime_double_integrator_drone_racing.py",
|
|
286
|
-
"examples/rocket/ascent_launch_vehicle.py",
|
|
287
|
-
"examples/rocket/6DoF_pdg_batched_ic.py",
|
|
288
|
-
"examples/rocket/3DoF_pdg.py",
|
|
289
|
-
"examples/rocket/6DoF_pdg.py",
|
|
290
|
-
"examples/frax/ur5e_pen_trace.py",
|
|
291
|
-
"examples/frax/panda_frax_viewplanning.py",
|
|
292
|
-
"examples/frax/panda_frax.py",
|
|
293
|
-
"examples/frax/panda_frax_pick_place.py",
|
|
294
|
-
"examples/frax/panda_frax_waypoint.py",
|
|
295
|
-
"examples/frax/ur5e_assets/ur5e.urdf",
|
|
296
|
-
"examples/realtime/obstacle_avoidance_realtime.py",
|
|
297
|
-
"examples/realtime/dubins_car_realtime.py",
|
|
298
|
-
"examples/realtime/3DoF_pdg_realtime.py",
|
|
299
|
-
"examples/realtime/6DoF_pdg_realtime.py",
|
|
300
|
-
"examples/realtime/drone_racing_realtime.py",
|
|
301
|
-
"examples/realtime/cinema_vp_realtime.py",
|
|
302
|
-
"examples/realtime/base_problems/6DoF_pdg_realtime_base.py",
|
|
303
|
-
"examples/realtime/base_problems/cinema_vp_realtime_base.py",
|
|
304
|
-
"examples/realtime/base_problems/obstacle_avoidance_realtime_base.py",
|
|
305
|
-
"examples/realtime/base_problems/3DoF_pdg_realtime_base.py",
|
|
306
|
-
"examples/realtime/base_problems/dubins_car_realtime_base.py",
|
|
307
|
-
"examples/realtime/base_problems/drone_racing_realtime_base.py",
|
|
308
|
-
"examples/car/dubins_car_waypoint_stl.py",
|
|
309
|
-
"examples/car/dubins_car_obstacle_stl.py",
|
|
310
|
-
"examples/car/dubins_car.py",
|
|
311
|
-
"examples/car/dubins_car_obstacle_conditional.py",
|
|
312
|
-
"examples/car/dubins_car_disjoint.py",
|
|
313
|
-
"examples/car/dubins_car_stl_or.py",
|
|
314
|
-
"examples/mjx/skydio_x2_mjx.py",
|
|
315
|
-
"examples/mjx/double_cartpole_mjx.py",
|
|
316
|
-
"examples/mjx/triple_cartpole_game.py",
|
|
317
|
-
"examples/mjx/triple_cartpole_mjx.py",
|
|
318
|
-
"examples/mjx/cartpole_mjx.py",
|
|
319
|
-
"examples/mjx/triple_cartpole_3d_mjx.py",
|
|
320
|
-
"examples/aircraft/dynamic_soaring.py",
|
|
321
|
-
"examples/aircraft/supersonic_time_to_climb.py",
|
|
322
|
-
"examples/double_integrator/moving_safe_zones.py",
|
|
323
|
-
"examples/double_integrator/_plotting.py",
|
|
324
|
-
"tests/test_optimization_results.py",
|
|
325
|
-
"tests/conftest.py",
|
|
326
|
-
"tests/test_plotting.py",
|
|
327
|
-
"tests/test_discretization.py",
|
|
328
|
-
"tests/test_results_parameters.py",
|
|
329
|
-
"tests/hohmann_analytical.py",
|
|
330
|
-
"tests/test_post_process_batched_tau_clamp.py",
|
|
331
|
-
"tests/test_propagation.py",
|
|
332
|
-
"tests/test_integrators.py",
|
|
333
|
-
"tests/test_init.py",
|
|
334
|
-
"tests/test_solve_batched_inference.py",
|
|
335
|
-
"tests/test_autotuning.py",
|
|
336
|
-
"tests/test_initialize_syncs_guesses.py",
|
|
337
|
-
"tests/test_cvxpygen_optional.py",
|
|
338
|
-
"tests/test_loader.py",
|
|
339
|
-
"tests/test_examples.py",
|
|
340
|
-
"tests/test_expert.py",
|
|
341
|
-
"tests/brachistochrone_analytical.py",
|
|
342
|
-
"tests/__init__.py",
|
|
343
|
-
"tests/e2e/test_multishot_propagation.py",
|
|
344
|
-
"tests/e2e/test_solve_jax_vmap_brachistochrone.py",
|
|
345
|
-
"tests/e2e/test_impulsive.py",
|
|
346
|
-
"tests/e2e/test_brachistochrone.py",
|
|
347
|
-
"tests/e2e/test_solve_batched_brachistochrone.py",
|
|
348
|
-
"tests/e2e/test_solve_jax_bare_brachistochrone.py",
|
|
349
|
-
"tests/e2e/test_solve_jax_jit_brachistochrone.py",
|
|
350
|
-
"tests/e2e/test_solve_jax_vmap_converged_no_drift.py",
|
|
351
|
-
"tests/e2e/test_solve_batched_export_roundtrip.py",
|
|
352
|
-
"tests/e2e/__init__.py",
|
|
353
|
-
"tests/e2e/test_solve_batched_cvxpy_export_errors.py",
|
|
354
|
-
"tests/fixtures/brachistochrone.yaml",
|
|
355
|
-
"tests/fixtures/brachistochrone.json",
|
|
356
|
-
"tests/solvers/test_iteration_callback_moreau.py",
|
|
357
|
-
"tests/solvers/test_subproblem_pytree.py",
|
|
358
|
-
"tests/solvers/test_iteration_callback_qpax.py",
|
|
359
|
-
"tests/solvers/test_iteration_callback_vmap.py",
|
|
360
|
-
"tests/solvers/test_moreau_ptr_solver.py",
|
|
361
|
-
"tests/solvers/_iteration_callback_helpers.py",
|
|
362
|
-
"tests/solvers/test_cvxpy_callback_jit_spike.py",
|
|
363
|
-
"tests/solvers/test_iteration_callback_cvxpy.py",
|
|
364
|
-
"tests/solvers/test_qpax_ptr_solver.py",
|
|
365
|
-
"tests/solvers/__init__.py",
|
|
366
|
-
"tests/symbolic/test_augmentation.py",
|
|
367
|
-
"tests/symbolic/test_lower_latex.py",
|
|
368
|
-
"tests/symbolic/test_lower_jax.py",
|
|
369
|
-
"tests/symbolic/test_unified.py",
|
|
370
|
-
"tests/symbolic/test_lower_cvxpy.py",
|
|
371
|
-
"tests/symbolic/test_hashing.py",
|
|
372
|
-
"tests/symbolic/test_latex_formulation.py",
|
|
373
|
-
"tests/symbolic/test_preprocessing.py",
|
|
374
|
-
"tests/symbolic/test_gmsr.py",
|
|
375
|
-
"tests/symbolic/__init__.py",
|
|
376
|
-
"tests/symbolic/test_sparsity.py",
|
|
377
|
-
"tests/symbolic/parser/test_load.py",
|
|
378
|
-
"tests/symbolic/parser/test_spatial.py",
|
|
379
|
-
"tests/symbolic/parser/test_parser.py",
|
|
380
|
-
"tests/symbolic/parser/test_lie.py",
|
|
381
|
-
"tests/symbolic/parser/test_math.py",
|
|
382
|
-
"tests/symbolic/parser/test_vmap.py",
|
|
383
|
-
"tests/symbolic/parser/test_linalg.py",
|
|
384
|
-
"tests/symbolic/parser/test_constraint.py",
|
|
385
|
-
"tests/symbolic/parser/test_logic.py",
|
|
386
|
-
"tests/symbolic/parser/test_stl.py",
|
|
387
|
-
"tests/symbolic/parser/test_tokenizer.py",
|
|
388
|
-
"tests/symbolic/parser/test_array.py",
|
|
389
|
-
"tests/symbolic/parser/__init__.py",
|
|
390
|
-
"tests/symbolic/expr/test_node_reference.py",
|
|
391
|
-
"tests/symbolic/expr/test_spatial.py",
|
|
392
|
-
"tests/symbolic/expr/test_lie.py",
|
|
393
|
-
"tests/symbolic/expr/test_math.py",
|
|
394
|
-
"tests/symbolic/expr/test_vmap.py",
|
|
395
|
-
"tests/symbolic/expr/test_linalg.py",
|
|
396
|
-
"tests/symbolic/expr/test_variable.py",
|
|
397
|
-
"tests/symbolic/expr/test_constraint.py",
|
|
398
|
-
"tests/symbolic/expr/test_parameters.py",
|
|
399
|
-
"tests/symbolic/expr/test_logic.py",
|
|
400
|
-
"tests/symbolic/expr/test_stl.py",
|
|
401
|
-
"tests/symbolic/expr/test_scaling.py",
|
|
402
|
-
"tests/symbolic/expr/test_array.py",
|
|
403
|
-
"tests/symbolic/expr/test_arithmetic.py",
|
|
404
|
-
"tests/symbolic/expr/test_expr.py",
|
|
405
|
-
"tests/symbolic/expr/__init__.py",
|
|
406
|
-
"tests/algorithms/test_algorithm_state_pytree.py",
|
|
407
|
-
"tests/algorithms/test_make_solve_loop.py",
|
|
408
|
-
"tests/algorithms/_iteration_helpers.py",
|
|
409
|
-
"tests/algorithms/test_iteration_fn_jit.py",
|
|
410
|
-
"tests/algorithms/test_iteration_fn_parity.py",
|
|
411
|
-
"tests/algorithms/__init__.py",
|
|
412
|
-
"tests/algorithms/autotuner/test_update_weights_jit.py",
|
|
413
|
-
"tests/algorithms/autotuner/test_defaults_agreement.py",
|
|
414
|
-
"tests/algorithms/autotuner/test_hyper_overrides.py",
|
|
415
|
-
"tests/algorithms/autotuner/__init__.py",
|
|
416
|
-
"tests/integrations/test_mjx.py",
|
|
417
|
-
"tests/integrations/test_mjx_dynamics.py",
|
|
418
|
-
"tests/integrations/__init__.py",
|
|
419
|
-
"docs/llms.txt",
|
|
420
|
-
"docs/changelog.md",
|
|
421
|
-
"docs/versions.json",
|
|
422
|
-
"docs/index.md",
|
|
423
|
-
"docs/examples.md",
|
|
424
|
-
"docs/installation.md",
|
|
425
|
-
"docs/citation.md",
|
|
426
|
-
"docs/javascripts/mathjax.js",
|
|
427
|
-
"docs/Foundations/discretization.md",
|
|
428
|
-
"docs/Foundations/constraint_reformulation.md",
|
|
429
|
-
"docs/Foundations/ocp.md",
|
|
430
|
-
"docs/Foundations/control_parameterization.md",
|
|
431
|
-
"docs/Foundations/time_dilation.md",
|
|
432
|
-
"docs/Foundations/scvx.md",
|
|
433
|
-
"docs/assets/openscvx_logo_square.png",
|
|
434
|
-
"docs/assets/favicon.png",
|
|
435
|
-
"docs/assets/logo.svg",
|
|
436
|
-
"docs/assets/viser-recordings/franka_fr3v2_pick_place.viser",
|
|
437
|
-
"docs/assets/viser-recordings/drone_racing.viser",
|
|
438
|
-
"docs/assets/images/ctcs_light.png",
|
|
439
|
-
"docs/assets/images/ct-scvx_dark.png",
|
|
440
|
-
"docs/assets/images/problem_class_dark.png",
|
|
441
|
-
"docs/assets/images/ct-scvx_light.png",
|
|
442
|
-
"docs/assets/images/ctcs_dark.png",
|
|
443
|
-
"docs/assets/images/problem_class_light.png",
|
|
444
|
-
"docs/assets/viser-client/index.html",
|
|
445
|
-
"docs/UnderTheHood/lowering_architecture.md",
|
|
446
|
-
"docs/UnderTheHood/vectorization_and_vmapping.md",
|
|
447
|
-
"docs/UnderTheHood/batching_jit_grad.md",
|
|
448
|
-
"docs/UnderTheHood/custom_algorithms_autotuners.md",
|
|
449
|
-
"docs/UsersGuide/08_mpcc.md",
|
|
450
|
-
"docs/UsersGuide/02_drone_racing_constraints.md",
|
|
451
|
-
"docs/UsersGuide/04_viewpoint_constraints.md",
|
|
452
|
-
"docs/UsersGuide/06_logic.md",
|
|
453
|
-
"docs/UsersGuide/01_hello_world_brachistochrone.md",
|
|
454
|
-
"docs/UsersGuide/03_obstacle_avoidance_vmap.md",
|
|
455
|
-
"docs/UsersGuide/05_visualization.md",
|
|
456
|
-
"docs/UsersGuide/00_introduction.md",
|
|
457
|
-
"docs/UsersGuide/09_mjx_dynamics.md",
|
|
458
|
-
"docs/UsersGuide/07_lie.md"
|
|
459
|
-
]
|
|
460
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|