Open bradley-solliday-skydio opened 1 year ago
Reviews in this chain: └https://github.com/symforce-org/symforce/pull/295 Simplify geo_factors_codegen w/ skip_dir_nesting └https://github.com/symforce-org/symforce/pull/294 Add diagonal & isotropic sqrt_infos in geo factors
# | head | base | diff | date | summary |
---|---|---|---|---|---|
0 | 50c4a3af | f9a6f2d0 | diff | Jan 20 16:14 PM | 57 files changed, 9704 insertions(+), 3915 deletions(-) |
1 | cf820425 | f9a6f2d0 | diff | Jan 20 17:06 PM | 43 files changed, 1 insertion(+), 1 deletion(-) |
2 | 8e775eea | f9a6f2d0 | diff | Feb 1 10:39 AM | 57 files changed, 211 insertions(+), 196 deletions(-) |
Often times the square root information matrix is a diagonal or isotropic matrix. However, in our generated geo factors we always assume they are full dense matrices leading to many more operations than needed.
This commit modifies
geo_factors_codegen.py
to create 3 variants for each geo factor, one which assumessqrt_info
is a square matrix (the existing behavior), one which assumes it is a diagonal matrix, and one which assumes it is an isotropic matrix.These variants will have the same base name, with nothing appended to the square variant,
Diagonal
appended to the diaognal variant, andIsotropic
appended to the isotropic covariant. They cannot have the same name, as even though we only generate the factors in C++ which has function overloading, disambiguating the overloads is a pain when constructingsym::Factor
s. The square version takes a square eigen matrix, the diagonal version a eigen vector whose entries are those of the diagonal ofsqrt_info
, and a single scalar for the isotropic version.The header that the user imports remains the same, except now rather than containing the implementation directly, it re-imports the headers for the 3 different versions (which are stored in sub-directories).
Topic: sqrt_info_variants Relative: geo_factors_use_skip_directory_nesting