|
Using @berthy424's excellent GUI display, I watched my particles chase the robot around the screen. But then I noticed the "ground truth" robot wasn't moving that smoothly. The ground truth robot has just as much noise as the particles. The "ground truth" robot is using the same distance_noise and steering_noise parameters as the particles. Why is that? I thought the noise in the particles was (at least partly) to introduce randomness in the process, so that the particles could find the real robot. But the real robot doesn't need noise to find itself; it's right there. Why is it moving so noisily? |
|
When the robot move, it is subjected to external disturbances that results in noise in steering and distance. These disturbances are modeled as noise here. For example, steering noise may due to bumps on the road, and distance noise may due to tire slipping on the road. Because the motion model of the particle and the ground truth should match, therefore the particles' motion model would include these noise as well. The ground truth contains noise not because the particles have noise; rather it is the other way around. But the motion model of the particle and the ground truth shouldn't necessarily match. If the robot car were perfect, we would still need noise in the particles, because noise is important for the algorithm. Look at it this way: suppose the car was just sitting there doing nothing. We would definitely need to move the particles; otherwise we might just as well run the filter only once, because we'd never improve our location. We put noise in the particles because once we've run the filter one cycle, we've found pretty good particles, but we can't make them better without randomly moving them around some. the measurement noise is important, but not the movement noise. if the robot is perfectly still, the measurement will triangulate the non-moving particles to the same spot. in this case the particles will be moved by the measurement. If we don't have movement noise, we aren't going to get better particles. The movement noise is what nudges a good particle into being a better particle. Try it. Compare your particle filter with and without movement noise, see which one is better. Remember what happens when we tried localizing the robot using histogram filter? The probability of the true robot position goes up when there were no movement uncertainty. The same intuition carry over here. Compare this to the Kalman filter. The movement noise is optional but measurement noise is necessary. Think about what happens if you take your claim to the limit. If the movement noise is so big that it dominates the actual movement, the particles are then uniformly distributed around the domain after each movement. Intuitively, do you believe having noise is better than no noise? I agree with Anne Paulson here. If you didn't have any movement noise, then all copies of particle A would be identical to particle A, so you could never improve upon A...you could only select it and keep it. No? I did try it in the code. If the initial guess is way off, the particles do not seem to converge very fast (without movement noise), although this also happens with noise, so it's hard to do enough runs to know if measurement noise truly helps. If anyone else can explain the intuition regarding how variation in particles is generated without movement noise, I would be interested to hear it. @smokesilver |
|
We're applying our particle filter to a simulation of a robot. In order to make that robot simulation a bit more realistic, we inject noise into its movements. In hw3-6 both the filter's prediction (transition model) noise and the noise of the simulated motion have the same statistics, but I don't think they need to be the same. I don't have a good intuition of how wildly the statistics of the real (in this case simulated) motion noise and the transition model noise can differ before the filter stops performing adequately. |