Erion Plaku is a Program Director at the U.S. National Science Foundation (NSF) in the Directorate for Computer and Information Science and Engineering (CISE) and the Division of Information and Intelligent Systems (IIS). At NSF, Dr. Plaku is part of the Robust Intelligence cluster and co-leads the National Artificial Intelligence Research Institutes program. Prior to joining NSF, Dr. Plaku was an Associate Professor in the Department of Computer Science at George Mason University (2020-2023) and in the Department of Electrical Engineering and Computer Science at the Catholic University of America (2010–2020). Dr. Plaku received his Ph.D. degree in Computer Science from Rice University (2008). He was a Postdoctoral Fellow in the Laboratory for Computational Sensing and Robotics at Johns Hopkins University (2008–2010).
Introduction to Robotics
This course aims to make accessible to students fundamental principles in classical and modern approaches related to robot motion planning and the representation and use of geometric models acquired from sensor data. Two common themes will run throughout the course:
Note: Many of the lectures are accompanied by demo programs to illustrate the various concepts and algorithms. Since some of these can be assigned as programming projects for grading purposes, I have not made them publicly available. If you are an instructor and are interested in the lectures/projects/exams, send an email to me to obtain LaTeX source files for the lectures/exams as well as solutions to the programming projects and additional support code to illustrate the various algorithms.
[support code in C++ and Matlab]
Project 2: Potential Field Planning for Rigid Bodies and Manipulator Chains
[support code in C++ and Matlab]
Environment consists of a robot, a goal region represented as a circle, and several obstacles represented as circles as well. Graphical interface supports the dynamic addition and displacement of obstacles and goal. A new obstacle can be added at any time by pressing down the left button of the mouse. Each obstacle and the goal can be moved around by clicking inside them and holding the left button down while moving the mouse. To run the planner, user needs to press the key 'p' on the keyboard. Pressing 'p' again toggles between running and stopping the planner. User can change the radius of each obstacle and the goal by first pressing the key 'r' and then clicking inside an obstacle/goal, holding the left-button down while moving the mouse. Pressing 'r' again toggles between editing radius or moving the obstacles and the goal.
Implementation Notes: Rigid Body
Simulator provides access to goal center, goal radius, number of obstacles, current robot configuration (robot x, robot y, robot theta), and vertices of the polygon representing the robot. Simulator also computes the closest point on the i-th obstacle for any given point (x, y), see function ClosestPointOnObstacle
When computing the potential, it is recommended that you use each vertex of the polygon robot as a control point.
If using C++ support code, you should implement the function ConfigurationMove in the class RigidBodyPlanner. This function should return RigidBodyMove, which represents a small move (dx, dy, dtheta) by the robot. If using Matlab support code, you should implement the function RigidBodyPlanner.
Implementation Notes: Manipulator Chain
Environment consists of a 2d manipulator chain, a goal region represented as a circle, and several obstacles represented as circles as well. Simulator provides access to goal center, goal radius, number of obstacles, and start and end positions of each link in the chain. Simulator also computes the closest point on the i-th obstacle for any given point (x, y), see function ClosestPointOnObstacle Moreover, simulator also implements Forward Kinematics, see function FK.
When computing the potential, it is recommended that you use the end position of each chain link as a control point. You should follow a similar approach as in the case of rigid bodies. One difference is that in the case of the manipulator chain, the attractive potential should be computed only between the end effector (last point in the chain) and the goal and not between any intermediate links and the goal. In this way, the potential will guide the end effector and not the intermediate links toward the goal. The repulsive potential, as in the case of rigid bodies, should be computed between the end of each link and each obstacle.
Important: You can use an equivalent but easier to compute definition of the Jacobian. In this definition the partial derivative of the forward kinematics of the end position of the j-th joint with respect to the i-th joint angle with i <= j is given as
If using C++ support code, you should implement the function ConfigurationMove in the class ManipPlanner. This function should compute small moves for each link angle. If using Matlab support code, you should implement the function ManipPlanner.
Support Code: C++
Support Code: MATLAB
Project 3: Sampling-based Motion Planning
[support code in C++ and Matlab]
In this project, you will implement several sampling-based motion planners.
Environment consists of a robot, a goal, and obstacles (all represented as circles). Graphical interface supports the dynamic addition and displacement of obstacles and goal. A new obstacle can be added at any time by pressing down the left-button of the mouse. Each obstacle and the goal can be moved around by clicking inside them and holding the left-button down while moving the mouse. User can change the radius of each obstacle and the goal by first pressing the key 'r' and then clicking inside an obstacle/goal, holding the left-button down while moving the mouse. Pressing 'r' again toggles between editing radius or moving the obstacles and the goal.
First edit the scene and then run the planner. Do not make changes to the scene once the planner has started. Also do not change the initial position of the robot via the graphical interface, but use instead the input text file.
Pressing 'p' toggles between running and stopping the planner.
Support Code: C++
Support Code: MATLAB
For the final project, you can work on your own or with at most two other students. Each team can select from the list of final projects described below or propose their own.
Robot motions need to obey physical constraints due to underlying robot dynamics, e.g., a car cannot just move in any direction. To account for physical constraints, robot motions are often expressed as a set of differential equations
Given several robots Robot1,...,RobotN, initial configurations qinit1,...,qinitN, and goal configurations qgoal1,...,qgoalN the objective is to compute for each Roboti a path from qiniti to qgoali that avoids collisions not only with the obstacles but also with the other robots. Motion-planning approaches for multiple robots can be divided into three categories: centralized planning, decoupled planning, and prioritized planning.
The objective in manipulation planning is to be able for the robot to grasp an object and place it in a different configuration while avoiding collisions with obstacles. Note that as part of the solution it may be necessary for the robot to temporarily lay the object on the ground and re-grasp it at a different position. For the final project, you could implement a sampling-based approach for manipulation-planning problems. In particular, you could implement FuzzyPRM (Nielson, Kavraki: “A two Level Fuzzy PRM for Manipulation Planning”, IROS 2000, pp. 1716–1722), which has been shown to effectively solve manipulation-planning problems.
In this setting, the objective is to estimate the global pose of the robot based on a model of its motions and sensor measurements. You can use various approaches, such as Kalman filters, Particle filters, etc.
Illustrations of bug algorithms, potential fields, and sampling-based motion planners.
Bug0 algorithm
Bug1 algorithm
Bug2 algorithm
Potential field path planner for rigid bodies
Potential field path planner for articulated chain
Potential field path planner getting stuck in local minima
Potential field path planner with moving obstacles
Rapidly-exploring Random Tree (RRT) path planner
Expansive-Space Tree with Grid (ESTGrid) path planner
Phuong Pham: Motion planning with moving obstacles RRT combined with potential fields (in simulation)
Phuong Pham: Motion planning with moving obstacles (using the iRobot Create)
Phuong Pham: Motion planning with moving obstacles (using the iRobot Create)
Minh Le: Motion planning with multiple goals (in simulation)
Minh Le: Motion planning with multiple goals (using the iRobot Create)
Motion planning with differential constraints (second-order dynamics model of a differential drive)
Motion planning with differential constraints (second-order dynamics model of a car-like robot)