Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add optimization to flat systems trajectory generation #569

Merged
merged 7 commits into from Mar 19, 2021

Conversation

murrayrm
Copy link
Member

This PR adds the ability to generate trajectories for differential flat systems taking into account cost functions and constraints, in a manner that is consistent with the control.optimal module. In particular, you can now call flat.point_to_point with cost and constraints keywords. The code then uses any extra degrees of freedom in the flat trajectory to minimize cost and satisfy constraints at a list of time points. For differentially flat systems, this method is much faster than solving an optimal control problem with terminal constraints.

I also found and fixed some docstring glitches and naming inconsistencies in control.optimal along the way (these are all minor and don't change behavior. Unit tests, examples, and updated documentation are included.

This commit allows a cost function and constraints to be passed to the
flatsys point_to_point() function and when present will use sp.optimize to
find a trajectory.  Preliminary unit tests, benchmarks, docstrings and
documentation also in place.

Switched the order of arguments in point_to_point() so that Tf (or timepts)
now comes before the initial and final states, consistent with ordering
elsewhere in the package.

Make some small updates to optimal.py docstrings and argument names to make
things consistent with flatsys.
This commit changes the way that cost functions and constraints are handled
for flat system to carry out optimization only in the null space of the flat
system basis coefficients, eliminating the use of an equality constraint for
the terminal condition.
@coveralls
Copy link

Coverage Status

Coverage increased (+0.2%) to 89.027% when pulling 0c1d638 on murrayrm:optimal_flatsys into 0f951e1 on python-control:master.

@murrayrm murrayrm added this to the 0.9.x milestone Mar 13, 2021
@sawyerbfuller
Copy link
Contributor

I am not in a position to evaluate this at the moment, but my inclination would be to merge and include with 0.9 so people can play with it/find rough edges sooner rather than later.

@murrayrm murrayrm merged commit c3c6596 into python-control:master Mar 19, 2021
@murrayrm murrayrm deleted the optimal_flatsys branch March 20, 2021 00:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants