import os from cffi import FFI from common.ffi_wrapper import suffix mpc_dir = os.path.dirname(os.path.abspath(__file__)) libmpc_fn = os.path.join(mpc_dir, "libmpc"+suffix()) ffi = FFI() ffi.cdef(""" typedef struct { double x, y, psi, curvature, curvature_rate; } state_t; int N = 16; typedef struct { double x[N+1]; double y[N+1]; double psi[N+1]; double curvature[N+1]; double curvature_rate[N]; double cost; } log_t; void init(); void set_weights(double pathCost, double headingCost, double steerRateCost); int run_mpc(state_t * x0, log_t * solution, double v_ego, double rotation_radius, double target_y[N+1], double target_psi[N+1]); """) libmpc = ffi.dlopen(libmpc_fn)