Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Port to ROS2 Galactic #271

Closed
wants to merge 58 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
a31b09b
generate fuse_msgs for galactic
Nov 1, 2021
3435091
start on fuse_core build options
Nov 1, 2021
03a0b57
some progress
Nov 9, 2021
63af763
builds majority of fuse_core in galactic
Nov 9, 2021
f126a6c
abstract away from ros::time or rclcpp::time
Nov 11, 2021
df027c5
distinguish between times and measurement timestamps
Nov 11, 2021
9a730f1
roll out new timestamp class
Jan 25, 2022
b6e1080
build a callback queue as a rclcpp::Waitable
Jan 25, 2022
17568ab
move optimisers to rclcpp
Apr 29, 2022
b63ceb2
build up to fuse_variables
Apr 29, 2022
80dd983
change params, fix chrono, build fuse_graphs
May 6, 2022
74074e2
fix params and chrono, build fuse_graphs
May 6, 2022
c8481b3
more rclcpp in optimiser, start ceres params
May 20, 2022
19e49e6
compile callback_wrapper
Jun 9, 2022
9c56a30
use rclcpp logger macro apis
Jun 9, 2022
84b5bec
fixes docstrings with rclcpp args
Jun 9, 2022
358a69b
tweaks order of arguments
Jun 9, 2022
026231a
binds timer callbacks
Jun 9, 2022
d80f4b7
explores use of fuse_core/time, adds use-before-init bugs
Jun 9, 2022
ccd18d9
adds rclcpp logger syntax to template function, broken.
Jun 9, 2022
d09926c
uses rclcpp::ok
Jun 9, 2022
9220827
possible helper function
Jun 9, 2022
b1df931
converts stored parameters to double, allowing dynamic reconf
Jun 9, 2022
31bdf3f
Merge branch 'devel' of github.com:locusrobotics/fuse into galactic
Jun 9, 2022
672a248
discards the time parameter specialization
Jun 9, 2022
fdca4a1
Adding more classes to the CMakeLists
ayrton04 May 17, 2022
eadbef5
Converting serialization, loss, and uuid from core
ayrton04 May 13, 2022
7321776
Adding Ceres options
ayrton04 May 18, 2022
b0027f1
limits the exposure of the node
Jun 10, 2022
9b5f22b
satisfies -Wpedantic about semicolons
Jun 10, 2022
6bafbfd
updates the pluginlib/class_list_macros filename
Jun 10, 2022
3c16012
reduce warnings
Jun 10, 2022
da662f3
add missing dependency
Jun 10, 2022
9cac0bf
Merge branch 'galactic' into galactic_devel_params
Jun 10, 2022
b950410
Using new callback wrapper in AsyncMotionModel
ayrton04 May 19, 2022
92e2721
patches async_motion_model to use CallbackAdapter
Jun 10, 2022
6c4bdf6
Revert "limits the exposure of the node"
Jun 20, 2022
4a03478
uses Node directly in parameter helpers to simplify the port
Jun 20, 2022
40de416
cleanup, deprecate XmlRpc API for parameters
Jun 20, 2022
add4e10
document the parameters used by Fuse in ROS1
Jun 23, 2022
41edf21
adjusts formatting
Jun 29, 2022
3f7026c
fixes type errors
Jun 30, 2022
4e4d80b
makes config files slightly closer to ROS1 layout
Jun 30, 2022
b0949c0
add descriptions to CLI parameter tools
Jun 30, 2022
54298b2
adds a description of the optimizer
Jun 30, 2022
5d7caba
loads motion_models from ros2 params
Jun 30, 2022
3be6edf
loads sensor models and publishers with ros2
Jul 1, 2022
ba8468d
adds a rough compatibility patch for ros1 style parameters
Jul 4, 2022
4e7e713
adds ParameterDescriptors to load parameter descriptions
BrettRD Jul 5, 2022
e426031
removes redundant diagnostic updater timer
BrettRD Jul 5, 2022
6475304
fixes link-time CallbackWrapper issue
BrettRD Jul 5, 2022
fcf57ed
uses ros2 services for optimizer reset
BrettRD Jul 5, 2022
d888a46
builds and links as shared libraries
BrettRD Jul 5, 2022
9bdc3ae
makes async plugins use ros2 nodes
BrettRD Jul 8, 2022
d54e790
start building publishers and models
BrettRD Jul 8, 2022
46d9f8f
adds convenience functions
Jul 11, 2022
ecf1cdb
moves publishers mostly to ros2 APIs
Jul 11, 2022
0166990
explicitly handles uninitialised timestamps
Jul 11, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# fuse
# fuse - ROS2 port in progress

The fuse stack provides a general architecture for performing sensor fusion live on a robot. Some possible applications
include state estimation, localization, mapping, and calibration.
Expand Down
34 changes: 34 additions & 0 deletions doc/Optimizers.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Optimizers
The Fuse Optimizers are the top level executable structures\
The Optimizer is launched by ROS, and instantiates additional ROS nodes to service the various sensor calls and other compute tasks

A Fuse Optimizer chooses Constraints and Variables to insert or remove from the graph at run-time to regulate the amount of processing power and memory required to solve the graph.\
During startup, an Optimizer reads configuration and loads sensor_models, motion_models, and publisher plugins, then waits for callbacks from each plugin.

The plugins create Variables or Constraints, and submit Transactions to the optimizer in a callback.\
Transactions are not carried by the ROS pub-sub model; the data-types of the Constraints and Variables are not well-defined as ROS messages, so they are carried by a callback wrapper where the callback can be processed by the ROS executors without serialising or transforming the data.

The Optimizer decides when to perform an optimisation on the assembled graph, and submits the solved graph back to the plugins in another transaction.

# Optimizer Base class
This class provides plugin loader conventions, ROS parameter handling, and a few other helper functions that perform the basic administration of an optimizer.


## Batch Optimizer
The Batch Optimizer allows the graph to grow without limit, regularly solving the state.\
This is suitable for high-latency or off-line systems that need to link measurements that are separated by a large amount of time, such as SLAM loop-closures


## Fixed-Lag Optimizer

The fixed lag optimizer removes graph entries that are older than some time horizon.\
This is suitable for local navigation tasks where long histories have little effect on the confidence of a pose in local space.

The special-case where only one measurement is preserved in the sliding window, is identical to an Extended Kalman filter.

## Fixed-Size Optimizer
(not yet available)

This filter implements a sliding window similar to the Fixed-Lag optimizer, but aims to prune the graph to some size limit.


Loading