-
Notifications
You must be signed in to change notification settings - Fork 123
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
Does Fuse support fusing GNSS and IMU data? #200
Comments
There is an IMU sensor model available here. It is treated basically the same way as is done in robot_localization In a very basic way, GPS data could be treated as a direct position/pose measurement in the map frame using a "pose" sensor. So, in some very basic way, it is possible to fuse IMU and GNSS data right now. But I'll happily take submissions for a sensor that does a better job modelling GPS/GNSS measurements, or for better IMU models. Or you can easily create your own fuse plugin repo and share sensor models with the community that way. If you are interested in creating your own sensor models and need any help getting started, just let me know. I'll happily walk you through the creation of a new sensor type. |
Thanks for your quick reply. I will have a deeper look at the package and give it a try. Is there any guide/tutorial available to follow? |
Not really. Which is frustrating, I know. I will eventually get some tutorials put together. But until then, I'll share an informal conversation I've had with another user: fuse is "just" a wrapper around the Google Ceres Solver optimization engine. The sensor plugins generate measurement constraints/cost functions/factors/whatever from sensor data. Those measurement constraints are then sent to an "optimizer", which incorporates all of the constraints from all of the sensors and solves for the best estimate of all states/variables. So an "optimizer" class will be the thing that launches all of the senor plugins. fuse ships with two different variants: a batch optimizer and fixed-lag optimizer. A batch optimizer keeps all of the constraints and variables forever. This is useful for mapping/SLAM type applications. The fixed-lag smoother maintains a fixed-lag time window. When a variable is older than the lag size, it is automatically removed (marginalized) from system. This is useful for localization type applications and is similar in nature to the robot_localization's EKF. In addition to Sensors and Optimizers, fuse also defines Motion Models and Publishers. A motion model is very similar to a sensor, only it generates constraints in response to a request, rather than in response to a received sensor measurement. This is used by fuse to connect the various sensor measurements together. And publisher models receive the updated state variables after each optimization cycle and publish something useful out to ROS. This could be the latest state, or a trajectory of the last N states, or even a map (hypothetically....I don't have publisher for maps yet). And now to the configuration. A basic system will launch the fixed lag smoother node:
And then the config file must be generated:
|
Thanks @svwilliams, I think that will be helpful as a starter point. |
@svwilliams would the robot_model package support fusing of VO (x,y, yaw) and encoder values (x,y, yaw)? Thanks |
Hi, just wonder if fusing GNSS and IMU data is currently supported or has been done using Fuse.
Thanks.
The text was updated successfully, but these errors were encountered: