Get Started
Examples
Examples
Brachistochrone
Notebook
Recommended
Script
Basic
brachistochrone.py
import scvxgen as scvx
parameters = scvx.Parameters('g')
states = scvx.States('x y v')
controls = scvx.Controls('theta')
g, = parameters
x, y, v = states
theta, = controls
sin = scvx.sympy.sin
cos = scvx.sympy.cos
pi = float(scvx.sympy.pi)
dynamics = scvx.Dynamics(
v * sin(theta),
-v * cos(theta),
g * cos(theta)
)
time = scvx.Time(guess=2, t_min_factor=0.25, t_max_factor=5)
parameters.g.set_value(9.81)
states.set_initial(0, 10, 0)
states.set_final(10, 5, scvx.Free())
states.set_minimum(0, 0, 0)
states.set_maximum(10, 10, 10)
controls.set_initial(5 * pi / 180)
controls.set_final(100.5 * pi / 180)
controls.set_minimum(0)
controls.set_maximum(100.5 * pi / 180)
settings = scvx.Settings(
N_disc=2, N_prop=20, convex_solver='PIPG', w_cost=1, w_slack=10, w_trust=10
)
problem = scvx.Problem(
time=time,
parameters=parameters,
states=states,
controls=controls,
dynamics=dynamics,
settings=settings
)
problem.generate_code()
output = problem.solve()