Python代写|Assignment代写 - CSC477 – Introduction To Mobile Robotics

CSC477 – Introduction To Mobile Robotics
assignment 3, 15 points
due: Nov 18, 2020, at 3pm
Course Page:
Overview: This assignment deals with estimation and mapping. You will implement occupancy grid
mapping based on 2D LiDAR observations and known poses. You will also implement a simplified version
of GraphSLAM for range observations to uniquely identifiable landmarks. Finally, you will write down the
main components of an Extended Kalman Filter for a localization problem.
1 Occupancy grid mapping (5pts)
In this exercise you are going to implement parts of the occupancy grid mapping system discussed in class.
In particular, you are going to map an environment based on known odometry estimates and known 2D laser
scans. Do git pull under your CSC477 repository to get the starter code. The functionality that you need
to implement is marked using to-do comments in the file estimation_assignment/python/occupancy_ To run your code, cd path/to/csc477_fall20/estimation_assignment and execute
the following commands on three different terminals:
rosbag play laser_and_odometry.bag
roslaunch estimation_assignment occupancy_grid_mapping.launch
rosrun rviz rviz
When rviz initializes, go to File > OpenConfig and then load the configuration file in estimation_
assignment/resources/comp417.rviz which is going to start the visualization of laser scan messages,
frames of reference, and debugging visualizations. Save this configuration file as the default in your
/home/username/.rviz/default.rviz, so you won’t have to do this every time you restart rviz. In
the roslaunch command given above, the standard deviation of the odometry orientation noise is given
in degrees. In this example the true yaw of the robot is corrupted by random noise from N (0, 2.52).
Similarly, the true position is corrupted by random noise from N (0, 0.12), which is expressed in meters.
laser_and_odometry.bag is a recording of laser scans and odometry data in the environment you used in
Assignment 1. The expected result for perfect odometry looks similar to Figure 1.
Figure 1: Part of the robot’s mapping task during the (0,0) noise trajectory.
What you need to submit: 5 images of maps produced by your mapper, with noise parameters (0, 0), (2.5,
page 1 of 3
CSC477: Introduction to Mobile Robotics - Assignment 3
0), (5, 0), (2.5, 0.1), (5, 0.1) respectively. Your images should be named map_[0|1|2|3|4]_firstname_
lastname.png. Also, submit a video recording of the rviz visualization for the odometry noise combi-
nation (0,0), demonstrating your map being built from beginning to end. Your video should be named
2 Least squares localization (5pts)
In this exercise you are going to solve the localization problem in a map of known landmarks. In partic-
ular, assume your robot has 2D state xt = [px(t) py(t)]
T and an omnidirectional motion model xt+1 =
xt + utδt + wt, where wt ∼ N (0, σ2wI) is zero-mean Gaussian noise. The robot is moving through an en-
vironment that has L static landmarks l1, ..., lL whose positions are known. Occasionally, the robot makes
the following set of measurements: z
t = ||xt − li|| + nt where nt ∼ N (0, σ2n), for some of the available
landmarks. Your goal is to estimate the sequence of states x1:T by minimizing a least squares cost function.
You can find starter code in estimation_assignment/python/ It provides the set of
measurements made at each timesteps. Your task is to implement the cost function using numpy and the
nonlinear least squares solver in scipy.optimize.least_squares. There are to-do comments in the code
that explain in detail what you need to implement. After you are done with your implementation, the
expected outcome is the following figure:
Figure 2: The robot starts at (0,0) and moves throughout the world, making measurements of static, known
What you need to submit: your code in the file estimation_assignment/python/
page 2 of 3
CSC477: Introduction to Mobile Robotics - Assignment 3
P.S.: You can think of cell phone localization based on static cell towers as a particular application of
this problem.
3 Extended Kalman Filter (5pts)
Assume you have a robot that follows Dubins car dynamics on the plane. Its state is xt = [px(t) py(t) θ(t)].
Also assume that you have three landmarks li = [l
x l
y ] in the world. At each point in time the robot
observes all three landmarks, with some sensor noise. The measurement model consists of the Euclidean
distances from the robot’s current state to each of the three landmarks, plus noise. Formulate an EKF
estimator for this problem. Specifically, formally define the dynamics model, the observation model, their
Jacobians, and the covariances of their noise processes. There is no implementation required for this question,
but if you want to do it, you can find starter code at path/to/csc477_fall20/filtering_examples/
python. Submit your work for this question as a pdf document or as a scanned image of your handwritten
4 How to submit
Submit all your work in a file called that contains your extensions to the
provided starter code, as well as the five images, the video, and the pdf file. Submissions will be done on
page 3 of 3