Skip to content

Releases: facebookresearch/theseus

0.2.2

11 Sep 17:13
e160076
Compare
Choose a tag to compare

What's Changed

  • Fixed bug in BaspachoSparseSolver preventing CPU usage if torch cuda available by @luisenp in #585
  • Added commented out tests back to baspacho solver tests. by @luisenp in #586
  • Yipuz.more robust loss by @YipuZhao in #581
  • Update CI executor for GPU by @luisenp in #608
  • Removed duplicate error computation in Local class by @luisenp in #607
  • Modify Objective::_erase_function_variables(...) to also delete varia… by @Hesam-Vayu in #612
  • Update pre-commit hooks and fix mypy errors by @luisenp in #610
  • Objective.to() and TheseusLayer.to() now return self and support "cuda". by @luisenp in #623
  • Improves to Timer and Profiler utils by @luisenp in #628
  • Faster log map implementation by @luisenp in #629
  • Fix broken backward graph when using LieTensor.exp() by @luisenp in #631
  • Fix track best solution in nonlinear optimizer with matrix vars and implicit diff by @luisenp in #637
  • Fix broken tests by @luisenp in #658
  • Speedup VariableOrdering.append from O(N^2) to O(N) by @ahojnnes in #657
  • Add EPS for sqrt in SO3 to_quaternion by @luisenp in #661
  • link fix in readme by @mhmukadam in #662

New Contributors

Full Changelog: 0.2.1...0.2.2

0.2.1

21 Jul 16:34
Compare
Choose a tag to compare

Major Updates

  • Temporarily fixed a bug for vmap by @fantaosha in #562
  • fixed a bug in prismatic joint by @fantaosha in #568
  • Added fallback for implicit mode if Gauss-Newton fails in the last step by @luisenp in #579

Other Changes

Full Changelog: 0.2.0...0.2.1

0.2.0

28 Jun 05:05
Compare
Choose a tag to compare

This release brings Theseus to PyTorch >= 2.0.0 and updates backends for differentiable Lie groups and differentiable kinematics with the new streamlined and more efficient torchlie and torchkin from our team. Both torchlie and torchkin are independent PyPI installable libraries that are released as 0.1.0 along with this Theseus release.

Major Updates

Other Changes

  • Detach the derivative though the Hessian by @bamos in #425
  • Using resource_class:xlarge for complex CPU unit tests in CI. by @luisenp in #447
  • Fixed error that was preventing requirements versions to be used in setup by @luisenp in #448
  • Update to isort 5.11.5 in precommit. by @luisenp in #453
  • Modified build scripts to support nightly packages. by @luisenp in #467
  • Added SignedDistanceField2D.to() by @luisenp in #468
  • Add a unit test to check the PGO loss values automatically by @luisenp in #456
  • Minor fixes to motion planner code. by @luisenp in #469
  • Change in data model in test_theseus_layer by @dishank-b in #477
  • Change HingeCost to receive more flexible limits by @luisenp in #491
  • Added experimental option allowing a variables to be both optim. and aux. by @luisenp in #492
  • Made the optimizer configurable in the MotionPlanner. by @luisenp in #493
  • Allow vmap to work on th.SE3 log_map by @rmurai0610 in #495
  • Made the threshold for converting occupancy -> SDF configurable. by @luisenp in #498
  • Make SDF boundary value configurable by @rmurai0610 in #500
  • Fixed convergence check error in DCEM with negative error metrics. by @luisenp in #510
  • Added an option to flatten_dims in RobustCostFunction. by @luisenp in #503
  • Update pre-commit versions and skip failing mypy import tests. by @luisenp in #518
  • Rename check functions by @fantaosha in #516
  • Fix installing from source on Windows by explicitly mentioning cusparse in setup.py by @aiddun in #534
  • Migrate SO3 (reissue) by @luisenp in #539
  • Migrate SE3 backend to torchlie by @luisenp in #526
  • Unit tests for left_project with broadcasting by @luisenp in #527
  • Added configurable global options for torchlie and theseus by @luisenp in #528
  • Adding some docs by @luisenp in #529
  • Add other autograd options for AutoDiffCostFunction by @luisenp in #532
  • Fix package info for building wheel by @luisenp in #533
  • Fix SO3 rotate check by @luisenp in #541
  • Add kwarg to disable manifold checks in constructor by @luisenp in #540
  • Add extra eps for dlog by @fantaosha in #544
  • Change Lie group import to torchlie by @luisenp in #545
  • Fix a bug un precommit that was preventing isort and black from being run by @luisenp in #546
  • Rename GlobalOptions as Params and remove duplication of some of them with torchlie by @luisenp in #547
  • Removed Objective.error_squared_norm() by @luisenp in #548
  • Add README for torchlie by @luisenp in #549
  • transform_from -> transform by @fantaosha in #551
  • Add untransform by @fantaosha in #552
  • Add d_near_zero to SE2 by @fantaosha in #553
  • update torchlie readme by @mhmukadam in #557
  • update theseus readme by @mhmukadam in #558
  • Add torchkin example by @fantaosha in #559
  • Update build_wheel.sh to properly use created conda environment by @JingyuQian in #561

