mirror of
https://github.com/dragonpilot/dragonpilot.git
synced 2026-03-03 22:23:53 +08:00
* start again * need that too * this actually works * not needed * do properly * still works * still works * still good * all G without ll * still works * all still good * cleanup building * cleanup sconscript * new lane planner * how on earth is this silent too.... * update * add rotation radius * update * pathplanner first pass * misc fixes * fix * need deep_interp * local again * fix * fix test * very old * new replay * interp properly * correct length * another horrible silent bug * like master * fix that * do doubles * different delay compensation * make robust to empty msg * make pass with hack for now * add some extra * update ref for increased leg * test cpu usage on this pr * tiny bit faster * purge numpy * update ref * not needed * ready for merge * try again after recompile Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
33 lines
791 B
Python
33 lines
791 B
Python
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, delta, t;
|
|
} state_t;
|
|
int N = 16;
|
|
|
|
typedef struct {
|
|
double x[N+1];
|
|
double y[N+1];
|
|
double psi[N+1];
|
|
double delta[N+1];
|
|
double rate[N];
|
|
double cost;
|
|
} log_t;
|
|
|
|
void init(double pathCost, double headingCost, double steerRateCost);
|
|
void init_weights(double pathCost, double headingCost, double steerRateCost);
|
|
int run_mpc(state_t * x0, log_t * solution,
|
|
double v_poly[4], double curvature_factor, double rotation_radius,
|
|
double target_y[N+1], double target_psi[N+1]);
|
|
""")
|
|
|
|
libmpc = ffi.dlopen(libmpc_fn)
|