Localisation · University · about 35 min
The three steps in a loop on a real mat, with tags as the measurement.
[1 mark]Put one tick of Monte Carlo localisation in order.
Number the lines 1 to 4 to put them in the right order.
Weigh every particle against the sensor readingMove every particle by the odometry, plus noiseReport the weighted mean as the estimateIf neff is low, resample[1 mark]What does this program print?
depth = [0.9, 0.3, 0.05] tag = [0.05, 0.3, 0.9] both = [a * b for a, b in zip(depth, tag)] total = sum(both) print([round(w / total, 2) for w in both]) added = [a + b for a, b in zip(depth, tag)] print([round(w, 2) for w in added])
[1 mark]The filter has a weight from the depth sensor and a weight from a tag seen by the camera for each particle. How should they be combined?
[1 mark]The cloud collapses onto the wrong answer. Which of these could cause it?
Tick every answer that is true.
[1 mark]The spread of the cloud stays large however long the robot stands still. What does the page recommend?
[1 mark]The filter tracks well for a minute and then loses the robot for good. What is the likely cause and fix?
[1 mark]What does MCL give the robot that dead reckoning does not?
Run the full filter while driving at least 50 cm. Plot spread, and print my y:, the robot's position on the mat as your filter has it. No position(). Drive straight, and expect the tag card to pull your answer a few centimetres ahead once the robot is near it.
from bugbot import * import math, random connect() DT, N, SIGMA = 0.1, 300, 3.5 particles = [random.uniform(0, 200) for i in range(N)]
Plan your program here, then type it in and press Run.