Skip to content

Commit

Permalink
Tune mpc in sim
Browse files Browse the repository at this point in the history
  • Loading branch information
hbuurmei committed Feb 14, 2025
1 parent 405d955 commit 4ace100
Show file tree
Hide file tree
Showing 19 changed files with 3,850 additions and 295 deletions.
239 changes: 239 additions & 0 deletions stack/main/data/trajectories/test_mpc/mpc_U0-dU0-Q50-Qzf100-R0-N5.csv

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

239 changes: 239 additions & 0 deletions stack/main/data/trajectories/test_mpc/mpc_U05-dU0-Q50-Qzf100-R0-N5.csv

Large diffs are not rendered by default.

238 changes: 0 additions & 238 deletions stack/main/data/trajectories/test_mpc/test_experiment.csv

This file was deleted.

Large diffs are not rendered by default.

101 changes: 68 additions & 33 deletions stack/main/scripts/visualize_mpc_test.ipynb

Large diffs are not rendered by default.

34 changes: 10 additions & 24 deletions stack/main/src/executor/executor/mpc_initializer_node.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,48 +31,34 @@ def __init__(self):
self.data_dir = os.getenv('TRUNK_DATA', '/home/trunk/Documents/trunk-stack/stack/main/data')

# Generate reference trajectory
z_ref, t = self._generate_ref_trajectory(10, 0.01, 'figure_eight', 0.1)
z_ref, t = self._generate_ref_trajectory(10, 0.01, 'circle', 0.075)

# Load the model
self._load_model()

# MPC configuration
# Qz = 1 * jnp.eye(self.model.n_z)
# Qz = Qz.at[1, 1].set(0)
# Qzf = 10 * jnp.eye(self.model.n_z)
# Qzf = Qzf.at[1, 1].set(0)

# R_tip, R_mid, R_top = 0.006, 0.008, 0.007
U = HyperRectangle([0.4]*6, [-0.4]*6)
dU = HyperRectangle([0.1]*6, [-0.1]*6)
# U = None
dU = None

# TODO: John edits
Qz = 5. * jnp.eye(self.model.n_z)
Qz = 5 * jnp.eye(self.model.n_z)
Qz = Qz.at[1, 1].set(0)
Qzf = 0. * jnp.eye(self.model.n_z)
Qzf = 10 * jnp.eye(self.model.n_z)
Qzf = Qzf.at[1, 1].set(0)

# TODO: John edits
R_tip, R_mid, R_top = 0.0055, 0.008, 0.01

R_tip, R_mid, R_top = 0.001, 0.0075, 0.01
R = jnp.diag(jnp.array([R_tip, R_mid, R_top, R_mid, R_top, R_tip]))

gusto_config = GuSTOConfig(
Qz=Qz,
Qzf=Qzf,
R=R,
x_char=0.05*jnp.ones(self.model.n_x),
f_char=0.5*jnp.ones(self.model.n_x),
N=5
N=6
)
U = HyperRectangle([0.4]*6, [-0.4]*6)
# dU = HyperRectangle([0.1]*6, [-0.1]*6)
dU = None

# TODO: John edits
# dU = HyperRectangle([0.03]*6, [-0.03]*6)

x0 = jnp.zeros(self.model.n_x)
# self.mpc_solver_node = run_mpc_solver_node(self.model, gusto_config, x0, t=t, z=z_ref, U=U, dU=dU)

# TODO: John edits
self.mpc_solver_node = run_mpc_solver_node(self.model, gusto_config, x0, t=t, z=z_ref, U=U, dU=dU, solver="GUROBI")


Expand Down

0 comments on commit 4ace100

Please sign in to comment.