Mathematica® packages for simple mechanical control systems

Francesco Bullo and Andrew D. Lewis

The Mathematica® packages here have been developed along the lines of the book Geometric Control of Mechanical Systems. These packages are offered freely under the provisions of the GNU Public License. The authors are not professional, or even very knowledgeable, Mathematica® programmers. We therefore encourage development of these packages, provided these activities are as authorized by the license (e.g., do not develop these, and then commercialize the result).

While we encourage feedback concerning these packages, and will do our best to fix errors and/or improve the code, we make no guarantees that we will be able to respond to all feedback in a timely and/or useful manner. Having said that, do feel free to contact us:

  1. Francesco Bullo: bullo at;
  2. Andrew Lewis: andrew at

The packages are:
[Affine.m] [DerivativeOptions.m] [SMCS.m] [Tensors.m]
(The package DerivativeOptions is loaded by Tensors, but has no function worth documenting.)

There are also Mathematica® notebooks that have been developed to illustrate how the packages are to be used:
[affine.nb] [SMCS.nb] [snakeboard.nb] [tensors.nb]

The notebooks have LaTeX commands in the text, and some of these are macros that are special to the book. However, these should be sufficiently transparent that they will cause no confusion.

The manual (i.e., a concatenation of the above notebooks, converted to LaTeX) is included in the supplementary material for the book Geometric Control of Mechanical Systems.