- AREA OF FOCUS: Our area of focus was optimizing parameter constants for the particle filter to see if there was any notable change in the robots' ability to localize in a timely matter.
- HYPOTHESIS: With this area of focus, we think that minor changes to some of the constants, those associated with the change in both rotational noise and distance of the particles, will have a positive effect on the robots' ability to localize. We specifically looked at the 'alpha1' and 'alpha2' constants, with the intent of expanding and testing 'alpha3' and 'alpha4' alongside 'alpha1' and 'alpha2, tuning these parameters to improve the robot's performance.
- METRIC: To measure how our changes in the constants effected the robot we examined whether or not the robot localized within our set time ceiling, which was 2 minutes, and if so, how long (in seconds) it took to localize on average for each set of test iterations.
- DATA: We collected our data through a text file which is attached at the bottom of this page. A brief description of our goals is given at the beginning of the file, along with an easy identifier (****) to distinguish which parameters were tuned for each test. A brief note is left for each parameter test on the speed/accuracy of the localization, and each test is easily distinguishable from the next in the text file.
- ALGORITHMS/PARAMETER CHANGES: As stated above, the parameters that we altered were 'alpha1' (difference in rotational noise) and 'alpha2'(difference in distance) with the intent of continuing and examining 'alpha3' and 'alpha4'. The algorithms that these numbers altered as the ParticleFilter.angle_diff() and gauss(), as shown below in calculation of the robot's pose differences for the particles, delta_rot1_hat, delta_trans_hat, and delta_rot2_hat:
delta_rot1_hat = ParticleFilter.angle_diff(delta_rot1, gauss(0, self.alpha1 * delta_rot1_noise * delta_rot1_noise + self.alpha2 * delta_trans * delta_trans))
delta_trans_hat = delta_trans - gauss(0,
self.alpha3 * delta_trans * delta_trans + self.alpha4 * delta_rot1_noise * delta_rot1_noise + self.alpha4 * delta_rot2_noise * delta_rot2_noise)
delta_rot2_hat = ParticleFilter.angle_diff(delta_rot2, gauss(0, self.alpha1 * delta_rot2_noise * delta_rot2_noise + self.alpha2 * delta_trans * delta_trans))
- IN CONCLUSION: We suspect that there are slight changes to these alpha values that improved the robot's performance; a slight increase in both 'alpha1' for the difference in rotational noise and 'alpha2' for the difference in distance appeared, in our limited testing, to offer slightly faster localization times than the original constant values. We believe that when 'alpha2' is slightly larger than 'alpha1', yet still small (i.e. 0.25 for 'alpha1' and 0.3 for 'alpha2') that we get improved results. However, the testing done was not extensive enough to provide definitive proof that our parameter changes are significantly better for robot performance. We also know that a limited and simple map can result in more skewed results, because there aren't enough distinctive traits about the map space for the robot's scanners to detect differences.
- TO FUTURE STUDENTS: To repeat our experiments, we recommend driving the same route with the robot in order to be sure that alterations in the parameters are offering any improvement, and beginning the Kidnapped Robot at the same location for the same reason. Beyond that, however, replication of our results (as they are) should be simple enough. Attempting to isolate which values for 'alpha3' and 'alpha4' would be our next recommended step, just to see if further tuning can keep improving the localization speed.