Skip to content

Commit 394e1c2

Browse files
authored
Merge pull request #1135 from roryyorke/rory/lint-examples
Lint fixes on benchmarks and examples/*.py
2 parents ad996f9 + 5653531 commit 394e1c2

17 files changed

+53
-76
lines changed

benchmarks/flatsys_bench.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
import numpy as np
99
import math
10-
import control as ct
1110
import control.flatsys as flat
1211
import control.optimal as opt
1312

benchmarks/optestim_bench.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
# used for optimization-based estimation.
77

88
import numpy as np
9-
import math
109
import control as ct
1110
import control.optimal as opt
1211

benchmarks/optimal_bench.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
# performance of the functions used for optimization-base control.
77

88
import numpy as np
9-
import math
109
import control as ct
1110
import control.flatsys as fs
1211
import control.optimal as opt
@@ -21,7 +20,6 @@
2120
'RK23': ('RK23', {}),
2221
'RK23_sloppy': ('RK23', {'atol': 1e-4, 'rtol': 1e-2}),
2322
'RK45': ('RK45', {}),
24-
'RK45': ('RK45', {}),
2523
'RK45_sloppy': ('RK45', {'atol': 1e-4, 'rtol': 1e-2}),
2624
'LSODA': ('LSODA', {}),
2725
}
@@ -129,9 +127,6 @@ def time_optimal_lq_methods(integrator_name, minimizer_name, method):
129127
Tf = 10
130128
timepts = np.linspace(0, Tf, 20)
131129

132-
# Create the basis function to use
133-
basis = get_basis('poly', 12, Tf)
134-
135130
res = opt.solve_ocp(
136131
sys, timepts, x0, traj_cost, constraints, terminal_cost=term_cost,
137132
solve_ivp_method=integrator[0], solve_ivp_kwargs=integrator[1],
@@ -223,8 +218,6 @@ def time_discrete_aircraft_mpc(minimizer_name):
223218
# compute the steady state values for a particular value of the input
224219
ud = np.array([0.8, -0.3])
225220
xd = np.linalg.inv(np.eye(5) - A) @ B @ ud
226-
yd = C @ xd
227-
228221
# provide constraints on the system signals
229222
constraints = [opt.input_range_constraint(sys, [-5, -6], [5, 6])]
230223

@@ -234,7 +227,6 @@ def time_discrete_aircraft_mpc(minimizer_name):
234227
cost = opt.quadratic_cost(model, Q, R, x0=xd, u0=ud)
235228

236229
# Set the time horizon and time points
237-
Tf = 3
238230
timepts = np.arange(0, 6) * 0.2
239231

240232
# Get the minimizer parameters to use

examples/bdalg-matlab.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
# bdalg-matlab.py - demonstrate some MATLAB commands for block diagram altebra
1+
# bdalg-matlab.py - demonstrate some MATLAB commands for block diagram algebra
22
# RMM, 29 May 09
33

4-
from control.matlab import * # MATLAB-like functions
4+
from control.matlab import ss, ss2tf, tf, tf2ss # MATLAB-like functions
55

66
# System matrices
77
A1 = [[0, 1.], [-4, -1]]

examples/check-controllability-and-observability.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
RMM, 6 Sep 2010
55
"""
66

7-
import numpy as np # Load the scipy functions
8-
from control.matlab import * # Load the controls systems library
7+
import numpy as np # Load the numpy functions
8+
from control.matlab import ss, ctrb, obsv # Load the controls systems library
99

1010
# Parameters defining the system
1111

examples/cruise-control.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,6 @@ def pi_update(t, x, u, params={}):
247247
# Assign variables for inputs and states (for readability)
248248
v = u[0] # current velocity
249249
vref = u[1] # reference velocity
250-
z = x[0] # integrated error
251250

252251
# Compute the nominal controller output (needed for anti-windup)
253252
u_a = pi_output(t, x, u, params)
@@ -394,7 +393,7 @@ def sf_output(t, z, u, params={}):
394393
ud = params.get('ud', 0)
395394

396395
# Get the system state and reference input
397-
x, y, r = u[0], u[1], u[2]
396+
x, r = u[0], u[2]
398397

399398
return ud - K * (x - xd) - ki * z + kf * (r - yd)
400399

@@ -440,13 +439,13 @@ def sf_output(t, z, u, params={}):
440439
4./180. * pi for t in T]
441440
t, y = ct.input_output_response(
442441
cruise_sf, T, [vref, gear, theta_hill], [X0[0], 0],
443-
params={'K': K, 'kf': kf, 'ki': 0.0, 'kf': kf, 'xd': xd, 'ud': ud, 'yd': yd})
442+
params={'K': K, 'kf': kf, 'ki': 0.0, 'xd': xd, 'ud': ud, 'yd': yd})
444443
subplots = cruise_plot(cruise_sf, t, y, label='Proportional', linetype='b--')
445444

446445
# Response of the system with state feedback + integral action
447446
t, y = ct.input_output_response(
448447
cruise_sf, T, [vref, gear, theta_hill], [X0[0], 0],
449-
params={'K': K, 'kf': kf, 'ki': 0.1, 'kf': kf, 'xd': xd, 'ud': ud, 'yd': yd})
448+
params={'K': K, 'kf': kf, 'ki': 0.1, 'xd': xd, 'ud': ud, 'yd': yd})
450449
cruise_plot(cruise_sf, t, y, label='PI control', t_hill=8, linetype='b-',
451450
subplots=subplots, legend=True)
452451

examples/kincar.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
import numpy as np
55
import matplotlib.pyplot as plt
6-
import control as ct
76
import control.flatsys as fs
87

98
#

examples/mrac_siso_mit.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ def adaptive_controller_state(t, xc, uc, params):
4646
# Parameters
4747
gam = params["gam"]
4848
Am = params["Am"]
49-
Bm = params["Bm"]
5049
signB = params["signB"]
5150

5251
# Controller inputs

examples/phase_plane_plots.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,8 @@
55
# using the phaseplot module. Most of these figures line up with examples
66
# in FBS2e, with different display options shown as different subplots.
77

8-
import time
98
import warnings
10-
from math import pi, sqrt
9+
from math import pi
1110

1211
import matplotlib.pyplot as plt
1312
import numpy as np

examples/pvtol-nested-ss.py

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
import os
1212
import matplotlib.pyplot as plt # MATLAB plotting functions
13-
from control.matlab import * # MATLAB-like functions
1413
import numpy as np
1514
import math
1615
import control as ct
@@ -23,12 +22,12 @@
2322
c = 0.05 # damping factor (estimated)
2423

2524
# Transfer functions for dynamics
26-
Pi = tf([r], [J, 0, 0]) # inner loop (roll)
27-
Po = tf([1], [m, c, 0]) # outer loop (position)
25+
Pi = ct.tf([r], [J, 0, 0]) # inner loop (roll)
26+
Po = ct.tf([1], [m, c, 0]) # outer loop (position)
2827

2928
# Use state space versions
30-
Pi = tf2ss(Pi)
31-
Po = tf2ss(Po)
29+
Pi = ct.tf2ss(Pi)
30+
Po = ct.tf2ss(Po)
3231

3332
#
3433
# Inner loop control design
@@ -40,68 +39,68 @@
4039

4140
# Design a simple lead controller for the system
4241
k, a, b = 200, 2, 50
43-
Ci = k*tf([1, a], [1, b]) # lead compensator
42+
Ci = k*ct.tf([1, a], [1, b]) # lead compensator
4443

4544
# Convert to statespace
46-
Ci = tf2ss(Ci)
45+
Ci = ct.tf2ss(Ci)
4746

4847
# Compute the loop transfer function for the inner loop
4948
Li = Pi*Ci
5049

5150

5251
# Bode plot for the open loop process
5352
plt.figure(1)
54-
bode(Pi)
53+
ct.bode(Pi)
5554

5655
# Bode plot for the loop transfer function, with margins
5756
plt.figure(2)
58-
bode(Li)
57+
ct.bode(Li)
5958

6059
# Compute out the gain and phase margins
6160
#! Not implemented
6261
# (gm, pm, wcg, wcp) = margin(Li);
6362

6463
# Compute the sensitivity and complementary sensitivity functions
65-
Si = feedback(1, Li)
64+
Si = ct.feedback(1, Li)
6665
Ti = Li*Si
6766

6867
# Check to make sure that the specification is met
6968
plt.figure(3)
70-
gangof4(Pi, Ci)
69+
ct.gangof4(Pi, Ci)
7170

7271
# Compute out the actual transfer function from u1 to v1 (see L8.2 notes)
7372
# Hi = Ci*(1-m*g*Pi)/(1+Ci*Pi);
74-
Hi = parallel(feedback(Ci, Pi), -m*g*feedback(Ci*Pi, 1))
73+
Hi = ct.parallel(ct.feedback(Ci, Pi), -m*g*ct.feedback(Ci*Pi, 1))
7574

7675
plt.figure(4)
7776
plt.clf()
78-
bode(Hi)
77+
ct.bode(Hi)
7978

8079
# Now design the lateral control system
8180
a, b, K = 0.02, 5, 2
82-
Co = -K*tf([1, 0.3], [1, 10]) # another lead compensator
81+
Co = -K*ct.tf([1, 0.3], [1, 10]) # another lead compensator
8382

8483
# Convert to statespace
85-
Co = tf2ss(Co)
84+
Co = ct.tf2ss(Co)
8685

8786
# Compute the loop transfer function for the outer loop
8887
Lo = -m*g*Po*Co
8988

9089
plt.figure(5)
91-
bode(Lo, display_margins=True) # margin(Lo)
90+
ct.bode(Lo, display_margins=True) # margin(Lo)
9291

9392
# Finally compute the real outer-loop loop gain + responses
9493
L = Co*Hi*Po
95-
S = feedback(1, L)
96-
T = feedback(L, 1)
94+
S = ct.feedback(1, L)
95+
T = ct.feedback(L, 1)
9796

9897
# Compute stability margins
9998
#! Not yet implemented
10099
# (gm, pm, wgc, wpc) = margin(L);
101100

102101
plt.figure(6)
103102
plt.clf()
104-
out = ct.bode(L, logspace(-4, 3), initial_phase=-math.pi/2)
103+
out = ct.bode(L, np.logspace(-4, 3), initial_phase=-math.pi/2)
105104
axs = ct.get_plot_axes(out)
106105

107106
# Add crossover line to magnitude plot
@@ -111,7 +110,7 @@
111110
# Nyquist plot for complete design
112111
#
113112
plt.figure(7)
114-
nyquist(L)
113+
ct.nyquist(L)
115114

116115
# set up the color
117116
color = 'b'
@@ -126,10 +125,10 @@
126125
# 'EdgeColor', color, 'FaceColor', color);
127126

128127
plt.figure(9)
129-
Yvec, Tvec = step(T, linspace(1, 20))
128+
Yvec, Tvec = ct.step_response(T, np.linspace(1, 20))
130129
plt.plot(Tvec.T, Yvec.T)
131130

132-
Yvec, Tvec = step(Co*S, linspace(1, 20))
131+
Yvec, Tvec = ct.step_response(Co*S, np.linspace(1, 20))
133132
plt.plot(Tvec.T, Yvec.T)
134133

135134
#TODO: PZmap for statespace systems has not yet been implemented.
@@ -142,7 +141,7 @@
142141
# Gang of Four
143142
plt.figure(11)
144143
plt.clf()
145-
gangof4(Hi*Po, Co, linspace(-2, 3))
144+
ct.gangof4(Hi*Po, Co, np.linspace(-2, 3))
146145

147146
if 'PYCONTROL_TEST_EXAMPLES' not in os.environ:
148147
plt.show()

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy