CHANGELOG

Changelog for package fuse_core

1.1.1 (2024-05-02)

  • Required formatting changes for the lastest version of ROS 2 Rolling (#368)

  • Contributors: Stephen Williams

1.1.0 (2024-04-20)

  • Port support for Ceres 2.1.0 Manifold class into ROS 2 Rolling (#366) * Support gcc12 and ceres 2.1.0 * Add support for the Manifold class when using Ceres Solver version 2.1.0 and above * General clean up for Ceres 2.2.0 support * Updated serialization support to be backwards compatible with previously serialized files * Formatting changes required for ROS 2 Rolling / Ubuntu Noble

  • Contributors: Stephen Williams

1.0.1 (2023-03-03)

1.0.0 (2023-03-03)

  • Use upstream rclcpp::node_interfaces::NodeInterfaces (#313) * Use upstream rclcpp::node_interfaces::NodeInterfaces * Dereference node arguments to NodeInterfaces ——— Co-authored-by: methylDragon <methylDragon@gmail.com>

  • Use getParameterName and namespace parameters for publishers (#314)

  • Fix SerializedPublisher not being able to read it’s parameters (#311)

  • Use rclcpp::Clock::wait_until_started (#303)

  • fuse -> ROS 2 : Doc Generation (#278) * Port doc generation and fix package.xml for linting * Fix small bugs in package.xml * Use default rosdoc2 settings * Use default rosdoc2 settings * Update fuse_doc for rosdoc2 ——— Co-authored-by: Shane Loretz <sloretz@google.com>

  • fuse -> ROS 2 fuse_tutorials: Port fuse_tutorials (#309) Co-authored-by: Shane Loretz <shane.loretz@gmail.com>

  • fuse -> ROS 2 fuse_optimizers: Port fuse_optimizers (#307) Co-authored-by: Shane Loretz <sloretz@osrfoundation.org> Co-authored-by: Shane Loretz <shane.loretz@gmail.com>

  • fuse -> ROS 2 fuse_models: Port fuse_models (#304) * Port messages * Port fuse_models * Fix alloc error and some bugs * Wait on result

  • fuse -> ROS 2 fuse_publishers : Linting (#305)

  • fuse -> ROS 2 fuse_publishers: Port fuse_publishers (#299) Co-authored-by: Shane Loretz <shane.loretz@gmail.com>

  • fuse -> ROS 2 fuse_constraints : Linting (#298)

  • fuse -> ROS 2 fuse_graphs : Port fuse_graphs (#289)

  • fuse -> ROS 2 fuse_variables: Linting (#296) * Migrate to .hpp files * Create redirection headers * Make xmllint and uncrustify happy * Wrap most comment lines * Satisfy cpplint

  • fuse -> ROS 2 fuse_variables: Port fuse_variables (#288)

  • fuse -> ROS 2 fuse_core : Messages and Services (#285)

  • fuse -> ROS 2 fuse_core: Fix Async (Redux) (#294) Co-authored-by: methylDragon <methylDragon@gmail.com>

  • fuse -> ROS 2 fuse_loss: Port fuse_loss (#287)

  • fuse -> ROS 2 fuse_core: Linting (#292)

  • fuse -> ROS 2 fuse_core : Parameters and Tests (#286) Co-authored-by: Shane Loretz <sloretz@osrfoundation.org> Co-authored-by: Ivor Wanders <ivor@iwanders.net>

  • fuse -> ROS 2 fuse_core : Nodes and Waitables (#284) Co-authored-by: Brett Downing <brett@hacodyne.com> Co-authored-by: Shane Loretz <sloretz@osrfoundation.org>

  • fuse -> ROS 2 : Port Time (#283)

  • fuse -> ROS 2 : Port Logging (#279) Co-authored-by: Tom Moore <tmoore@locusrobotics.com>

  • Fuse -> ROS 2 fuse_core: Partial port of fuse_core (#281) Co-authored-by: Brett Downing

  • fuse -> ROS 2: Clean up macro usage warnings (#280)

  • fuse -> ROS 2 fuse_msgs : Port package and ignore unported packages for now (#277) Co-authored-by: Tom Moore <tmoore@locusrobotics.com>

  • [RST-4186] Fix fuse macro names (#263) * Namespace all macros with the FUSE_ prefix. Mark original macros as deprecated. * Update all fuse objects to use the new macro names

  • [RST-4390] Allow variables to be held constant during optimization (#243) * Add support for holding variables constant * Create a ‘fixed’ landmark * Added initial support for marginalizing constant variables

  • [RST-4455] Fix C++17 compile issue and simplify matrix serialization at the same time (#244)

  • Adding doxygen to all packages (#241)

  • Add unstamped 3D point variable (#233) (#239) * Add unstamped 3D landmark variable * Add landmark test and new uuid generator Co-authored-by: Stephen Williams <swilliams@locusrobotics.com> Co-authored-by: Jake McLaughlin <jake.mclaughlin98@gmail.com>

  • [RST-3474] Created a getConstraintCosts() method * Created a getConstraintCosts() method for reporting the costs and residuals of individual constraints

  • [RST-2831] Support for optimization bounds (#235)

  • Added a time-limited optimization option to the Graph class (#234)

  • Contributors: Shane Loretz, Stephen Williams, Tom Moore, methylDragon

0.4.2 (2021-07-20)

  • Adding roslint dependency to fuse_viz (#231) * Adding roslint dependency to fuse_viz * Silence CMP0048 warnings

  • Contributors: Tom Moore

0.4.1 (2021-07-13)

  • Support throttling serialized graph publisher (#204) * Change sensor proc from gtest to gmock target * Move ThrottledCallback to fuse_core * Support generic callbacks in ThrottledCallback * Throttle graph publishing * Overload getPositiveParam for ros::Duration * Use getPositiveParam for ros::Duration parameters

  • Use std::enable_if_t (#187)

  • Fix roslint 0.12.0 (#186) * Fix roslint 0.12.0 include_what_you_use warnings Mostly for: * std::move -> #include <utility> * std::make_shared and similar -> #include <memory> * Remove static string variable not permitted by roslint 0.12.0, using a test fixture where needed.

  • Remove variables on hold (#185) * Test variables on hold are removed when removing a variable * Erase variable on hold when removing variable

  • Filter out transactions older than the lag window (#173) * Filter out transactions older than the lag window * Fix expiration time computation * Reset the lag expiration time when the smoother is reset * Reorganize class variables by their mutex guard * Add a mutex guard for start_time_; use start_time_ as a min time in the lag expiation computation * Add minStamp() and maxStamp() accessors to the Transaction class * Use the minStamp() and maxStamp() accessors to filter and purge transactions correctly

  • Call onStop() directly if !ros::ok() in stop() (#182) * Call onStop() directly if !ros::ok() in stop() * Stop spinner before calling onStop()

  • Only call generator if motion model history empty (#181) * Only call generator if motion model history empty * Handle dt == 0 special case in motion model * Revert test_timestamp_manager.cpp #154 * Add EmptySingleStamp test

  • Fix doxygen comment (#177)

  • Delay throttle no valid state message (#175) This requires rosconsole >=1.13.8.

  • Replace ignition_sensors list param with ignition field (#163) * Remove ignition_sensors param and use a per-sensor ignition field

  • Throttle (#162) * Support throttling sensor model inputs * Add ThrottledCallback rostest

  • Use a static Boost random UUID generator (#171)

  • Fix motion model history (#168) * Fix the motion model history to maintain at least the requested time interval * Apply a similar fix to the MessageBuffer class

  • Get positive param API change (#169) * Change getPositiveParam API In order to match the getParam and getRequiredParam, so the value is not returned, but set in an in/out argument. * Move getPositiveParam and other param related functions to parameter.h from util.h, and updated the ros/unit tests accordingly. * Fix wrapAngle2D expected range to [-Pi, +Pi) Instead of (-Pi, +Pi], and update unit test to reflect that.

  • Fix thread issue with UUID generation (#167) * Add a mutex lock to the random UUID generation. The STL random number generator is not thread-safe.

  • Patch Tukey loss for Ceres < 2.0.0 (#159) * Patch Tukey loss for Ceres < 2.0.0 * Create ceres_macros.h header

  • Fix Unicycle2DIgnition set_pose (#154) * Initialize StateHistoryElement::velocity_yaw * Process ignition transactions individually * Call motion model generator with last stamp * Skip optimization cycle if transaction is empty

  • Add evaluate method to graph (#151)

  • Support ScaledLoss (#141)

  • Const deserialize (#148) * Make TransactionDeserializer::deserialize const * Make GraphDeserializer::deserialize const This requires the graph_loader_ to be mutable.

  • Cleanup validation checks (#139) * Add getCovarianceDiagonalParam helper This allows to load a covariance matrix from the parameter server, provided in a list with the diagonal values. * Add isSymmetric and isPositiveDefinite helper functions

  • Better validation of partial measurement output (#131) * Relax the default precision when validating the covariance matrix is symmetric. * Print the covariance matrix with Eigen::FullPrecision when the symmetry test fails with isApprox, so we can see the magnitude of the error. * Show source if validation fails * Changes from throwing/crashing to ROS_ERROR. * Add eigenvalues to non-PSD error check * Add disable_checks param to sensor models

  • Add fuse_loss pkg with plugin-based loss functions (#118)

  • Validate partial measurements (#125)

  • Removed the explicit ‘-std=c++14’ compile flag (#119) * Removed the explicit ‘-std=c++14’ compile flag * Changed the CXX_STANDARD setting to be per-target instead of global * Added the CXX_STANDARD_REQUIRED setting to all targets

  • Revert “Fix build with ceres 2.0 with CMake < 3.8 (#106)” (#120) This reverts commit 9933456ecc24ba9b649a8a2885be3f852306efee.

  • Predict jacobians per parameter block (#115)

  • fix compilation in Kinetic (#112)

  • Support ceres 2.0 in tests (#117) In Ceres 2.0 we should call AutoDifferentiate<…>(…) instead of AutoDiff<…>::Differentiate(…).

  • Fix build with ceres 2.0 with CMake < 3.8 (#106) * Note that while the Ceres 2.0 build completes, there may still be some lingering issues.

  • [RST-2438] Make ceres params loaders reusable (#104) * Moved the Ceres loadFromROS functions into reusable functions in fuse_core * Load solver parameters for the batch optimizer

  • [RST-1951] speed optimizations (#100) * Improved random UUID generator * Minor Eigen assignment speed improvements

  • [RST-2437] Ensure that all variables are updated by the motion model (#103)

  • Expose Ceres Solver, Problem and Covariance Options as ROS parameters (#78)

  • [RST-2427] Added a ‘source’ field to the constraints. This is an API-breaking change. (#101)

  • [RST-2340] Add serialization support to fuse (#98)

  • Fix -Wall -Wextra warnings in tests (#80)

  • Stamp merged transaction (#79) Set stamp in merged transactions Otherwise, merged transactions don’t have a stamp. The stamp used is the maximum stamp of the two transactions merged.

  • [RST-2148] Added start() and stop() methods to the MotionModel, SensorModel, and Publisher API (#75) * Added start() and stop() methods to the MotionModel, SensorModel, and Publisher API * Added the ability to clear the callback queue of the optimizer * Refactor the fixed-lag reset callback to use the plugins’ stop() and start() methods

  • Fix -Wall -Wextra warnings (#77)

  • Contributors: Davide Faconti, Enrique Fernandez Perdomo, Stephen Williams

0.4.0 (2019-07-12)

  • Comment unused parameters (#76) Otherwise the compilation fails with: -Werror=unused-parameter This happens with these flags: -Wall -Wextra

  • Add print method to Graph and HashGraph (#70)

  • Depend on libceres-dev instead of ceres-solver (#71)

  • Return variable UUID by const reference (#69)

  • Added a default implementation for the type() method (#67)

  • [RST-2144] Support proper Eigen memory alignment (#65)

  • [RST-2128] Added a “reset” service to the fixed lag smoother (#61)

  • Modified Variable class to make the UUID immutable (#55)

  • [RST-1960] Added a tangent/parameter space flag to the covariance function (#50)

  • Some minor header cleanup of fuse_core (#51)

  • [RST-1949] Added getConnectedVariables() and getConnectedConstraints() (#45)

  • [RST-1746] Remove the marginalizeVariable() methods from the Graph class. (#44)

  • [RST-1744] Added a marginal constraint class (#43)

  • [RST-1940] Added a localSize() method to the Variable class (#42)

  • [RST-1927] Update the local parameterization for the orientation variables (#41)

  • [RST-1926] Extend the local parameter definition to include Minus() (#40)

  • Contributors: Enrique Fernandez Perdomo, Enrique Fernández Perdomo, Stephen Williams

0.3.0 (2019-03-18)

  • [RST-1653] transaction stamps (#37) * Moved the set<ros::Time> object that always accompanies a Transaction into the Transaction itself. * Updated all related classes to support that change

  • [RST-1477] Simplified the sensor<–>optimizer API (#35) * Simplified the sensor<–>optimizer API. Moved the implementation details of the optimizer transaction callback into the optimizer where it belongs.

  • Contributors: Stephen Williams

0.2.0 (2019-01-16)

  • Fix tests for bionic (#34)

  • [RST-1554] test depends (#30) * Refactored all CMakeLists.txt to avoid path issues when using workspace overlays

  • Contributors: Gary Servin, Stephen Williams

0.1.1 (2018-08-15)

0.1.0 (2018-08-12)

  • [RST-1121] move optimizers (#25) * Added a clone() method to the Transaction object * Changed optimizer to unique ownership of the graph. This better captures the usage.

  • [RST-1121] Moved the pose publishers (#19) * Clean up Eigen depends and includes

  • [RST-1121] move publishers (#18)

  • [RST-1121] move motion models (#17)

  • [RST-1121] move sensor classes (#16)

  • [RST-1121] Moved the Graph classes (#15)

  • Adding absolute 3d pose

  • Converted all Eigen objects to use row-major order (#22)

  • Contributors: Stephen Williams, Tom Moore

0.0.2 (2018-07-16)

  • Added the Transaction class and unit tests (#2)

  • Added missing test depend (#3)

  • Contributors: Stephen Williams

0.0.1 (2018-07-05)

  • Moved the Variable and Constraint classed into the public fuse repo

  • Contributors: Stephen Williams