v0.3.0
📷 Support for CameraCal types in C++ Values and optimizations
You can now use camera calibration objects directly as inputs to Factors for optimization, either as optimized variables or as constants.
- 1db2d85 camera cals in cc_sym.Values
- 73af9cc Add camera cals to python sym
- c230173 Auto-generate C++ cam cal constructors
- 523b5a1 Rework camera cal constructors
- f7987ee Add camera cal types to BY_TYPE_HELPER
- b26be84 Define template specializations of [Lie]GroupOps for camera cals in C++
- e43406e Register CameraCal with LieGroupOps in python
- 2509e29 Add all the camera cals to types_t and define TypeEnum
🐍 More support for dataclasses
We recently added some support for using Dataclasses in various places, such as in Values
and with Ops
. We've now added more thorough support for them in more places:
- dd017bf Fixed size dataclass ops with sequences
- 184238d Added ops support for NoneTypes so that Dataclasses can have optional fields
- 4a079ce Added Group and Lie Group Ops for Dataclasses
- 05debd6 Added better support for indexing dataclasses stored in Values objects
- db4585f Added clearer error message for dynamically created dataclasses stored in Values objects
🎲 Lots more examples and benchmarks
- ea6c6a4 Examples and Benchmarks
⛸️ std::complex
in generated C++ code
Generated C++ functions can now handle complex scalars! If the support_complex
flag is true, generated functions will be allowed to contain complex constants and otherwise work correctly if instantiated with Scalar = std::complex<T>
.
- 94d37e9 Add support for std::complex in C++ functions
⏱️ Code generation performance improvements
Some changes to speed up code generation by eliminating a lot of unnecessary work
- c26926d [SymEngine] Add
symbols
argument to CSE - 45c4eb3 Cache generated residuals in Factor
- 2294616 Cache jinja environment
- d8563ed Speed up assert in Codegen construction
- 6a4fb41 Don't autoformat python, for real
- 3e13c3a Speed up symforce_py_optimizer_test.py
- d907c37 Lazily print code in Codegen
- 630e0d3 codegen exposes an option to disable autoformatting
🧮 Barrier functions for optimization
A set of functions with standard interfaces to make it easy to create soft constraints in optimization problems
- d8300cb Added min/max centering barrier function
- cd04ffd Added one-sided barrier functions
- 1149e8a Min/max barrier function
- 93a8727 Added symmetric barrier function
🎶 More noise models
✍🏼 Documentation
- 90bdf74 Add missing docstrings for cc_sym
- f93ae35 Add docstrings for cc_sym.Key
- d5c66f3 Add module-level docstring to cc_sym
- 958b098 Get cc_sym docs to generate correctly
- 8dba435 Fix custom jacobian func argument name, docstring
- f0d5922 Update comment on index_entry_t.offset
🎁 Misc other changes
- 1fabece ComputeKeysToOptimize defaults comparator to LexicalLessThan
- f89f60d add in databuffer + databuffer element to symengine
- efe830e fix bug w/ symengine floor + ceil
- 367beef Add omega property to ATANCameraCal
- e4834f0 Added "length" metadata reader to timestep sub problem
- d93c486 Tie tic tocs to log level
- 8d94d38 Enable setting c++ log level from python
- 9317314 Add property setters for DoubleSphereCC
- 38f89cc Consolidate version numbers
- c04b86a Pose2 tangent space matches Pose3
- 88192d9 count ops after sympy-ification
- 7d4f5c5 Replace sympy.count_ops w/ better impl
- 202affc Remove extra quote in CLASS.py.jinja
- ff98cd4 Wrap Optimizer.factors
- 6e879fa Wrap Factor.IsSparse in cc_sym
- 77e34c9 Add Rot2.from_angle
- 12f6025 Better variable naming in opt factor construction
- ccef9e6 Improve symengine.count_ops
- 8f645a9 Misc documentation and EAP fixes
- a2fa9ae Changed "assertNear" to "assertStorageNear"
- c5ee7aa compute_jacobians is a method of ResidualBlock
- 8484b2d Implemented group and lie group ops for ndarrays.
- e2049f9 Add custom jacobian support to OptimizationProblem
- 83a9be4 Add function to fetch variable position in problem ordering
- 3c9dc21 Update license to Apache 2.0
- faf77d2 Add option to prune the values object used for optimization.
- 93cb131 Added support for pickling and unpickling Values objects
- 3cf8854 change Matrix.dot to only support vector dot product
- 36ebdde Default C++ log level to warning
- 67f99e4 Downgrade METIS