Development in labs Package

New Contributors

Full Changelog: 0.1.4...0.2.0

0.1.4

19 Jan 20:10
595f64e
Compare
Choose a tag to compare

This code release is also associated with arXiv v3 paper release.

Major Updates

  • Add sparse solvers support to LM adaptive damping by @luisenp in #360
  • Add a differentiable sparse matrix vector product on top of our ops by @luisenp in #392
  • Dogleg by @luisenp in #371
  • Add support for masking jacobians of zero weights in the batch by @luisenp in #398
  • Add a labs package for experimental stuff by @luisenp in #424

Other Changes

  • Minor vmap fix in SO2 by @luisenp in #362
  • Change Objective.error() so it can be vectorized w/o changing vectorized cache by @luisenp in #363
  • Added missing square in test_theseus_layer loss. by @luisenp in #372
  • Add proper accept/reject logic for LM optimizer by @luisenp in #364
  • Cleaned up sparse solvers code by @luisenp in #386
  • Remove softmax from end to end test and do some clean up by @luisenp in #389
  • Add a workaround for NonlinearOptimizer rejecting all batch steps by @luisenp in #388
  • Add code to automatically pick number of LUCuda contexts by @luisenp in #390
  • Bug fix in NonlinearOptimizer.reset() when using LUCudaSparseSolver by @luisenp in #396
  • Allow float data to be used with our sparse solver extensions by @luisenp in #391
  • Add diagonal scaling method and re-enable LM adaptive + ellipsoidal by @luisenp in #393
  • Add a timer util that adapts to a torch.device. by @luisenp in #399
  • Made torch's CUDA_GCC_VERSION check optional in setup.py. by @luisenp in #387
  • Fix black and wheel script errors by @luisenp in #421
  • Fix bug in Vectorization of autodiff costs. by @luisenp in #400
  • Objective.error() no longer updates vectorization if also_update=False. by @luisenp in #401
  • update flake8 to github by @bamos in #428
  • Use IMPLICIT for test_theseus_layer and fix related bugs by @luisenp in #431
  • Remove nox dependency by @luisenp in #436
  • Bumped version to 0.1.4. by @luisenp in #435

Development in labs package

  • Add theseus.geometry.functional.so3 module with exp() and jexp() implementations by @fantaosha in #365
  • Add theseus.geometry.functional.so3.adjoint() by @fantaosha in #373
  • Add theseus.geometry.functional.so3.inverse() by @fantaosha in #374
  • Add hat() and vee() operators to theseus.geometry.so3 by @fantaosha in #378

Full Changelog: 0.1.3...0.1.4

0.1.3

09 Nov 19:52
7073426
Compare
Choose a tag to compare

Major Updates

  • Adaptive damping for Levenberg-Marquardt by @luisenp in #328
  • Moved all unit tests to a separate folder by @luisenp in #352

Other Changes

New Contributors

