![Static Badge](https://img.shields.io/badge/Coursera-University_of_Pennsylvania-blue?logo=coursera)
![Static Badge](https://img.shields.io/badge/MATLAB-R2022a-orange)
<div align="justify">
# Robotics: Computational Motion Planning
The University of Pennsylvania offers the MOOC [**Robotics: Computational Motion Planning**](https://www.coursera.org/learn/robotics-motion-planning?specialization=robotics) which is available on Coursera. The course is self-paced and instructed by [CJ Taylor](https://www.grasp.upenn.edu/people/camillo-j-taylor/). It is also part of the [**Robotics Specialization**](https://www.coursera.org/specializations/robotics).
This repository showcases my progress in this course. However, I must adhere to the rules and guidelines set by the Coursera Honor Code, which prohibit me from providing complete answers to the quizzes and computer assignments. As a result, this repository only includes general summaries of the course topics, descriptions of the assignments, and the final results and procedures.
Nevertheless, I am more than willing to offer assistance and support to other students or enthusiasts privately. If you have any questions or need guidance, please don't hesitate to reach out to me. Additionally, I am particularly enthusiastic about collaborating on robotics systems, specifically motion planning problems and other topics covered in this course. Whether it's providing help or being part of a larger team, I would be thrilled to contribute to solving these challenges.
## Introduction
Robotic systems typically include three components: a mechanism that is capable of exerting forces and torques on the environment, a perception system for sensing the world, and a decision and control system that modulates the robot's behavior to achieve the desired ends. In this course, we will consider the problem of how a robot decides what to do to achieve its goals. This problem is often referred to as Motion Planning and it has been formulated in various ways to model different situations. You will learn some of the most common approaches to addressing this problem including graph-based methods, randomized planners, and artificial potential fields. Throughout the course, we will discuss the aspects of the problem that make planning challenging.
## Basic Problem
The goal of defining a basic motion planning problem is to isolate some central issues and investigate them in depth before considering additional difficulties.
In the basic problem, we assume that the robot is the only moving object in the workspace and we ignore the dynamic properties of the robot, thus avoiding temporal issues. We also restrict motions to non-contact motions, so that the issues related to the mechanical interaction between two physical objects in contact can be ignored. These assumptions essentially transform the "physical" motion planning problem into a purely geometrical path planning problem. We simplify even further the geometrical issues by assuming that the robot is a single rigid object, i.e. an object whose points are fixed with respect to each other. The motions of this object are only constrained by the obstacles.
## `WEEK 1` Graph-Based Motion Planning
Motion planning methods transform a "continuous" problem into a "discrete" problem of searching a graph between an initial node and a goal node. Various methods have been developed for searching graphs. In the following, the goal is to construct a path, usually the shortest, through the grid/ graph from the start to the goal.
### Dijkstra
The algorithm operates by maintaining a priority queue of nodes, initially containing only the starting node. It assigns a tentative distance value to each node, representing the shortest known distance from the starting node to that node. The algorithm then iteratively selects the node with the smallest tentative distance and explores its neighboring nodes. It updates the tentative distances of these neighbors if a shorter path is found. This process continues until all nodes have been visited or the shortest path to the target node is found.
Dijkstra's algorithm guarantees finding the shortest path in a graph with non-negative edge weights. Also, The algorithm's time complexity is generally dependent on the number of nodes and edges in the graph, making it efficient for sparse graphs.
### A* Algorithm
A* algorithm is an extension of the former algorithm. Dijkstra search in a sense is uninformed, in that the search moves through the graph without any preference for or influence on where the goal node is located. For example, if the coordinates of the goal node are known, then a graph search can use this information to help decide which nodes in the graph to visit (i.e., expand) to locate the goal node. Alas, although we may have some information about the goal node, the best we can do is define a heuristic that hypothesizes an expected, but not necessarily actual, cost to the goal node. For example, a graph search may choose as its next node to explore one that has the shortest Euclidean distance to the goal because such a node has the highest possibility, based on local information, of getting closest to the goal.
The A∗ algorithm searches a graph efficiently, with respect to a chosen heuristic. Also, A∗ will always terminate, ensuring completeness.
There are variations or special cases of A∗ in which the search becomes a greedy search because the search is only considering what it “*believes*” is the best path to the goal from the current node. As you may notice, *Dijkstra* Algorithm is When the planner is not using any heuristic information but rather growing a path that is shortest from the start until it encounters the goal.
### Assignment
In this assignment, I worked on writing Matlab code to implement planning systems that work on 2D grid-like environments. For both sections, the input map was specified as a 2D logical array where the false or zero entries correspond to free cells and the true or non-zero entries correspond to obstacle cells. The goal of these planning routines was to construct a route between the specified start and destination cells.
<div align="center">
| <img src=".\Figures\WEEK1\djkstra.gif" alt="djkstra" width="500"/> |
|:--:|
| The Classic <b>Dijkstra’s Algorithm</b> |
</div>
<div align="center">
| <img src=".\Figures\WEEK1\astar.gif" alt="astar" width="500"/> |
|:--:|
| <b>A* Algorithm</b> with Euclidean Heuristic Function |
</div>
## `WEEK 2` Configuration Space
### Configuration Space
To create motion plans for robots, we must be able to specify the position of the robot. More specifically, we must be able to give a specification of the location of every point on the robot, since we need to ensure that no point on the robot collides with an obstacle.
The configuration of a robot system is a complete specification of the position of every point of that system. The configuration space, or C-space, of the robot system, is the space of all possible configurations of the system.
### Collision Detection
Polygonal obstacles are convenient to work with because they provide an explicit description of the configuration space obstacles.
Deciding whether the robot and the obstacle intersect is now a matter of determining whether any of the robot triangles overlap any of the obstacle triangles.
Triangles are convex polygons. Thus, we can test whether two triangles intersect by checking all of the sides on both triangles and testing whether that side acts as a separating line where all of the points from one triangle lie on one side and all those from the other lie on the opposite side.
### Assignment
In this assignment, I developed a program to help guide the two-link robot arm from one configuration to another while avoiding the objects in the workspace. In this example, the configuration of the robot is captured by the two joint angles, θ1 and θ2.
This assignment is split into
没有合适的资源?快使用搜索试试~ 我知道了~
宾夕法尼亚大学机器人学:计算运动规划课程matlab代码.zip
共27个文件
pdf:8个
jpg:7个
gif:6个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 157 浏览量
2024-05-18
17:36:26
上传
评论
收藏 29.83MB ZIP 举报
温馨提示
1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
资源推荐
资源详情
资源评论
收起资源包目录
宾夕法尼亚大学机器人学:计算运动规划课程matlab代码.zip (27个子文件)
宾夕法尼亚大学机器人学:计算运动规划课程matlab代码
Robotics-Computational-Motion-Planning-main
Assignment 2
TwoLinkCSpace.pdf 131KB
TwoLinkCSpace.mlx 97KB
Assignment 2 - Configuration Space.pdf 176KB
Figures
WEEK4
configuration-space.jpg 32KB
artificial-potential-fields.gif 25.12MB
general-potential-field.jpg 44KB
obstacle-potential-field.jpg 47KB
quiver-plot.jpg 55KB
WEEK2
twolink-cspace.jpg 42KB
dijkstratour.gif 1.04MB
dijkstratour-animation.gif 77KB
dijkstratour.jpg 46KB
twolink-cspace-equal.jpg 51KB
WEEK1
astar.gif 332KB
djkstra.gif 937KB
WEEK3
sixlink-prm.gif 941KB
Erfan-Riazati-Certificate.png 826KB
Assignment 3
SixLinkPRMScript.mlx 55KB
SixLinkPRMScript.pdf 103KB
Assignment 3 - Probabilistic Roadmap.pdf 94KB
Assignment 1
GraphBasedPlanner.pdf 83KB
Assignment 1 - GraphBasedMethods.pdf 101KB
GraphBasedPlanner.mlx 27KB
Assignment 4
PotentialFieldScript.mlx 729KB
Assignment 4 - Gradient Based Planner.pdf 188KB
PotentialFieldScript.pdf 336KB
README.md 14KB
共 27 条
- 1
资源评论
Matlab科研辅导帮
- 粉丝: 2w+
- 资源: 7669
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功