double L = 0.8;
//auto L = dae.add_p("L");
//auto ti = dae.add_p("ti");
auto u_v = dae.add_u("u_v");
auto u_w = dae.add_u("u_w");
auto x = dae.add_x("x");
auto y = dae.add_x("y");
auto o = dae.add_x("o");
//ODE
auto x_dot = u_v * cos(o);
auto y_dot = u_v * sin(o);
auto o_dot = (1 / L) * u_w;
dae.add_ode("x_dot", x_dot);
dae.add_ode("y_dot", y_dot);
dae.add_ode("o_dot", o_dot);
//dae.add_lc("gamma", {"ode"});
auto ode = dae.create("f", {"x", "u", "p"}, {"ode"});
auto jac_ode_x = dae.create("ode", {"x", "u", "p"}, {"jac_ode_x"});
auto jac_ode_u = dae.create("ode", {"x", "u", "p"}, {"jac_ode_u"});
//auto hess_ode_x_x = dae.create("ode", {"x", "u", "p"}, {"hess_gamma_x_x"});
std::cout << ode <<std::endl;;
//Integrator
// Time length
double T = 10.0;
// Shooting length
int nu = 20; // Number of control segments
// Time horizon for integrator
double t0 = 0;
double tf = T/nu;
casadi::Dict opts;
// opts["expand_f"] = true;
// opts["interpolation_order"] = 1;
// opts["number_of_finite_elements"] = 1000;
opts["t0"] = t0;
opts["tf"] = tf;
//SXDict dae = {{"x", x}, {"p", U_ode}, {"t", t}, {"ode", ode}};dict
casadi::Function F = casadi::integrator("integrator", "rk", ode, opts);