Mobile Robot Control 2024 Ultron:Solution 4
Jump to navigation
Jump to search
0. Assignment introduction
0.1 Explore the code framework
1.How is the code is structured?
- The code is structured into several header files, with
ParticleFilter.h
andParticleFilterBase.h
being the main ones. - The
ParticleFilter
class inherits from theParticleFilterBase
class. ParticleFilterBase
contains the foundational implementation and common functionalities for the particle filter, such as particle initialization, propagation, weight computation, and resampling strategies.ParticleFilter
extendsParticleFilterBase
by adding specific update and resampling strategies.
2.What is the difference between the ParticleFilter and ParticleFilterBase classes, and how are they related to each
other?
- Differences:
ParticleFilterBase
provides the basic functionalities and interfaces of the particle filter, including particle initialization, propagation, weight computation, and setting resampling strategies.ParticleFilter
inherits fromParticleFilterBase
and implements specific update and resampling strategies. It extends the base class by providing concrete implementations for theupdate
andconfigureResampler
methods.
- Relationship:
ParticleFilter
is a subclass ofParticleFilterBase
, inheriting all its attributes and methods while overriding or extending some of them to provide additional functionalities.
3.How are the ParticleFilter and Particle class related to eachother?
- The
ParticleFilter
class uses aParticleList
member variable_particles
to store all the particles, whereParticleList
is defined asstd::vector<Particle>
. - The
ParticleFilter
class manages and operates on these particles, including initializing, propagating, and resampling them. - Each
Particle
instance represents an individual particle, containing pose information and relevant methods for its manipulation.
4.Both the ParticleFilterBase and Particle classes implement a propagation method. What is the difference between the methods?
- In
ParticleFilterBase
, the propagation method ispropagateSamples(Pose dPose)
, which propagates the poses of all particles based on odometry information and random noise. - In the
Particle
class, the propagation method ispropagateSample(const Pose &dPose, const double proc_noise[2], const double offset_angle)
, which propagates the pose of a single particle based on the given displacement and noise. - Differences:
- The propagation method in
ParticleFilterBase
is designed to handle the propagation of all particles, while the method in theParticle
class deals with the propagation of an individual particle. - The
ParticleFilterBase
propagation method typically calls theParticle
propagation method to update each particle's pose.
- The propagation method in