Skip to content

Commit 6ee2cb4

Browse files
author
Kevin Chen
committed
Imported SourceForce repo to hg. Created control-0.4a branch.
0 parents  commit 6ee2cb4

51 files changed

Lines changed: 10760 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

ChangeLog

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
2010-11-05 Richard Murray <murray@sumatra.local>
2+
3+
* external/yottalab.py: New file containing Roberto Bucher's control
4+
library functions. OK to start pulling these into the main library,
5+
with attribution, but note that they use modifications of the
6+
default library => some rewrites will be needed.
7+
8+
2010-09-11 Richard Murray <murray@sumatra.local>
9+
10+
* src/matlab.py (step): Added local step response function that uses
11+
lsim2() instead of signal.step (which can't handle integrators).
12+
This function may not be needed when new scipy step2() function is
13+
available.
14+
(impulse): Added local impulse response function that sets the
15+
initial condition based on the input matrix and then uses the
16+
lsim2() function to compute the response.
17+
18+
* examples/test-response.py: Added test script for making sure that
19+
time repsonse functions are working as desired
20+
21+
* src/matlab.py (lsim): Added local version of lsim that calls
22+
signal.lsim2 (actual ODE integrator)
23+
24+
2010-09-06 Richard Murray <murray@sumatra.local>
25+
26+
* src/statefbk.py (ctrb): new function for testing controllability
27+
* src/statefbk.py (obsv): new function for testing observabiilty
28+
29+
2010-09-02 Richard Murray <murray@sumatra.local>
30+
31+
* src/statefbk.py (place): Use np.size() instead of len() for
32+
finding length of placed_eigs for better compatability with
33+
different python versions [courtesy of Roberto Bucher]
34+
35+
* src/delay.py (pade): New file for delay-based computations +
36+
initial implementation of pade() [courtesy Sawyer Fuller]
37+
38+
2010-06-17 Richard Murray <murray@sumatra.local>
39+
40+
* src/rlocus.py: changed num, den to nump, denp for clarity
41+
* src/rlocus.py: new file with Ryan Krauss's root locus code
42+
43+
2010-06-06 Richard Murray <murray@sumatra.local>
44+
45+
* examples/pvtol-lqr.py: Added example to test out LQR routines
46+
47+
* src/matlab.py (bode): created a wrapper that allows MATLAB style
48+
arguments for bode (eg, bode(sys1, sys2))
49+
50+
* src/ctrlutil.py (issys): added new function to check if an object
51+
is a system (state space or transfer function). Will generalize
52+
this latter to look for other compatible classes.
53+
54+
* src/freqplot.py (bode): Compute frequency range of bode plot based
55+
on poles and zeros
56+
(bode): Allow bode plot to be passed a list (or tuple) as the first
57+
argument, in which case multiple bode plots are generated
58+
59+
* src/statesp.py (StateSpace.zeros): new function to compute zeros
60+
for a state space system
61+
(StateSpace): defined new functions to compute poles of a state
62+
space system
63+
64+
* src/xferfcn.py (TransferFunction): defined new functions to
65+
compute poles and zeros of a transfer function.
66+
67+
2010-05-31 Richard Murray <murray@sumatra.local>
68+
69+
* src/exception.py (ControlNotImplemented): added new exception, to
70+
be used for functions that are not yet implemented
71+
72+
* src/statefbk.py (lqr): added lqr function (using slycot). Still
73+
needs to be verified to make sure calculations are correct.
74+
75+
* ChangeLog: converted to standard GNU formation (old style below)
76+
* setup.py: updated package number to v0.3, changed URL to
77+
sourceforge wiki
78+
79+
------------------
80+
31 May 2010, RMM: added place() function using slycot
81+
* New module: statefbk - functions to design state feedback controllers
82+
* Uses Enrico Avventi slycot wrappers (http://github.com/avventi/Slycot)
83+
* Also added some exception types: ControlSlycot and ControlDimension
84+
* Added new example to test slycot interface (directly)
85+
86+
29 May 2010, RMM: updated function documentation
87+
* Added __doc__ strings for all current functions
88+
* Added __doc__ string to matlab module, listing control toolbox functions
89+
90+
22 May 2010, RMM: tweaked comments and released v0.3a
91+
* Changed copyright information on modified files to 2010
92+
* Updated "to do" comments to use "#! TODO:" as prefix
93+
94+
11 Feb 2010, GR: implemented and tested state space feedback
95+
15 Jan 2010, GR: added new example, improved bode
96+
97+
4 Jan 2010, GR: updated bode plots
98+
* made bode plot more like matlab
99+
* added options for plotting in dB, Hz
100+
101+
27 Dec 2009, GR: important bug fix: feedback TFs were being divided by two
102+
103+
10 Oct 09, RMM: reset matplotlib import in secord-matlab
104+
* Using 'from matplotlib import *' causes error with figures
105+
* On my other computer, got error when trying to import 'matplotlib.pyplot'
106+
* Need to sort out versions and figure out proper import structure
107+
108+
13 Sep 09, RMM: added basic state space functionality
109+
* Updated StateSpace routines to allow BD algebra with constants
110+
* Updated pvtol-nested example to try to use state space representation
111+
(not completely working yet)
112+
113+
12 Sep 09, RMM: code restructuring for transfer functions
114+
* Implemented feedback() method in bldalg; partially working
115+
for mixture of TF, SS and numbers (not thoroughly tested yet)
116+
* New feedback method for TransferFunctions
117+
* Updated gangof4 to use new feedback function
118+
119+
9 Sep 09, RMM: updated pzmap to generate a plot (turn off with Plot=False)
120+
121+
8 Sep 09, RMM: rewrite of xferfcn to handle type casting better
122+
* Appropriate functions now call convertToTransferFunction
123+
* Restricted transfer function to SISO only
124+
125+
7 Sep 09, RMM: additional fixes
126+
* Implemented block diagram operations for SISO transfer functions
127+
* Modified frequency response functions for transfer functions
128+
* Added rudimentary pole/zero computations
129+
* Added comments on things that need to be fixed (search for !)
130+
131+
5 Sep 09, RMM: updates to get standard examples working
132+
* Copied and converted pvtol_nested.py from AM08, Chapter 11
133+
* Updated freqresp to use poly1d for computing values
134+
* Added outputs to bode plot - return mag and phase subplot handles
135+
136+
2009-05-24 Richard Murray <murray@kona-2.local>
137+
* ./ Initial creation of package files and ChangeLog
138+
* Using simpler text format since emacs python mode doesn't support
139+
ChangeLog entries anyway
140+
141+
142+
Local Variables:
143+
mode:text
144+
End:

MANIFEST.in

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
include README
2+
include setup.py
3+
include src/*.py
4+
include examples/README examples/*.py
5+
prune examples/*-test.py

Pending

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
List of Pending changes for control-python
2+
RMM, 5 Sep 09
3+
4+
This file contains brief notes on features that need to be added to
5+
the python control library. Mainly intended to keep track of "bigger
6+
picture" things that need to be done.
7+
8+
--> See src/matlab.py for a list of MATLAB functions that eventually need
9+
to be implemented.
10+
11+
OPEN BUGS
12+
* step() doesn't handle systems with a pole at the origin (use lsim2)
13+
14+
Transfer code from Roberto Bucher's yottalab to python-control
15+
acker - pole placement using Ackermann method
16+
c2d - contimous to discrete time conversion
17+
full_obs - full order observer
18+
red_obs - reduced order observer
19+
comp_form - state feedback controller+observer in compact form
20+
comp_form_i - state feedback controller+observer+integ in compact form
21+
dsimul - simulate discrete time systems
22+
dstep - step response (plot) of discrete time systems
23+
dimpulse - imoulse response (plot) of discrete time systems
24+
bb_step - step response (plot) of continous time systems
25+
sysctr - system+controller+observer+feedback
26+
care - Solve Riccati equation for contimous time systems
27+
dare - Solve Riccati equation for discrete time systems
28+
dlqr - discrete linear quadratic regulator
29+
minreal - minimal state space representation
30+
31+
Transfer code from Ryan Krauss's control.py to python-control
32+
* phase margin computations (as part of margin command)
33+
* step reponse
34+
* c2d, c2d_tustin (compare to Bucher version first)
35+
36+
Examples and test cases
37+
* Put together unit tests for all functions (after deciding on framework)
38+
* Figure out how to import 'figure' command properly (version issue?)
39+
* Figure out source of BadCoefficients warning messages (pvtol-lqr and others)
40+
41+
TransferFunction class fixes
42+
* evalfr is not working (num, den stored as ndarrays, not poly1ds)
43+
44+
Block diagram algebra fixes
45+
* Implement state space block diagram algebra
46+
* Produce minimal realizations to avoid later errors
47+
48+
State space class fixes
49+
* Convert pvtol to state space systems and rerun example
50+
* Implement pzmap for state space systems
51+
52+
LTI updates
53+
* Implement control.matlab.step (with semantics similar to MATLAB)
54+
55+
Basic functions to be added
56+
* margin - compute gain and phase margin (no plot)
57+
* lqr - compute optimal feedback gains (use SLICOT SB02ND.f)
58+
* lyap - solve Lyapunov equation (use SLICOT SB03MD.f)
59+
* See http://www.slicot.org/shared/libindex.html for list of functions
60+
61+
----
62+
Instructions for building python package
63+
* python setup.py build
64+
* python setup.py install
65+
* python setup.py sdist

README

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
Python Control System Library
2+
RMM, 23 May 09
3+
4+
This directory contains the source code for the Python Control Systems
5+
Library (python-control). This library is still under development,
6+
but is intended to serve as a wrapper for standard control system
7+
algorithms in the python programming environment.
8+
9+
Installation instructions
10+
-------------------------
11+
Standard python package installation:
12+
13+
python setup.py install
14+
15+
To see if things are working, you can run the script
16+
examples/secord-matlab.py (using ipython -pylab). It should generate
17+
a step response, Bode plot and Nyquist plot for a simple second order
18+
linear system.

0 commit comments

Comments
 (0)