Consistent design of states, Jacobians and covariances
We have an inconsistent design, and I think this is bad for us.
Currently, we have:
-
States: treated in different ways, as
- a) Eigen vectors,
VectorXd
- b) States as block composites (see #287 (closed) ), and
- c) individual state blocks
- a) Eigen vectors,
-
Jacobians: they are all full matrices related to the states of type a)
VectorXd
- Covariances: they organized by blocks, and stored in maps indexed by the pointers of each state block
Regarding 1), we are removing the a) VectorXd
version (see issues #285 (closed) and #287 (closed)). What will remain is b) state composites formed by the vectors of each state block, and indexed by a key which is a string. This is being implemented in #287 (closed).
Regarding 2) I think we could switch to Jacobian blocks, one per state block pair, and operate based on blocks. Following 1) above, these jacobian blocks would be indexed by the same key pairs, that is, <string, string>. However, this involves many modifications and I am unsure of the pertinence of the change...
Regarding 3), the design is OK, we are already considering blocks, but the indexing is not via the state block pointers, and not the key strings. We could possibly fix this.