Full Changelog: 0.1.2...0.1.3

0.1.2

20 Oct 18:25
Compare
Choose a tag to compare

This code release is also associated with arXiv v2 paper release.

Major Updates

  • Add support for BaSpaCho sparse solver by @maurimo in #324
  • Set vmap as the default autograd mode for autodiff cost function. by @luisenp in #313

Other Changes

  • Changed homography example to allow benchmarking only cost computation by @luisenp in #311
  • Run isort on all files by @luisenp in #312
  • Added usort:skip tags. by @luisenp in #314
  • Fixed checkout tag syntax in build script. by @luisenp in #315
  • Removed redundant directory in homography gif save. by @luisenp in #316
  • Fixing simple example by @Gralerfics in #320
  • AutodiffCostFunction now expands tensors with batch size 1 before running vmap by @luisenp in #327
  • Deprecated FULL backward mode (now UNROLL). by @luisenp in #332
  • Using better names for CHOLMOD solver python files. by @luisenp in #333

New Contributors

Full Changelog: 0.1.1...0.1.2

0.1.1

28 Sep 14:19
0fa526b
Compare
Choose a tag to compare

Highlights

  • Added pip install theseus-ai instructions. by @luisenp in #276
  • Add functorch support for AutoDiffCostFunction by @fantaosha in #268
  • Profile AutoDiffCostFunction and refactor the homography example by @fantaosha in #296

What's Changed

  • update pose graph data link by @fantaosha in #256
  • [homography] Use kornia lib properly for perspective transform by @ddetone in #258
  • Small Update to 00_introduction.ipynb by @NeilPandya in #259
  • Changed SDF constructor to accept more convenient data types. by @luisenp in #260
  • Fixed small bugs in MotionPlanner class by @luisenp in #261
  • Added option to visualize SDF to trajectory visualization function by @luisenp in #263
  • update readme by @mhmukadam in #264
  • Added MotionPlanner.forward() method. by @luisenp in #267
  • Small bug fixes and tweaks to generate_trajectory_figs. by @luisenp in #271
  • Added a script for building wheels on a new docker image. by @luisenp in #257
  • Bugfix: homography estimation - create data folder before downloading data by @luizgh in #275
  • Added pip install theseus-ai instructions. by @luisenp in #276
  • Refactored MotionPlanner so that objective can be passed separately. by @luisenp in #277
  • add numel() to Manifold and Lie groups by @fantaosha in #280
  • Add support for SE2 poses in Collision2D by @luisenp in #278
  • Probabilistically correct SO(3) sampling by @brentyi in #286
  • Refactor SO3 and SE3 to be consistent with functorch by @fantaosha in #266
  • Add SE2 support in MotionPlanner by @luisenp in #282
  • Fixed bug in visualization of SE2 motion plans. by @luisenp in #293
  • Add functorch support for AutoDiffCostFunction by @fantaosha in #268
  • Changed requirements so that main.txt only includes essential dependencies by @luisenp in #294
  • Add to_quaternion, rotation, translation and convention comment by @fantaosha in #295
  • Added th.as_variable() function to simplify creating new variables. by @luisenp in #299
  • Added an optional end-of-step callback to NonlinearOptimizer.optimize(). by @luisenp in #297
  • Add AutogradMode to AutoDiffCostFunction by @fantaosha in #300
  • Profile AutoDiffCostFunction and refactor the homography example by @fantaosha in #296
  • Changed unit tests so that the batch sizes to tests are defined in a central import by @luisenp in #298
  • enhance the efficiency of Objectve.add() by @Christopher6488 in #303
  • Added missing end newlines by @luisenp in #307
  • Rename BackwardMode.FULL --> UNROLL and simplify backward mode config by @luisenp in #305
  • Simplified autograd mode specification. by @luisenp in #306
  • Clean up test_theseus_layer by @luisenp in #308
  • update readme and bump version by @mhmukadam in #309

New Contributors

Full Changelog: 0.1.0...0.1.1

0.1.0

20 Jul 15:06
Compare
Choose a tag to compare

