-
 

Package Summary

Tags No category tags.
Version 1.0.1
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/locusrobotics/fuse.git
VCS Type git
VCS Version iron
Last Updated 2024-10-31
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The fuse_optimizers package provides a set of optimizer implementations. An optimizer is the object responsible \ for coordinating the sensors and motion model inputs, computing the optimal state values, and providing access to \ to the optimal state via the publishers.

Additional Links

No additional links.

Maintainers

  • Stephen Williams

Authors

  • Stephen Williams
  • Tom Moore
README
No README found. See repository README.
CHANGELOG

Changelog for package fuse_optimizers

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]{.title-ref} to [imu]{.title-ref} 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

0.0.2 (2018-07-16)

0.0.1 (2018-07-05)

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged fuse_optimizers at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 1.1.1
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/locusrobotics/fuse.git
VCS Type git
VCS Version jazzy
Last Updated 2024-10-31
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The fuse_optimizers package provides a set of optimizer implementations. An optimizer is the object responsible \ for coordinating the sensors and motion model inputs, computing the optimal state values, and providing access to \ to the optimal state via the publishers.

Additional Links

No additional links.

Maintainers

  • Stephen Williams

Authors

  • Stephen Williams
  • Tom Moore
README
No README found. See repository README.
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]{.title-ref} to [imu]{.title-ref} 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

0.0.2 (2018-07-16)

0.0.1 (2018-07-05)

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged fuse_optimizers at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 1.2.1
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/locusrobotics/fuse.git
VCS Type git
VCS Version rolling
Last Updated 2024-10-31
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The fuse_optimizers package provides a set of optimizer implementations. An optimizer is the object responsible \ for coordinating the sensors and motion model inputs, computing the optimal state values, and providing access to \ to the optimal state via the publishers.

Additional Links

No additional links.

Maintainers

  • Stephen Williams

Authors

  • Stephen Williams
  • Tom Moore
README
No README found. See repository README.
CHANGELOG

Changelog for package fuse_optimizers

1.2.1 (2024-09-21)

1.2.0 (2024-05-02)

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]{.title-ref} to [imu]{.title-ref} 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

0.0.2 (2018-07-16)

0.0.1 (2018-07-05)

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged fuse_optimizers at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 0.10.0
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/locusrobotics/fuse.git
VCS Type git
VCS Version devel
Last Updated 2024-11-25
Dev Status MAINTAINED
CI status
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The fuse_optimizers package provides a set of optimizer implementations. An optimizer is the object responsible for coordinating the sensors and motion model inputs, computing the optimal state values, and providing access to to the optimal state via the publishers.

Additional Links

No additional links.

Maintainers

  • Stephen Williams

Authors

  • Stephen Williams
  • Tom Moore
README
No README found. See repository README.
CHANGELOG

Changelog for package fuse_optimizers

