Starting from:
$30

$24

Assignment 01 Solution

This assignment will introduce you to the idea of estimating the motion

of a mobile robot using wheel odometry, and then also using that wheel

odometry to make a simple map. It uses a dataset previously gathered in

a mobile robot simulation environment called Gazebo. Watch the video,

'gazebo.mp4' to visualize what the robot did, what its environment

looks like, and what its sensor stream looks like.

 

There are three questions to complete (5 marks each):

 

Question 1: code (noise-free) wheel odometry algorithm

Question 2: add noise to data and re-run wheel odometry algorithm

Question 3: build a map from ground truth and noisy wheel odometry

 

Fill in the required sections of this script with your code, run it to

generate the requested plots, then paste the plots into a short report

that includes a few comments about what you've observed. Append your

version of this script to the report. Hand in the report as a PDF file.

 

requires: basic Matlab, 'gazebo.mat'

 

======================================================

Question 1: code (noise-free) wheel odometry algorithm

======================================================

 

Write an algorithm to estimate the pose of the robot throughout motion

using the wheel odometry data (t_odom, v_odom, omega_odom) and assuming

a differential-drive robot model. Save your estimate in the variables

(x_odom y_odom theta_odom) so that the comparison plots can be generated

below. See the plot 'ass1_q1_soln.png' for what your results should look

like.

=================================================================

Question 2: add noise to data and re-run wheel odometry algorithm

=================================================================

 

Now we're going to deliberately add some noise to the linear and

angular velocities to simulate what real wheel odometry is like. Copy

your wheel odometry algorithm from above into the indicated place below

to see what this does. The below loops 100 times with different random

noise. See the plot 'ass1_q2_soln.pdf' for what your results should look

like.




save the original odometry variables for later use

v_odom_noisefree = v_odom;

omega_odom_noisefree = omega_odom;

================================================================

Question 3: build a map from noisy and noise-free wheel odometry

================================================================

 

Now we're going to try to plot all the points from our laser scans in the

robot's initial reference frame. This will involve first figuring out

how to plot the points in the current frame, then transforming them back

to the initial frame and plotting them. Do this for both the ground

truth pose (blue) and also the last noisy odometry that you calculated in

Question 2 (red). At first even the map based on the ground truth may

not look too good. This is because the laser timestamps and odometry

timestamps do not line up perfectly and you'll need to interpolate. Even

after this, two additional patches will make your map based on ground

truth look as crisp as the one in 'ass1_q3_soln.png'. The first patch is

to only plot the laser scans if the angular velocity is less than

0.1 rad/s; this is because the timestamp interpolation errors have more

of an effect when the robot is turning quickly. The second patch is to

account for the fact that the origin of the laser scans is about 10 cm

behind the origin of the robot. Once your ground truth map looks crisp,

compare it to the one based on the odometry poses, which should be far

less crisp, even with the two patches applied.



More products