Starting from:
$35

$29

Homework 5 Autonomous Mobile Robots Solution

A document containing the answers and gures should be uploaded to Gradescope as HW5writeup.pdf. All the code and the les needed to run the code are to be uploaded to Canvas as a zip le named HW5code.zip. Note, the code zip le should contain ONLY .m les, con g les and les containing data (if needed) and not any other le (writeup, assignment, simulator, toolboxes etc). Speci c functions, as indicated below, should be uploaded to their corresponding assignments on Canvas.

Notes about autograded assignments:

    • We highly recommend you develop and debug the autograded functions in Matlab. The error messages that the autograder provides are not as explicit as in Matlab

    • Before submitting, we highly recommend running your own test case with "Run Function" as it can reveal syntax errors, missing functions, etc. when transitioning to Canvas.

    • You may submit as many times as you like until the deadline

    • Make sure to also include the functions in the zip  le you upload to Canvas

    • Reusing code: We encourage you to reuse your prior functions in the new functions. For the auto-graded assignments, if you want to use a previous function you have written (for example robot2global), simply copy-paste it below the function you are writing

Introduction and Setup

In the Simulator, load loopMap and run a control program that will drive the robot into walls (you may use the function backupBump.m or write a new function). Make sure you are collecting the following sensor data in dataStore: truthPose, bump and depth. Allow the robot to move around the environment and bump into most (if not all) walls. Access the sensor data in the MATLAB workspace by typing global dataStore, and make sure the data was collected properly. You will use this data in the two mapping sections. Remember that in the simulator, the robot radius is .16, and the sensor origin is [.13 0].

As you have seen, each bump sensor of the Create returns a value of 1 if the sensor is triggered, and 0 otherwise (with no false alarms). Initialize a 25 25 occupancy grid of the environment with p0(occ) = 0:5 as the prior occupancy probability for all cells (i.e. ‘0 = 0). The boundaries of the environment in the x and y directions are [ 2:5; 2:5]. You may nd the MATLAB function meshgrid.m helpful.


Mapping - Occupancy Grid with Bump Sensor (45 points)

    1. Plot the occupancy grid boundaries and the robot’s trajectory. Indicate with a marker (e.g. star, triangle) the locations where a bump sensor was triggered.

    2. Write a function logOddsBump.m to calculate the log-odds ‘t(occ) of cells in the grid using only bump sensor measurements. Make sure you allow non-square grids (n m, where n is the number of cells along the X dimension and m the number of cells along the Y dimension). What are the inputs? what are the outputs?

    3. Explain the sensor model you used, assumptions you made in logOddsBump.m, and why they make sense.
    4. Write a function plotOccupancyGrid.m that given the log odds and the grid, plots unoccupied cells in white, occupied cells in black, and uncertain cells in shades of gray. You may use colormap(flipud(gray)), pcolor or image to help plot the grid cells. Plot the occupancy grid at three di erent time steps using the log odds obtained from datastore.truthPose and datastore.bump.

    5. If you had to choose for each cell whether it is occupied or free (for example, to use the map in a planning algorithm), what would you do? Apply this method to the grid at the last timestep and plot the result (each cell is assigned either 0 or 1).

    6. Repeat (4,5) with a 50  50 grid. What do you observe?

    7. What di erences might you expect to observe between the map generated using simulated bump sensors and one using real bump sensor data? Why?

Mapping - Occupancy Grid with Depth Information (45 points)

    1. Write a function logOddsDepth.m to calculate the log-odds ‘t(occ) of cells in the grid using only depth sensor measurements. What are the inputs? what are the outputs?

    2. Explain the sensor model you used, assumptions you made in logOddsDepth.m, and why they make sense.

    3. Plot the occupancy grid at three di erent timesteps using the log odds obtained from datastore.truthPose and datastore.rsdepth.

    4. Repeat (2,3) with a 50  50 grid. What do you observe?

    5. What are the pros and cons of using a  ner grid resolution?

    6. Compare the maps generated using depth with those using the bump sensor. Is one map \better" than the other? Why or why not?

    7. What di erences might you expect to observe between the map generated using simulated depth sensors and one using real depth sensor data? Why?

Test function (10 points)

Edit the function TestOccupancyGrid.m that takes as input,

    • dataStore

    • ‘0 (scalar value for the prior occupancy probability of grid cells)

    • NumCellsX (number of cells in the X axis)

    • NumCellsY (number of cells in the Y axis)

    • boundaryX (1x2 vector representing the interval of possible values for X, for example [-2.5 2.5])

    • boundaryY (1x2 vector representing the interval of possible values for Y, for example [-2.5 2.5]) outputs,

    • lFinalBump ( nal occupancy grid using bump sensor)

    • lFinalDepth ( nal occupancy grid using depth sensor)

and plots nal occupancy grids, one for the bump (as in part 4 of the mapping with bump sensor section) and one for the depth information (as in part 3 of the mapping with depth information section). Plots generated should have meaningful titles and labels.

Submit this function in the autograded assignment Homework 5 TestOccupancyGrid.m on Canvas. Course sta will use this function to test your code with di erent inputs, and we are using the autograder as a way to ensure that the test function runs. We are NOT testing for correctness of the algorithm. Make sure the zip le you submit on Canvas contains this function and all of the functions necessary to run it.


2

More products