From 5d3d5d51e7f7bb62d6b3cccd93726409443876c2 Mon Sep 17 00:00:00 2001 From: Fanny Risbourg <frisbourg@laas.fr> Date: Wed, 3 Aug 2022 17:56:56 +0200 Subject: [PATCH] try multiprocessing --- config/walk_parameters.yaml | 2 +- .../quadruped_reactive_walking/Controller.py | 20 +++++++------------ .../WB_MPC_Wrapper.py | 1 - 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/config/walk_parameters.yaml b/config/walk_parameters.yaml index 8e74c7e6..3e8c9623 100644 --- a/config/walk_parameters.yaml +++ b/config/walk_parameters.yaml @@ -13,7 +13,7 @@ robot: predefined_vel: true # If we are using a predefined reference velocity (True) or a joystick (False) N_SIMULATION: 5000 # Number of simulated wbc time steps enable_corba_viewer: false # Enable/disable Corba Viewer - enable_multiprocessing: false # Enable/disable running the MPC in another process in parallel of the main loop + enable_multiprocessing: true # Enable/disable running the MPC in another process in parallel of the main loop perfect_estimator: true # Enable/disable perfect estimator by using data directly from PyBullet # General control parameters diff --git a/python/quadruped_reactive_walking/Controller.py b/python/quadruped_reactive_walking/Controller.py index 39cc2be2..d7ad22a5 100644 --- a/python/quadruped_reactive_walking/Controller.py +++ b/python/quadruped_reactive_walking/Controller.py @@ -24,22 +24,14 @@ class Result: class Interpolator: - def __init__(self, params): + def __init__(self, params, x0): self.dt = params.dt_mpc self.type = params.interpolation_type - self.q0 = np.zeros(3) - self.q1 = np.zeros(3) - self.v0 = np.zeros(3) - self.v1 = np.zeros(3) - if self.type == 3: self.ts = np.repeat(np.linspace(0, 2 * self.dt, 3), 2) - else: - self.alpha = np.zeros(3) - self.beta = np.zeros(3) - self.gamma = np.zeros(3) - self.delta = 1.0 + + self.update(x0, x0) def update(self, x0, x1, x2=None): self.q0 = x0[:3] @@ -70,7 +62,7 @@ class Interpolator: self.beta[i] = v0 self.gamma[i] = q0 self.delta = 2 * (q1 - q0) / (v1 + v0) / self.dt - elif self.type == 3: # Spline interpolation + elif self.type == 3: # Spline interpolation from scipy.interpolate import KroghInterpolator if x2 is not None: @@ -173,7 +165,9 @@ class Controller: self.k_result = 0 self.k_solve = 0 if self.params.interpolate_mpc: - self.interpolator = Interpolator(params) + self.interpolator = Interpolator( + params, np.concatenate([self.result.q_des[3:6], self.result.v_des[3:6]]) + ) try: file = np.load("/tmp/init_guess.npy", allow_pickle=True).item() self.xs_init = list(file["xs"]) diff --git a/python/quadruped_reactive_walking/WB_MPC_Wrapper.py b/python/quadruped_reactive_walking/WB_MPC_Wrapper.py index 3fd35a7f..b63932f4 100644 --- a/python/quadruped_reactive_walking/WB_MPC_Wrapper.py +++ b/python/quadruped_reactive_walking/WB_MPC_Wrapper.py @@ -104,7 +104,6 @@ class MPC_Wrapper: """ Run the MPC (asynchronous version) """ - print("Call to solve") if k == 0: self.last_available_result.xs = [x0 for _ in range(self.pd.T + 1)] p = Process(target=self.MPC_asynchronous) -- GitLab