This code release is also associated with arXiv v1 paper release.

What's Changed

  • Add SO3 support by @luisenp in #46
  • Taoshaf.add so3 class by @fantaosha in #65
  • Add SO3 rotate and unrotate by @fantaosha in #57
  • add so3._hat_matrix_check() by @fantaosha in #59
  • Encapsulated data loading functions in tactile pushing example into a new class by @luisenp in #51
  • Added a TactilePoseEstimator class to easily create TheseusLayer for tactile pushing by @luisenp in #52
  • Refactor tactile pushing model interface by @luisenp in #55
  • Minor fixes 02/01/2022 by @luisenp in #66
  • add adjoint, hat and vee for SE3 by @fantaosha in #68
  • Add SE3.exp_map() and SE3.log_map() by @fantaosha in #71
  • Add SE3.compose() by @fantaosha in #72
  • add SE3.transform_from and SE3.transform_to by @fantaosha in #80
  • Updated to CircleCI's next-gen images. by @luisenp in #89
  • Updated README with libsuitesparse installation instructions. by @luisenp in #90
  • Added kwarg to NonlinearOptimizer.optimizer() for tracking error history by @luisenp in #82
  • Merge infos results for truncated backward modes by @luisenp in #83
  • Fix Issue 88 by @maurimo in #97
  • Fixed bug in Variable.update() that was breaking torch graph... by @luisenp in #96
  • Forced Gauss-Newton step for last iterations of truncated backward. by @luisenp in #81
  • Add automatic differentiation on the Lie group tangent space by @fantaosha in #74
  • Add rand() to LieGroup by @fantaosha in #95
  • Fix SO2 rotate and unrotate jacobian by @fantaosha in #58
  • Add projection for sparse Jacobian matrices by @fantaosha in #98
  • Add LieGroup Support for AutoDiffFunction by @fantaosha in #99
  • Add SE2.transform from() and fix shape bugs in SE2.transform_to() by @fantaosha in #103
  • Switch SE3.transform_from and SE3.transform_to by @fantaosha in #104
  • Enabled back ellipsoidal damping in LM with linear solvers support checks by @luisenp in #87
  • Changed name of pytest mark for CUDA extensions. by @luisenp in #102
  • Fix backpropagation bugs in SO3 and SE3 log_map by @fantaosha in #109
  • Add analytical jacobians for LieGroup.exp_map by @fantaosha in #110
  • error and errorsquaredNorm optional data by @jeffin07 in #105
  • Add analytical derivatives for LieGroup.log_map() by @fantaosha in #114
  • Refactor SO3.to_quaternion to fix backward bugs and improve the accuracy around pi by @fantaosha in #116
  • Change RobotModel.forward_kinematics() interface by @luisenp in #94
  • Added error handling for missing matplotlib and omegaconf installation when using theg by @luisenp in #119
  • Add jacobians argument to exp_map and log_map functions by @joeaortiz in #122
  • Add pose graph optimization example by @fantaosha in #118
  • Added 'secret' option to keep constant step size when using truncated… by @luisenp in #130
  • Add jacobians for LieGroup.local() by @fantaosha in #129
  • Added method to update SE2 from x_y_theta. by @luisenp in #131
  • A complete version of Bundle Adjusment by @luisenp in #117
  • Fixed jacobians for Between and VariableDifference by @fantaosha in #133
  • Added batching support to tactile pushing example. by @luisenp in #132
  • Changed tactile pose example optim var initialization to use start pose for all vars by @luisenp in #137
  • Override Vector operators in Point2 and Point3 by @jeffin07 in #124
  • Merge Between and VariableDiff with RelativePoseError and PosePriorError by @fantaosha in #136
  • Fix a bug in Objective.copy() by @fantaosha in #139
  • Added option to force max iterations for TactilePoseEstimator. by @luisenp in #141
  • black version bump by @jeffin07 in #144
  • Added code to split tactile pushing trajectories data into train/val by @luisenp in #143
  • Removed RobotModel.dim() by @luisenp in #156
  • [bug-fix] Fixed wrong data shape initialization for GPCostWeight.dt by @luisenp in #157
  • Made AutoDiffCostFunction._tmp_optim_vars copies of original by @luisenp in #155
  • Add forward kinematics using an URDF to theseus.embodied.kinematics. by @exhaustin in #84
  • Fixed dtype error in se3.py that came up in unit tests by @joeaortiz in #158
  • Add-ons for backward experiments on Tactile Pose Estimation by @luisenp in #164
  • Change unit tests to avoid making mypy a main requirement. by @luisenp in #168
  • Update readme and contrib by @luisenp in #169
  • Add ManifoldGaussian class for messages in belief propagation by @joeaortiz in #121
  • More efficient implementation of forward kinematics by @exhaustin in #175
  • Changing setup virtualenv command. by @luisenp in #178
  • Updated SDF object in collision cost functions whenever an aux var is updated by @luisenp in #177
  • Fixed device bug that occurred when merging info in TRUNCATED backward modes by @luisenp in #181
  • Allow constant inputs to cost functions to be passed as floats by @jeffin07 in #150
  • Minor changes to core test code. by @luisenp in #197
  • adding logo by @mhmukadam in #200
  • Added aliases for Difference and Between by @luisenp in #199
  • Fixed infinite recursion in GPMotionModel.copy() by @luisenp in #201
  • Fix bug in diagonal cost weight by @luisenp in #203
  • Added a check in TheseusFunction that enforces copy() also copies the variables by @luisenp in #202
  • Fixed bug in Objective.error() that was updating data unncessarily. by @luisenp in #204
  • DLM gradients by @rtqichen in #161
  • Setup now uses torch for checking CUDA availability, and CI runs py3.9 tests by @luisenp in #206
  • Update README to specify python versions and CUDA during install step + by @cpaxton in #207
  • Vectorization refactor by @luisenp in #205
  • Implement Robust Cost Function by @luisenp in #148
  • Added option for auto resetting LUCudaSparseSolver if the batch size needs to change by @luisenp in #212
  • Address comments on RobustCostFunction implementation by @luisenp in #213
  • Moved the method that retracts all variables with a given delta to Objective by @luisenp in #214
  • Fixed flaky unit test for Collision2D jacobians. by @luisenp in #216
  • Bundle Adjustment using RobustCostFunction by @luisenp in https://github.com/facebookresearch/theseus/...
