CHANGELOG
Changelog for package fuse_optimizers
1.1.1 (2024-05-02)
Fix fuse optimizer unit test (#369) * Fix fuse optimizer unit test. The rclcpp::wait_for_message call was throwing an exception ‘subscription already associated with a wait set’. Switched to a standard subscriber instead.
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>
fuse -> ROS 2 fuse_optimizers: Linting (#316) * Migrate includes * Create redirection headers * Uncrustify * Wrap comments * Nitpick * cpplint * Refinements ———
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_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_constraints : Linting (#298)
fuse -> ROS 2 fuse_graphs: Linting (#297)
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_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
Adding doxygen to all packages (#241)
[RST-3240] Fix how the variables to be marginalized are selected.
[RST-3451] Cleaned up condition variable usage
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)
Improve logs on graph update exception thrown (#227) * Catch graph update exceptions and log fatal msg When the graph update method throws an exception the node crashes and there is no way to know what transaction caused the exception because we call notify after successfully updating the graph. This catches any exception thrown by the graph update method and logs a FATAL message that includes the current graph and the new transaction. * Add full stop to exception messages This homogenizes the exception messages from all exceptions thrown by the HashGraph class.
Fix diagnostics typo (#218)
Target frame optional (#217) * Make target_frame optional * Remove optional target_frame parameters in tests
Transform message in differential mode (#216) * Transform message in differential mode This is important because the relative transformation is not the same if the sensor and target frame are different. Consider for example the case of an IMU sensor upside down: * The robot base frame is base_link * The IMU sensor frame is imu_link * The imu_link transformation wrt base_link is 180 degrees wrt the y or x axis * The angular velocity around the z axis has opposite sign in the sensor frame wrt the target frame * Require pose_target_frame in differential mode * Roslint * Add pose_target_frame to optimizer test config
Check empty transaction with empty() method (#210)
Add solver summary info to diagnostics (#208) * Add solver summary info to diagnostics * Abort if optimization failed
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
Fix optimizer test config (#202) * Add dimensions to the sensor models, so we do not get these warnings:
` bash [ WARN] [/Optimizer] [1604556511.895230377]: No dimensions were specified. Data from topic /imu will be ignored. [ WARN] [/Optimizer] [1604556511.899319309]: No dimensions were specified. Data from topic /pose will be ignored. [ WARN] [/Optimizer] [1604556511.905227451]: No dimensions were specified. Data from topic /odom will be ignored. `
* Add twist_target_frame to imu sensor model, so we do not get this error:` bash [FATAL] [/Optimizer] [1604557006.977288017]: Could not find required parameter twist_target_frame in namespace /Optimizer/imu `
Purge transactions older than ignition max stamp (#183)
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.
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
The started/ignited variables are accessed from multiple threads. (#172)
Replace ignition_sensors list param with ignition field (#163) * Remove ignition_sensors param and use a per-sensor ignition field
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.
Add missed fuse_models dependencies (#164)
From a usage standpoint, the ‘element’ variable is getting modified and should not be const. The const was not causing compilation issues before because of some pointer indirection. (#160)
Added unit test to illustrate variable initialization bug (#158)
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
Support YAML struct for models and publishers (#149) * Support YAML struct for models and publishers This allows to compound multiple YAML files that provide additional models or publishers. This cannot be done with a list/array, because the previous values get overwritten/lost.
Throttle optimization duration exceeded warning (#140)
Add fuse_loss pkg with plugin-based loss functions (#118)
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
fix compilation in Kinetic (#112)
Initialize diagnostic_updater_timer_period_ (#114)
Add diagnostic updater (#108)
[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
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-2432] Reworked the transaction queue to skip transactions on a per-sensor basis (#102)
[RST-2340] Add serialization support to fuse (#98)
Fix -Wall -Wextra warnings in tests (#80)
[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)
Wait for a valid timestamp before loading the plugins. This prevents the ignition sensor from generating an initial state with the wrong stamp. (#74)
Default private ~reset service name (#72)
[RST-2186] Added a FixedLagSmootherParams struct (#68)
[RST-2185] Fix “fixed-lag crash on reset” bug (#66)
[RST-2144] Support proper Eigen memory alignment (#65)
[RST-2158] Fix thread locking issue that was causing underconstained solver errors (#63)
[RST-2128] Added a “reset” service to the fixed lag smoother (#61)
[RST-1747] fixed lag smoother implementation (#52)
Contributors: 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)
[RST-1567] Check the system has started before attempting to optimize (#33) * Check the system has started before attempting to optimize. * Fixed linter issues
[RST-1554] test depends (#30) * Refactored all CMakeLists.txt to avoid path issues when using workspace overlays
Contributors: Stephen Williams
0.1.1 (2018-08-15)
0.1.0 (2018-08-12)
[RST-1121] move optimizers (#25) * Moved the Optimizer and BatchOptimizer classes into the public repo * Added fuse_optimizers to the metapackage depends * Changed optimizer to unique ownership of the graph. This better captures the usage.
Contributors: Stephen Williams