I am somewhat familiar with Ceres and GTSAM. Can you explain how it differs from these? What are the key features of SymForce that make it stand out?
I am somewhat familiar with Ceres and GTSAM. Can you explain how it differs from these? What are the key features of SymForce that make it stand out?
The main comparison is that in SymForce one writes symbolic expressions in Python, and generates runtime code. In GTSAM and Ceres you write C++ code. This is really nice for exploration and code maintainability. SymForce also has a powerful system of automatically competing tangent space Jacobians that is more elegant and powerful than what the alternatives offer. Finally, SymForce has the benefit of a fresh implementation using the other libraries as a reference, and I think we were able to get better performance by greatly improving memory access patterns and designing functional APIs with solid abstractions (in the C++ optimization library). You can see this with the benchmarks described in detail in the paper.