Read more

0.1.0-b.2

01 Feb 08:00
03f76b0
Compare
Choose a tag to compare

Major Additions

  • Initial implicit/truncated backward modes by @bamos in #29
  • Adds support for energy based learning with NLL loss (LEO) by @psodhi in #30
  • cusolver based batched LU solver by @maurimo in #22
  • CUDA batch matrix multiplication and ops by @maurimo in #23
  • CUDA-based solver class and autograd function by @maurimo in #24

What Else Changed

  • Added clearer explanation at the end of Tutorial 0 and fixed doc typos by @luisenp in #2
  • Default SE2/SO2 is zero element rather than torch empty. by @luisenp in #3
  • Add plots to tutorials by @bamos in #25
  • update text in Tutorial 2 per issue #27 by @vshobha in #31
  • Update contrib and add gitattributes by @mhmukadam in #33
  • update continuous integration by @maurimo in #21
  • Changed TheseusLayer.forward() to receive optimizer_kwargs as a single dict by @luisenp in #45
  • [hotfix] fix lint issues by @maurimo in #54
  • Update version by @mhmukadam in #63

New Contributors

Full Changelog: 0.1.0-b.1...0.1.0-b.2

0.1.0-b.1

03 Dec 20:28
Compare
Choose a tag to compare

Initial beta release.

  • Core data structures.
  • Vector and 2D rigid body representations.
  • Gauss-Newton and LM nonlinear optimizers.
  • LU and Cholesky dense linear solvers.
  • Cholmod sparse linear solver (CPU only).
  • Cost functions for planar motion planning and tactile estimation in planar pushing.