A bug occurs in ParticleFilter::Predict when the angular displacement between two odometry readings is a reflex angle (>180º). Since our standard deviation calculations are linear functions of the angular displacement, this inflates the standard deviations.
This bug arises when running rosbag play on 2020-04-01-17-23-38.bag. At time 36.5, the particle cloud explodes. Here is some debug output:
Converting the reflex angle to its negative convex counterpart (-1.0368º) should fix this problem. We should also be normalizing angles in general so they don't exceed 2pi.
A bug occurs in
ParticleFilter::Predict
when the angular displacement between two odometry readings is a reflex angle (>180º). Since our standard deviation calculations are linear functions of the angular displacement, this inflates the standard deviations.This bug arises when running
rosbag play
on2020-04-01-17-23-38.bag
. At time 36.5, the particle cloud explodes. Here is some debug output:Converting the reflex angle to its negative convex counterpart (-1.0368º) should fix this problem. We should also be normalizing angles in general so they don't exceed 2pi.