mirror of
https://github.com/MoreTore/openpilot.git
synced 2026-09-30 19:33:49 +08:00
longitudinal MPC: use reset() function instead of recreating the solver in (#24091)
* scons: add acados_template as dependency for lat and long mpc * long MPC: use acados reset instead of recreating the solver * long MPC: print timings and reset commented * update acados x86_64 * update acados include folder * update acados Python interface * update acados reference commit to latest acados/master * update x86 libs * update comma two * update acados again with commit 8ea8827fafb1b23b4c7da1c4cf650de1cbd73584 * update comma two * update comma three * update x86 Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com> Co-authored-by: Comma Device <device@comma.ai>
This commit is contained in:
@@ -44,11 +44,14 @@ generated_files = [
|
||||
] + build_files
|
||||
|
||||
acados_dir = '#third_party/acados'
|
||||
acados_templates_dir = '#pyextra/acados_template/c_templates_tera'
|
||||
|
||||
source_list = ['lat_mpc.py',
|
||||
f'{acados_dir}/include/acados_c/ocp_nlp_interface.h',
|
||||
f'{acados_dir}/aarch64/lib/libacados.so',
|
||||
f'{acados_dir}/x86_64/lib/libacados.so',
|
||||
f'{acados_dir}/larch64/lib/libacados.so',
|
||||
f'{acados_templates_dir}/acados_solver.in.c',
|
||||
]
|
||||
|
||||
lenv = env.Clone()
|
||||
|
||||
@@ -51,11 +51,14 @@ generated_files = [
|
||||
] + build_files
|
||||
|
||||
acados_dir = '#third_party/acados'
|
||||
acados_templates_dir = '#pyextra/acados_template/c_templates_tera'
|
||||
|
||||
source_list = ['long_mpc.py',
|
||||
f'{acados_dir}/include/acados_c/ocp_nlp_interface.h',
|
||||
f'{acados_dir}/aarch64/lib/libacados.so',
|
||||
f'{acados_dir}/x86_64/lib/libacados.so',
|
||||
f'{acados_dir}/larch64/lib/libacados.so',
|
||||
f'{acados_templates_dir}/acados_solver.in.c',
|
||||
]
|
||||
|
||||
lenv = env.Clone()
|
||||
|
||||
@@ -192,11 +192,14 @@ def gen_long_ocp():
|
||||
class LongitudinalMpc:
|
||||
def __init__(self, e2e=False):
|
||||
self.e2e = e2e
|
||||
self.solver = AcadosOcpSolverCython(MODEL_NAME, ACADOS_SOLVER_TYPE, N)
|
||||
self.reset()
|
||||
self.source = SOURCES[2]
|
||||
|
||||
def reset(self):
|
||||
self.solver = AcadosOcpSolverCython(MODEL_NAME, ACADOS_SOLVER_TYPE, N)
|
||||
# self.solver = AcadosOcpSolverCython(MODEL_NAME, ACADOS_SOLVER_TYPE, N)
|
||||
self.solver.reset()
|
||||
# self.solver.options_set('print_level', 2)
|
||||
self.v_solution = np.zeros(N+1)
|
||||
self.a_solution = np.zeros(N+1)
|
||||
self.prev_a = np.array(self.a_solution)
|
||||
@@ -352,6 +355,8 @@ class LongitudinalMpc:
|
||||
self.run()
|
||||
|
||||
def run(self):
|
||||
# t0 = sec_since_boot()
|
||||
# reset = 0
|
||||
for i in range(N+1):
|
||||
self.solver.set(i, 'p', self.params[i])
|
||||
self.solver.constraints_set(0, "lbx", self.x0)
|
||||
@@ -386,6 +391,8 @@ class LongitudinalMpc:
|
||||
self.last_cloudlog_t = t
|
||||
cloudlog.warning(f"Long mpc reset, solution_status: {self.solution_status}")
|
||||
self.reset()
|
||||
# reset = 1
|
||||
# print(f"long_mpc timings: total internal {self.solve_time:.2e}, external: {(sec_since_boot() - t0):.2e} qp {self.time_qp_solution:.2e}, lin {self.time_linearization:.2e} qp_iter {qp_iter}, reset {reset}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user