Skip to content

Commit 98e3fc3

Browse files
committed
example fixes run_ci
1 parent 1733d8f commit 98e3fc3

35 files changed

+100
-102
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "ContactImplicitMPC"
22
uuid = "842347fd-0767-4ff8-b652-76aad5eb0a37"
33
authors = ["simon-lc <simonlc@stanford.edu>", "thowell <thowell@stanford.edu>"]
4-
version = "0.1.3"
4+
version = "0.1.4"
55

66
[deps]
77
BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf"

README.md

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,10 @@
44

55
This repository contains algorithms and examples from our paper: [Fast Contact-Implicit Model-Predictive Control](https://arxiv.org/abs/2107.05616).
66

7-
Notebooks can be generated for the [examples](examples/README.md), please try: [flamingo](examples/flamingo/flat.jl), [pushbot](examples/pushbot/push_recovery.jl), [hopper](examples/hopper/flat.jl), and [quadruped](examples/quadruped/flat.jl).
8-
97
## Installation
10-
```
11-
Pkg.add("ContactImplicitMPC")
12-
```
8+
- `ContactImplicitMPC` can be added via the Julia package manager (type `]`): `pkg> add ContactImplicitMPC`
9+
10+
A collection of examples are pre-generated in notebooks with the package, please try: [flamingo](examples/flamingo/flat.jl), [pushbot](examples/pushbot/push_recovery.jl), [hopper](examples/hopper/flat.jl), and [quadruped](examples/quadruped/flat.jl). Additional notebooks can be [generated](examples/README.md).
1311

1412
## Flamingo
1513
<img src="animations/flamingo.gif" alt="drawing" width="400"/>

examples/flamingo/flat.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ obj = TrackingVelocityObjective(model, env, H_mpc,
3535
γ = [Diagonal(1.0e-100 * ones(model.dim.c)) for t = 1:H_mpc],
3636
b = [Diagonal(1.0e-100 * ones(model.dim.c * friction_dim(env))) for t = 1:H_mpc])
3737

38-
p = linearized_mpc_policy(ref_traj, s, obj,
38+
p = ci_mpc_policy(ref_traj, s, obj,
3939
H_mpc = H_mpc,
4040
N_sample = N_sample,
4141
κ_mpc = κ_mpc,
@@ -50,11 +50,11 @@ p = linearized_mpc_policy(ref_traj, s, obj,
5050
n_opts = NewtonOptions(
5151
r_tol = 3e-4,
5252
max_iter = 5),
53-
mpc_opts = LinearizedMPCOptions());
53+
mpc_opts = CIMPCOptions());
5454

5555
# ## Initial conditions
5656
q1_sim = SVector{model.dim.q}(copy(ref_traj.q[2]))
57-
q0_sim = SVector{model.dim.q}(copy(q1_sim - (copy(ref_traj.q[2]) - copy(ref_traj.q[1])) / N_sample))
57+
q0_sim = SVector{model.dim.q}(copy(q1_sim - (copy(ref_traj.q[2]) - copy(ref_traj.q[1])) / N_sample));
5858

5959
# ## Simulator
6060
sim = simulator(s, q0_sim, q1_sim, h_sim, H_sim,
@@ -71,7 +71,7 @@ sim = simulator(s, q0_sim, q1_sim, h_sim, H_sim,
7171

7272
# ## Visualizer
7373
vis = ContactImplicitMPC.Visualizer()
74-
open(vis)
74+
ContactImplicitMPC.render(vis)
7575

7676
# ## Visualize
7777
anim = visualize_meshrobot!(vis, model, sim.traj, sample=10);

examples/flamingo/piecewise.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,14 @@ obj = TrackingVelocityObjective(model, env, H_mpc,
3535
γ = [Diagonal(1.0e-100 * ones(model.dim.c)) for t = 1:H_mpc],
3636
b = [Diagonal(1.0e-100 * ones(model.dim.c * friction_dim(env))) for t = 1:H_mpc]);
3737

38-
p = linearized_mpc_policy(ref_traj, s, obj,
38+
p = ci_mpc_policy(ref_traj, s, obj,
3939
H_mpc = H_mpc,
4040
N_sample = N_sample,
4141
κ_mpc = κ_mpc,
4242
n_opts = NewtonOptions(
4343
r_tol = 3e-4,
4444
max_iter = 5),
45-
mpc_opts = LinearizedMPCOptions(
45+
mpc_opts = CIMPCOptions(
4646
altitude_update = true,
4747
altitude_impact_threshold = 0.02,
4848
altitude_verbose = true,
@@ -51,7 +51,7 @@ p = linearized_mpc_policy(ref_traj, s, obj,
5151

5252
# ## Initial conditions
5353
q1_sim = SVector{model.dim.q}(copy(ref_traj.q[2]))
54-
q0_sim = SVector{model.dim.q}(copy(q1_sim - (copy(ref_traj.q[2]) - copy(ref_traj.q[1])) / N_sample))
54+
q0_sim = SVector{model.dim.q}(copy(q1_sim - (copy(ref_traj.q[2]) - copy(ref_traj.q[1])) / N_sample));
5555

5656
# ## Simulator
5757
sim = simulator(s_sim, q0_sim, q1_sim, h_sim, H_sim,
@@ -69,7 +69,7 @@ sim = simulator(s_sim, q0_sim, q1_sim, h_sim, H_sim,
6969

7070
# ## Visualizer
7171
vis = ContactImplicitMPC.Visualizer()
72-
open(vis)
72+
ContactImplicitMPC.render(vis)
7373

7474
# ## Visualize
7575
plot_surface!(vis, s_sim.env)

examples/flamingo/sine.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ obj = TrackingVelocityObjective(model, env, H_mpc,
3636
γ = [Diagonal(1.0e-100 * ones(model.dim.c)) for t = 1:H_mpc],
3737
b = [Diagonal(1.0e-100 * ones(model.dim.c * friction_dim(env))) for t = 1:H_mpc]);
3838

39-
p = linearized_mpc_policy(ref_traj, s, obj,
39+
p = ci_mpc_policy(ref_traj, s, obj,
4040
H_mpc = H_mpc,
4141
N_sample = N_sample,
4242
κ_mpc = κ_mpc,
@@ -51,15 +51,15 @@ p = linearized_mpc_policy(ref_traj, s, obj,
5151
n_opts = NewtonOptions(
5252
r_tol = 3e-4,
5353
max_iter = 5),
54-
mpc_opts = LinearizedMPCOptions(
54+
mpc_opts = CIMPCOptions(
5555
altitude_update = true,
5656
altitude_impact_threshold = 0.02,
5757
)
5858
);
5959

6060
# ## Initial conditions
6161
q1_sim = SVector{model.dim.q}(copy(ref_traj.q[2]))
62-
q0_sim = SVector{model.dim.q}(copy(q1_sim - (copy(ref_traj.q[2]) - copy(ref_traj.q[1])) / N_sample))
62+
q0_sim = SVector{model.dim.q}(copy(q1_sim - (copy(ref_traj.q[2]) - copy(ref_traj.q[1])) / N_sample));
6363

6464
# ## Simulator
6565
sim = simulator(s_sim, q0_sim, q1_sim, h_sim, H_sim,
@@ -77,7 +77,7 @@ sim = simulator(s_sim, q0_sim, q1_sim, h_sim, H_sim,
7777

7878
# ## Visualizer
7979
vis = ContactImplicitMPC.Visualizer()
80-
open(vis)
80+
ContactImplicitMPC.render(vis)
8181

8282
# ## Visualize
8383
plot_surface!(vis, s_sim.env)

examples/flamingo/slope.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ obj = TrackingVelocityObjective(model, env, H_mpc,
3636
γ = [Diagonal(1.0e-100 * ones(model.dim.c)) for t = 1:H_mpc],
3737
b = [Diagonal(1.0e-100 * ones(model.dim.c * friction_dim(env))) for t = 1:H_mpc]);
3838

39-
p = linearized_mpc_policy(ref_traj, s, obj,
39+
p = ci_mpc_policy(ref_traj, s, obj,
4040
H_mpc = H_mpc,
4141
N_sample = N_sample,
4242
κ_mpc = κ_mpc,
@@ -51,15 +51,15 @@ p = linearized_mpc_policy(ref_traj, s, obj,
5151
n_opts = NewtonOptions(
5252
r_tol = 3e-4,
5353
max_iter = 5),
54-
mpc_opts = LinearizedMPCOptions(
54+
mpc_opts = CIMPCOptions(
5555
altitude_update = true,
5656
altitude_impact_threshold = 0.02,
5757
)
5858
);
5959

6060
# ## Initial conditions
6161
q1_sim = SVector{model.dim.q}(copy(ref_traj.q[2]))
62-
q0_sim = SVector{model.dim.q}(copy(q1_sim - (copy(ref_traj.q[2]) - copy(ref_traj.q[1])) / N_sample))
62+
q0_sim = SVector{model.dim.q}(copy(q1_sim - (copy(ref_traj.q[2]) - copy(ref_traj.q[1])) / N_sample));
6363

6464
# ## Simulator
6565
sim = simulator(s_sim, q0_sim, q1_sim, h_sim, H_sim,
@@ -77,7 +77,7 @@ sim = simulator(s_sim, q0_sim, q1_sim, h_sim, H_sim,
7777

7878
# ## Visualizer
7979
vis = ContactImplicitMPC.Visualizer()
80-
open(vis)
80+
ContactImplicitMPC.render(vis)
8181

8282
# ## Visualize
8383
plot_surface!(vis, s_sim.env)

examples/hopper/3D_flat.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,21 +42,21 @@ obj = TrackingObjective(model, env, H_mpc,
4242
γ = [Diagonal(1.0e-100 * ones(model.dim.c)) for t = 1:H_mpc],
4343
b = [Diagonal(1.0e-100 * ones(model.dim.c * friction_dim(env))) for t = 1:H_mpc])
4444

45-
p = linearized_mpc_policy(ref_traj, s, obj,
45+
p = ci_mpc_policy(ref_traj, s, obj,
4646
H_mpc = H_mpc,
4747
N_sample = N_sample,
4848
κ_mpc = κ_mpc,
4949
n_opts = NewtonOptions(
5050
r_tol = 3e-4,
5151
max_iter = 5),
52-
mpc_opts = LinearizedMPCOptions(
52+
mpc_opts = CIMPCOptions(
5353
altitude_update = true,
5454
altitude_impact_threshold = 0.05,
5555
altitude_verbose = true,
5656
)
5757
)
5858

59-
p = linearized_mpc_policy(ref_traj, s, obj,
59+
p = ci_mpc_policy(ref_traj, s, obj,
6060
H_mpc = H_mpc,
6161
N_sample = N_sample,
6262
κ_mpc = κ_mpc,
@@ -66,7 +66,7 @@ p = linearized_mpc_policy(ref_traj, s, obj,
6666
max_iter = 5,
6767
max_time = ref_traj.h, # HARD REAL TIME
6868
),
69-
mpc_opts = LinearizedMPCOptions(
69+
mpc_opts = CIMPCOptions(
7070
altitude_update = true,
7171
altitude_impact_threshold = 0.05,
7272
altitude_verbose = true,
@@ -83,7 +83,7 @@ p = linearized_mpc_policy(ref_traj, s, obj,
8383

8484
# ## Initial conditions
8585
q1_sim = SVector{model.dim.q}(copy(ref_traj.q[2]))
86-
q0_sim = SVector{model.dim.q}(copy(q1_sim - (copy(ref_traj.q[2]) - copy(ref_traj.q[1])) / N_sample))
86+
q0_sim = SVector{model.dim.q}(copy(q1_sim - (copy(ref_traj.q[2]) - copy(ref_traj.q[1])) / N_sample));
8787

8888
# ## Simulator
8989
sim = simulator(s_sim, q0_sim, q1_sim, h_sim, H_sim,
@@ -100,7 +100,7 @@ sim = simulator(s_sim, q0_sim, q1_sim, h_sim, H_sim,
100100

101101
# ## Visualizer
102102
vis = ContactImplicitMPC.Visualizer()
103-
open(vis)
103+
ContactImplicitMPC.render(vis)
104104

105105
# ## Visualize
106106
plot_surface!(vis, s_sim.env, n=200)

examples/hopper/3D_sine.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,21 +42,21 @@ obj = TrackingObjective(model, env, H_mpc,
4242
γ = [Diagonal(1.0e-100 * ones(model.dim.c)) for t = 1:H_mpc],
4343
b = [Diagonal(1.0e-100 * ones(model.dim.c * friction_dim(env))) for t = 1:H_mpc])
4444

45-
p = linearized_mpc_policy(ref_traj, s, obj,
45+
p = ci_mpc_policy(ref_traj, s, obj,
4646
H_mpc = H_mpc,
4747
N_sample = N_sample,
4848
κ_mpc = κ_mpc,
4949
n_opts = NewtonOptions(
5050
r_tol = 3e-4,
5151
max_iter = 5),
52-
mpc_opts = LinearizedMPCOptions(
52+
mpc_opts = CIMPCOptions(
5353
altitude_update = true,
5454
altitude_impact_threshold = 0.05,
5555
altitude_verbose = true,
5656
)
5757
)
5858

59-
p = linearized_mpc_policy(ref_traj, s, obj,
59+
p = ci_mpc_policy(ref_traj, s, obj,
6060
H_mpc = H_mpc,
6161
N_sample = N_sample,
6262
κ_mpc = κ_mpc,
@@ -66,7 +66,7 @@ p = linearized_mpc_policy(ref_traj, s, obj,
6666
max_iter = 5,
6767
max_time = ref_traj.h, # HARD REAL TIME
6868
),
69-
mpc_opts = LinearizedMPCOptions(
69+
mpc_opts = CIMPCOptions(
7070
altitude_update = true,
7171
altitude_impact_threshold = 0.05,
7272
altitude_verbose = true,
@@ -83,7 +83,7 @@ p = linearized_mpc_policy(ref_traj, s, obj,
8383

8484
# ## Initial conditions
8585
q1_sim = SVector{model.dim.q}(copy(ref_traj.q[2]))
86-
q0_sim = SVector{model.dim.q}(copy(q1_sim - (copy(ref_traj.q[2]) - copy(ref_traj.q[1])) / N_sample))
86+
q0_sim = SVector{model.dim.q}(copy(q1_sim - (copy(ref_traj.q[2]) - copy(ref_traj.q[1])) / N_sample));
8787

8888
# ## Simulator
8989
sim = simulator(s_sim, q0_sim, q1_sim, h_sim, H_sim,
@@ -100,7 +100,7 @@ sim = simulator(s_sim, q0_sim, q1_sim, h_sim, H_sim,
100100

101101
# ## Visualizer
102102
vis = ContactImplicitMPC.Visualizer()
103-
open(vis)
103+
ContactImplicitMPC.render(vis)
104104

105105
# ## Visualize
106106
plot_surface!(vis, s_sim.env, n=200)

examples/hopper/flat.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ obj = TrackingObjective(model, env, H_mpc,
3434
γ = [Diagonal(1.0e-100 * ones(model.dim.c)) for t = 1:H_mpc],
3535
b = [Diagonal(1.0e-100 * ones(model.dim.c * friction_dim(env))) for t = 1:H_mpc]);
3636

37-
p = linearized_mpc_policy(ref_traj, s, obj,
37+
p = ci_mpc_policy(ref_traj, s, obj,
3838
H_mpc = H_mpc,
3939
N_sample = N_sample,
4040
κ_mpc = κ_mpc,
@@ -49,11 +49,11 @@ p = linearized_mpc_policy(ref_traj, s, obj,
4949
n_opts = NewtonOptions(
5050
r_tol = 3e-4,
5151
max_iter = 5),
52-
mpc_opts = LinearizedMPCOptions());
52+
mpc_opts = CIMPCOptions());
5353

5454
# ## Initial conditions
5555
q1_sim = SVector{model.dim.q}(copy(ref_traj.q[2]))
56-
q0_sim = SVector{model.dim.q}(copy(q1_sim - (copy(ref_traj.q[2]) - copy(ref_traj.q[1])) / N_sample))
56+
q0_sim = SVector{model.dim.q}(copy(q1_sim - (copy(ref_traj.q[2]) - copy(ref_traj.q[1])) / N_sample));
5757

5858
# ## Simulator
5959
sim = simulator(s, q0_sim, q1_sim, h_sim, H_sim,
@@ -70,7 +70,7 @@ status = simulate!(sim, verbose = true);
7070

7171
# ## Visualizer
7272
vis = ContactImplicitMPC.Visualizer()
73-
open(vis)
73+
ContactImplicitMPC.render(vis)
7474

7575
# ## Visualize
7676
anim = visualize_robot!(vis, model, sim.traj, sample=5);

examples/hopper/monte_carlo.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ function run_policy(s::Simulation; H_sim::Int = 4000, verbose = verbose,
4040
γ = [Diagonal(1.0e-100 * ones(model.dim.c)) for t = 1:H_mpc],
4141
b = [Diagonal(1.0e-100 * ones(model.dim.c * friction_dim(env))) for t = 1:H_mpc])
4242

43-
p = linearized_mpc_policy(ref_traj, s, obj,
43+
p = ci_mpc_policy(ref_traj, s, obj,
4444
H_mpc = H_mpc,
4545
N_sample = N_sample,
4646
κ_mpc = κ_mpc,
@@ -50,7 +50,7 @@ function run_policy(s::Simulation; H_sim::Int = 4000, verbose = verbose,
5050
max_iter = 5,
5151
max_time = ref_traj.h, # HARD REAL TIME
5252
),
53-
mpc_opts = LinearizedMPCOptions(
53+
mpc_opts = CIMPCOptions(
5454
),
5555
ip_opts = InteriorPointOptions(
5656
undercut = 5.0,
@@ -115,7 +115,7 @@ trajs = collect_runs(s, n = 100, H_sim = H_sim, verbose = true);
115115

116116
# ## Visualizer
117117
vis = ContactImplicitMPC.Visualizer()
118-
open(vis)
118+
ContactImplicitMPC.render(vis)
119119

120120
# ## Visualize
121121
anim = visualize_runs!(vis, s.model, trajs, α=0.1, sample=5)

examples/hopper/parkour.jl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ H_mpc = 10
3636
n_opts = NewtonOptions(
3737
r_tol = 3e-4,
3838
max_iter = 5)
39-
mpc_opts = LinearizedMPCOptions(
39+
mpc_opts = CIMPCOptions(
4040
altitude_update = true,
4141
altitude_impact_threshold = 0.1,
4242
altitude_verbose = true)
@@ -48,7 +48,7 @@ obj = TrackingVelocityObjective(s.model, s.env, H_mpc,
4848
γ = [Diagonal(1e-100 * ones(s.model.dim.c)) for t = 1:H_mpc],
4949
b = [Diagonal(1e-100 * ones(s.model.dim.c * friction_dim(s.env))) for t = 1:H_mpc])
5050

51-
p = linearized_mpc_policy(ref_traj, s, obj,
51+
p = ci_mpc_policy(ref_traj, s, obj,
5252
H_mpc = H_mpc,
5353
N_sample = N_sample,
5454
κ_mpc = κ_mpc,
@@ -57,7 +57,7 @@ p = linearized_mpc_policy(ref_traj, s, obj,
5757

5858
# ## Initial conditions (stairs)
5959
q1_sim = SVector{model.dim.q}(copy(ref_traj.q[2]))
60-
q0_sim = SVector{model.dim.q}(copy(q1_sim - (copy(ref_traj.q[2]) - copy(ref_traj.q[1])) / N_sample))
60+
q0_sim = SVector{model.dim.q}(copy(q1_sim - (copy(ref_traj.q[2]) - copy(ref_traj.q[1])) / N_sample));
6161

6262
# ## Simulator (stairs)
6363
sim_stair = ContactImplicitMPC.simulator(s_sim, q0_sim, q1_sim, h_sim, H_sim,
@@ -74,7 +74,7 @@ sim_stair = ContactImplicitMPC.simulator(s_sim, q0_sim, q1_sim, h_sim, H_sim,
7474

7575
# ## Visualizer
7676
vis = ContactImplicitMPC.Visualizer()
77-
open(vis)
77+
ContactImplicitMPC.render(vis)
7878

7979
# ## Visualize (stairs)
8080
anim = visualize_robot!(vis, model, sim_stair.traj, sample=10, name=:Sim, α=1.0)
@@ -102,7 +102,7 @@ obj = TrackingVelocityObjective(s.model, s.env, H_mpc,
102102
γ = [Diagonal(1e-100 * ones(s.model.dim.c)) for t = 1:H_mpc],
103103
b = [Diagonal(1e-100 * ones(s.model.dim.c * friction_dim(s.env))) for t = 1:H_mpc])
104104

105-
p = linearized_mpc_policy(ref_traj, s, obj,
105+
p = ci_mpc_policy(ref_traj, s, obj,
106106
H_mpc = H_mpc,
107107
N_sample = N_sample,
108108
κ_mpc = κ_mpc,

0 commit comments

Comments
 (0)