Software

From FBSwiki
Jump to: navigation, search

A wealth of software is available for analysis, design and implementation of feedback systems. This page contains information on some of the software that is being developed to support the analysis and design techniques described in Feedback Systems.

MATLAB/LabView tools

Some specialized scripts have been developed to produce plots that match the style in Feedback Systems. These scripts can be used in MATLAB, LabView or compatible tools.

  • amaxis.m: alternative version of axis command
  • ambode.m: alternative version of bode command (gain in powers of 10)
  • amnyquist.m: alternative version of the nyquist command with better labeling and treatment of imaginary poles
  • amphaseplot.m: function to generate phase plots. This command uses several helper functions:
    • arrow.m - function to generate customized arrowheads (from MATLAB Central)
    • amquiver.m - modified version of MATLAB quiver command (uses arrow.m)
    • boxgrid.m (optional) - function to generate a grid of initial conditions
  • aminit.m - some of the simulations and examples require a few extra definitions that are included in this file
  • arcarrow.m - generate an arc shaped arrow for annotating plots

You can use these functions by simply copying them into a directory that is in your MATLAB or LabView path. For your convenience, these files are also available as a single zip file or tar file.

MATLAB code for many of the examples used in the text can be found on the Additional Examples page. Some of these examples make use of the additional scripts below, which you should install in the working directory or MATLAB path:

  • amsetup.m - defines a bunch of variables that are used to set the style guidelines for the text.
  • amprint.m - this function is used to generate PostScript plots for the book in the proper format. If the AMPRINT_FLAG flag is zero (the default value), no file will be generated.

Python Control Systems Library

A library of functions for analysis and design of control systems is being developed for use in the Python programming language. The python-control package is an open source project that is intended to implement the standard control system functions. More information is available at:

The current release of this software includes the ability to plot Bode plots and Nyquist diagrams, as well as LQR design.

Sparrow Real-Time Control Libraries

The Sparrow project at Caltech is developing a collection of open source C/C++ libraries for implementing real-time controllers on Linux-based data acquisition & control systems. Two low-level libraries that allow implementation of the controllers described in Feedback Systems are available:

  • Sparrow - a real-time library that supports control loops, device interfaces, real-time displays
  • Falcon - a library for implementing standard control techniques such as state space compensators and Kalman filters. (The linux version of the falcon library will be released in the near future.)

In addition, some more advanced libraries are being developed for use in networked control environments:

  • Skynet - a messaging library for communication between processing using the Spread communications protocol
  • NTG - nonlinear trajectory generation library, including receding horizon control (RHC)

Other Software Packages

General Purpose Modeling and Analysis Tools

  • Modelica - non-proprietary, object-oriented, equation based language to model complex physical systems
  • JModelica - extensible Modelica-based open source platform for optimization, simulation and analysis
  • SIMULINK (MathWorks) - block diagram-based simulation package
  • Sage - open-source mathematics software system that combines existing open-source packages into a common Python-based interface

Control Analysis and Design

Control Implementation Libraries

  • Comedi - Linux control and measurement interface; device drivers for data acquisition cards
  • Linux in Control - a collection of software and MATLAB files used in Lund for implementing controllers in Linux, using MATLAB
  • Real-Time Control Systems Library (NIST)
  • ROS - open-source, meta-operating system for robotics applications