Replies: 6 comments 9 replies
-
As @nahueespinosa ventures into C++ L4 territory focusing on concurrency and high performance code, and @camistolo signs up for a C++ L3 with an emphasis in robotics (and lots and lots of templates 😃), I (that is we) think we can pursue something like this. Once we've sorted out the operational details, I'll hoist this discussion in a ticket. |
Beta Was this translation helpful? Give feedback.
-
Leaving this here for inspiration: https://www.youtube.com/watch?v=RmY82ApjCMQ |
Beta Was this translation helpful? Give feedback.
-
In general, an MCL algorithm consists of three fundamental components: a particle filter, a motion model and an observation model. Furthermore, for a given particle filter, different sampling variants can be identified. This is an attempt to classify articles to make sense of all this.
FYI @camistolo, feel free to contribute to this list. |
Beta Was this translation helpful? Give feedback.
-
Bibliography and resources:
Existing implementations: |
Beta Was this translation helpful? Give feedback.
-
I've been reading several articles and looking at the
Both solutions have a slightly different algorithm definition for the filter:
IMO the combination of the two for a generic implementation could look like:
Where a clear |
Beta Was this translation helpful? Give feedback.
-
Some years ago when I was learning GPU programming I study some form of parallelization of particle filter using beta c++ Thrust (final course project), I made this article using an ackerman robot. The principal problem is in the resampling where some data need to be shared but some improvements can be found in the bibliography. If you think that can give some insight I can review in details what I do. |
Beta Was this translation helpful? Give feedback.
-
Monte Carlo Localization (MCL) is a family of non-parametric Bayesian state estimation algorithms, fairly popular in robotics. Over the years, quite a few variations of this idea have been developed: NDT MCL, Dual Timescale NDT MCL, QMCL, and yet only AMCL has seen widespread use and for a very narrow class of measurement and motion models (e.g. the typical diff drive robot with a 2D lidar). Moreover, the natural ease for parallelization that these algorithms afford is rarely leveraged.
Some ROS1 packages have come out from academia (e.g.
quickmcl
,ndt_localization
) and there have been attempts to substitute AMCL in Navigation2 (see ros-navigation/navigation2#1391 and ros-navigation/navigation2#1930), but a production-ready, general MCL package for ROS 2 remains a pipe dream.There is a room for an implementation to emerge.
Beta Was this translation helpful? Give feedback.
All reactions