Skip to content

v0.3.0

Compare
Choose a tag to compare
@aaron-skydio aaron-skydio released this 01 Apr 21:27
e2ac9dc

📷 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

⛸️ 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

  • e48e590 Added pseudo huber noise model
  • 48a42c7 Isotropic and diagonal 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

👮🏼‍♀️ SkyMarshal

  • 4b8b9f3 Move _computeHash into class declaration
  • f5d2a13 Introduce #cpp_display notation for structs with primitive types