Releases: facebookresearch/theseus
0.2.2
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()
andTheseusLayer.to()
now returnself
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
- @YipuZhao made their first contribution in #581
- @Hesam-Vayu made their first contribution in #612
- @ahojnnes made their first contribution in #657
Full Changelog: 0.2.1...0.2.2
0.2.1
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
- Allow Python version to be passed to build script by @luisenp in #567
- fixed the rotation and translation order in pgo datasets by @fantaosha in #560
- Added Profiler util by @luisenp in #571
- Prevent update variables with device or dtype != Objective's by @luisenp in #570
- Bump torchkin version to v0.1.1. by @luisenp in #572
- Removed semantic version dependency. by @luisenp in #574
- Fix error in torch Lie API example. by @luisenp in #575
- Add
urdf_parser_py
fallback import by @luisenp in #576 - Add flake8 copyright by @luisenp in #577
- Fix broken
sksparse
install in CI by @luisenp in #582 - Bump version to 0.2.1 by @luisenp in #583
Full Changelog: 0.2.0...0.2.1
0.2.0
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
- Deprecated torch < 2.0.0. by @luisenp in #525
- Move
torchlie
out of labs by @luisenp in #523 - Graduate FK code out of
labs
by @luisenp in #550 - Add Differentiable CEM solver by @dishank-b in #329
- New NonlinearOptimizer hierarchy by @luisenp in #440
- Added utility to automatically check jacobians of a given cost function. by @luisenp in #465
- Added planning example with SE2 and nonholonomic cost by @luisenp in #474
- Add inverse kinematics example by @fantaosha in #538
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
andtheseus
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
andblack
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
toSE2
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
- Add Lie groups functional library by @fantaosha in #379
- Some clean up of Lie Groups code by @luisenp in #449
- Restructures Lie groups labs package and adds LieTensor by @luisenp in #450
- Make LieTensor a subclass of torch.Tensor and override function/operators by @luisenp in #452
- Fixed broken compute graph in LieTensor.new() by @luisenp in #478
- Add forward kinematics package to
labs
by @fantaosha in #415 - Add transform_from to Lie group by @fantaosha in #483
- Update Labs API by @luisenp in #488
- Lie Labs API v3 by @luisenp in #494
- Lie Labs API example by @luisenp in #476
- fixed bugs for jacobians of transform_from by @fantaosha in #505
- Add
labs.lie
support forfunctorch
andvmap
pt. 1 by @luisenp in #504 - Implement SE3.normalize() by @fantaosha in #506
- Update checks to be consistent with multi-batch implementation by @fantaosha in #508
- Implementation of multi-batch unary Lie group operators by @fantaosha in #509
- Add multi-batch support for SE(3) unary operators by @fantaosha in #512
- Add multi-batch compose() and transform_from() for SO(3) and SE(3) by @fantaosha in #513
- Implemented multi-batch gradient ops by @fantaosha in #515
- Multi-batch unit tests for Lie groups by @luisenp in #522
- Refactored FK to support vmap and other staff by @fantaosha in #543
New Contributors
- @dishank-b made their first contribution in #477
- @rmurai0610 made their first contribution in #495
- @aiddun made their first contribution in #534
- @JingyuQian made their first contribution in #561
Full Changelog: 0.1.4...0.2.0
0.1.4
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
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
- Removed manual cmake install for CPU tests. by @luisenp in #338
- Fixed vmap related bug breaking homography ex. with sparse solvers. by @luisenp in #337
- Small vectorization improvements by @luisenp in #336
- Change CI to separately handle torch >= 1.13 by @luisenp in #345
- Fixed quaternion bug at pi by @fantaosha in #344
- Expose Lie Groups checks at root level by @luisenp in #335
- Added option for making LieGroup checks silent. by @luisenp in #351
- Added a few other CUDA versions to build script. by @luisenp in #349
- Set vectorization off by default when using optimizers w/o TheseusLayer by @luisenp in #350
- Some more cleanup before 0.1.3 by @luisenp in #353
- Add tests for wheels in CI by @luisenp in #354
- #355 Add device parameter to UrdfRobotModel by @thomasweng15 in #356
- Added th.device to represent both str and torch.device. by @luisenp in #357
- Update to 0.1.3 by @luisenp in #358
New Contributors
- @thomasweng15 made their first contribution in #356
Full Changelog: 0.1.2...0.1.3
0.1.2
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
- @Gralerfics made their first contribution in #320
Full Changelog: 0.1.1...0.1.2
0.1.1
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
- @NeilPandya made their first contribution in #259
- @luizgh made their first contribution in #275
- @brentyi made their first contribution in #286
- @Christopher6488 made their first contribution in #303
Full Changelog: 0.1.0...0.1.1
0.1.0
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 aroundpi
by @fantaosha in #116 - Change RobotModel.forward_kinematics() interface by @luisenp in #94
- Added error handling for missing
matplotlib
andomegaconf
installation when usingtheg
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
andVariableDiff
withRelativePoseError
andPosePriorError
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/...
0.1.0-b.2
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
- @luisenp made their first contribution in #2
- @bamos made their first contribution in #25
- @vshobha made their first contribution in #31
- @maurimo made their first contribution in #21
- @mhmukadam made their first contribution in #33
- @psodhi made their first contribution in #30
Full Changelog: 0.1.0-b.1...0.1.0-b.2
0.1.0-b.1
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.