Python代写 - CSC477 – Introduction To Mobile Robotics

CSC477 – Introduction To Mobile Robotics
assignment 2, 15 points
due: Oct 28, 2020, at 3pm
Course Page: http://www.cs.toronto.edu/~florian/courses/csc477_fall20
Overview: In this assignment you will implement path planning algorithms, such as A* and RRT. You
will also formulate an LQR problem.
1 A* implementation (5pts)
Implement the A* algorithm for an omnidirectional robot on a 2D plane. You are given starter code that im-
plements Dijkstra’s algorithm in Python at the following repository: https://github.com/florianshkurti/
csc477_fall20, under the directory path_planning_and_control_assignment/python. You need to mod-
ify the function plan() in the file astar_planner.py. You can run this file as follows:
cd path/to/repo/path_planning_and_control_assignment/python/
python astar_planner.py ../worlds/map.pkl
What you need to submit: 3 images of paths produced by your planner. Use the same starting state that
is currently provided, and 3 distinct destination states that are far from each other. Your images should
be named astar_result_[0|1|2]_firstname_lastname.png Also, for each of the 3 destination states
provided above, plot (a) an image of the visited states using Dijkstra’s algorithm and (b) an image of the
visited states using A*. Your images should be named dijkstra_visited_[0|1|2]_firstname_lastname.
png and astar_visited_[0|1|2]_firstname_lastname.png.
2 RRT implementation (5pts)
Implement the RRT algorithm for an omnidirectional robot on a 2D plane. You are given starter code that
implements some of the RRT functionality. You need to modify multiple functions which are annotated
with TODOs in the file rrt_planner.py. Note that this version of the RRT is the simplest version to
implement in the sense that we are not requiring kd-tree-based nearest neighbor queries and complicated
collision queries. We use occupancy grids to simplify collision detection. Once you are done implementing
the required functionality you can run this file as follows:
cd path/to/repo/path_planning_and_control_assignment/python/
python rrt_planner.py ../worlds/map.pkl
What you need to submit: 3 images of paths produced by your planner. Use the same starting state that
is currently provided, and 3 distinct destination states that are far from each other. Your images should be
named rrt_result_[0|1|2]_firstname_lastname.png
3 LQR (5pts)
Recall the example of the double integrator system with friction, or curling stone, that we saw in class:
mp¨ = u− αp˙ (1)
where α is the friction coefficient, p is the 2D position vector of the stone, and u is the external control
applied to the stone. You are given two curling stones of equal mass m. They start from different starting
positions, with different starting velocities. You are tasked with finding an LQR controller/policy that
receives feedback on the joint state of the two curling stones and outputs command vectors u1 and u2 so
page 1 of 2
CSC477: Introduction to Mobile Robotics - Assignment 2
Figure 1: How the RRT planner will look like once you implement it
that the two stones end up very gently hitting each other and not bouncing away from each other. In other
words, define a joint linear system
xt+1 = Axt +But (2)
and an instantaneous cost function
g(xt,ut) = x
T
t Qxt + u
T
t But (3)
such that when the state xt stabilizes around 0 the stones are touching each other and their individual
velocities are also stabilized around 0.
What you need to submit: a file called lqr.pdf with the definition of the matrices A, B, Q, R, as well as
the steps you took to arrive at your formulation.
4 How to submit
Similarly to assignment 1, you will submit all your work in a file called path_planning_and_control_
assignment.zip which will contain your extensions to the provided starter code, as well as the six images
and the pdf file.
page 2 of 2