buntonj / polynomial_observers Goto Github PK
View Code? Open in Web Editor NEWPolynomial observers: a Savitzky-Golay filter for estimating the derivatives of an output signal, then using it to estimate the state of a nonlinear dynamical system.
Polynomial observers: a Savitzky-Golay filter for estimating the derivatives of an output signal, then using it to estimate the state of a nonlinear dynamical system.
Add process to optimize the bound expression over all choices of integer inter-sample spacings.
Right now, simulation fitting error bound requires stepping through polynomial error bound. Can we make one that is indpendent?
Currently only compares directly in output space. For integrator systems, this map is the identity, but other nonlinear systems will need more custom maps
Savitzky-Golay filtering uses polynomials (in time) as a basis and fits them to windows of data. As the polynomial degree grows, however, this fitting can become ill-conditioned.
We could instead use simulation traces of the nonlinear ODE as a basis, and fit linear combinations of the simulation traces to the output trajectory. This could be more well-posed (and tailored to the system), at the cost of having to simulate the system.
Right now we just have a few dummy ODE's with no inputs. Try some more exciting robots:
Write a Mathematica script to compute the value of the bound for a given polynomial degree
Need to clean and update the write up to include all aspects of the theory we've written so far.
Ackerman model contains angle states, which need to be wrapped to live within
For numerical stability, fit and differentiate the polynomials with centered values. Fitting might already be implemented by numpy's polynomial class (check).
When using this for control, we will need to evolve the state estimate forward in time to accommodate the delay caused by this approach.
currently, we use the map guaranteed by differential observability to invert outputs + derivatives to states, but under linear outputs we may be able to directly invert any polynomial output trajectory into a polynomial state trajectory to make regression easier.
We proved that there is a function from polynomial fitting residual to estimation error, also proved a global "flat-line" bound on the estimation error. Need to see how tight these bounds are in some examples so we can see how useful they might be in practice
Choice of subset
Right now outputs must be a single scalar, need to add support for fitting multi-dimensional polynomials up to a given degree
Currently, bound relies on dividing powers of
Re-implement with numpy's built-in polynomial fitting tools, rather than home-brewed versions I wrote.
examples:
Analyze how noisy signals impact the guarantee we can give. Can we do some sort of "mollification" or smoothing like Grizzle/Diop suggest? If so, how does that impact the guarantee?
ODE examples are currently just a pile of function handles. Should convert to classes with member functions, then hand these class objects to the regression/fitting classes for easier access to things like "output inversion" and "output derivative" expressions
Prove (or disprove) estimation error is bounded by a
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.