0.5.0 (2022-02-23)

  • [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: Stephen Williams, Tom Moore

0.6.0 (2023-02-22)

  • 0.5.0
  • Update changelogs
  • [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: Gary Servin, Stephen Williams, Tom Moore

0.7.0 (2023-09-25)

  • Print graph & transaction on optimization failure (#321)
  • Update devel to build on Ubuntu Jammy (22.04) (#326)
    • Update to C++17 for use with Ubuntu Jammy
    • Include Rviz and Eigen as system includes, which supresses warnings within the included libraries
    • use pluginlib and class_list_macros .hpp include instead of deprecated .h From: Lucas Walter <<wsacul@gmail.com>>
  • 0.6.0
  • Update changelogs
  • 0.5.0
  • Update changelogs
  • [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: Enrique Fernandez Perdomo, Gary Servin, Stephen Williams, Tom Moore

0.10.0 (2024-09-16)

  • [RST-10727] Publish the start/stop status of the fixed-lag smoother (#375)
    • Add a topic that reports when the optimizer is started or stopped
  • [RST-10642] Allow the optimizer to remain disabled at startup (#374)
    • Add ability to leave the fixed-lag smoother stopped on construction
    • Don't allow a running instance to be started. Instance must be stopped first.
  • RST-10147 - optimizer logging changes (#372)
    • Adding some logging to fuse
    • Adding same logs to batch optimizer
  • Contributors: David Murdoch, Stephen Williams

0.9.0 (2024-06-17)

  • Adding stop and start functionality to the fixed lag smoother (#362)
    • Adding a pause
    • Pr feedback
    • Pr Feedback:Adding start stop to batch optimizer
    • Removing a debug log I forgot about
    • Fixing lint errors
  • Add a reset service to the batch optimizer, similar to the fixed-lag smoother (#360)
  • Contributors: David Murdoch, Jake McLaughlin

0.8.0 (2024-02-02)

  • 0.7.0
  • Update changelogs
  • Print graph & transaction on optimization failure (#321)
  • Update devel to build on Ubuntu Jammy (22.04) (#326)
    • Update to C++17 for use with Ubuntu Jammy
    • Include Rviz and Eigen as system includes, which supresses warnings within the included libraries
    • use pluginlib and class_list_macros .hpp include instead of deprecated .h From: Lucas Walter <<wsacul@gmail.com>>
  • 0.6.0
  • Update changelogs
  • 0.5.0
  • Update changelogs
  • [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: Enrique Fernandez Perdomo, Gary Servin, Stephen Williams, Tom Moore

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]{.title-ref} to [imu]{.title-ref} 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

0.0.2 (2018-07-16)

0.0.1 (2018-07-05)

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged fuse_optimizers at Robotics Stack Exchange

Package Summary

Tags No category tags.
Version 0.10.0
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/locusrobotics/fuse.git
VCS Type git
VCS Version devel
Last Updated 2024-11-25
Dev Status MAINTAINED
CI status
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The fuse_optimizers package provides a set of optimizer implementations. An optimizer is the object responsible for coordinating the sensors and motion model inputs, computing the optimal state values, and providing access to to the optimal state via the publishers.

Additional Links

No additional links.

Maintainers

  • Stephen Williams

Authors

  • Stephen Williams
  • Tom Moore
README
No README found. See repository README.
CHANGELOG

Changelog for package fuse_optimizers

0.5.0 (2022-02-23)

  • [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: Stephen Williams, Tom Moore

0.6.0 (2023-02-22)

  • 0.5.0
  • Update changelogs
  • [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: Gary Servin, Stephen Williams, Tom Moore

0.7.0 (2023-09-25)

  • Print graph & transaction on optimization failure (#321)
  • Update devel to build on Ubuntu Jammy (22.04) (#326)
    • Update to C++17 for use with Ubuntu Jammy
    • Include Rviz and Eigen as system includes, which supresses warnings within the included libraries
    • use pluginlib and class_list_macros .hpp include instead of deprecated .h From: Lucas Walter <<wsacul@gmail.com>>
  • 0.6.0
  • Update changelogs
  • 0.5.0
  • Update changelogs
  • [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: Enrique Fernandez Perdomo, Gary Servin, Stephen Williams, Tom Moore

0.10.0 (2024-09-16)

  • [RST-10727] Publish the start/stop status of the fixed-lag smoother (#375)
    • Add a topic that reports when the optimizer is started or stopped
  • [RST-10642] Allow the optimizer to remain disabled at startup (#374)
    • Add ability to leave the fixed-lag smoother stopped on construction
    • Don't allow a running instance to be started. Instance must be stopped first.
  • RST-10147 - optimizer logging changes (#372)
    • Adding some logging to fuse
    • Adding same logs to batch optimizer
  • Contributors: David Murdoch, Stephen Williams

0.9.0 (2024-06-17)

  • Adding stop and start functionality to the fixed lag smoother (#362)
    • Adding a pause
    • Pr feedback
    • Pr Feedback:Adding start stop to batch optimizer
    • Removing a debug log I forgot about
    • Fixing lint errors
  • Add a reset service to the batch optimizer, similar to the fixed-lag smoother (#360)
  • Contributors: David Murdoch, Jake McLaughlin

0.8.0 (2024-02-02)

  • 0.7.0
  • Update changelogs
  • Print graph & transaction on optimization failure (#321)
  • Update devel to build on Ubuntu Jammy (22.04) (#326)
    • Update to C++17 for use with Ubuntu Jammy
    • Include Rviz and Eigen as system includes, which supresses warnings within the included libraries
    • use pluginlib and class_list_macros .hpp include instead of deprecated .h From: Lucas Walter <<wsacul@gmail.com>>
  • 0.6.0
  • Update changelogs
  • 0.5.0
  • Update changelogs
  • [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: Enrique Fernandez Perdomo, Gary Servin, Stephen Williams, Tom Moore

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]{.title-ref} to [imu]{.title-ref} 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

0.0.2 (2018-07-16)

0.0.1 (2018-07-05)

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged fuse_optimizers at Robotics Stack Exchange