-
Notifications
You must be signed in to change notification settings - Fork 20
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
Add differential motion model #28
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is the implementation of update_min_d
and update_min_a
left for the future? ProbRobotics mentions their reason to be as a strategy for variance reduction in p109, section 4.3.4, since a static robot may cause diversity loss in the particle set
(I confess I always though that was more of an implementation specific problem, since even in that case, the motion model should add diversity by adding zero-mean noise, instead of not moving any particle and therefore eventually depleting randomness by leaking it through the resampling process, but they wrote a book, I didn't).
4482ffb
to
22293d1
Compare
22293d1
to
9fed5cf
Compare
Yes, I'd rather defer that for now, since it affects our resampling strategy. For the record, I've experimented with the extreme case they mention in the book: static robot, no sensor updates, and continuous resampling. Diversity disappears almost immediately leaving a single particle. I've also seen the filter (with sensor updates) converge quickly to a sub-optimal location when the variance of the motion model is small, which will happen if the robot doesn't move. Regarding the motion update and apply step, I think we can keep updating the particle poses when we skip the resampling step. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. Notice that dropping the alpha prefix may make it harder to match parameters in this mcl to parameters in the current AMCL implementation (and the book, fwtw).
This patch adds a differential drive motion model to the main package with its corresponding tests. The implementation is based on Probabilistic Robotics, Chapter 5.4.2 with some extras from the
nav2_amcl
package that were also re-implemented inQuickMCL
:See https://vorpal.se/posts/2019/apr/04/amcl-reverse-engineering/#odometry.
Related to #3.