ENAE 788M: Hands On Autonomous Aerial Robotics



Course Logistics


Welcome to ENAE 788M Hands On Autonomous Aerial Robotics course by Nitin J. Sanket and Chahat Deep Singh. This is an advanced graduate course that exposes the students with mathematical foundations of computer vision, planning and control for aerial robots. The goal is to train the students to develop real-time algorithms for the realization of autonomous aerial systems. The course is designed to balance theory with an application on hardware. The assignments will require a significant investment of time and energy. We have a no whining policy. All projects will be carried using quadrotors in a group of students.

Unlike traditional classes, this course will follow a "Flipped classroom model" where the lectures are uploaded online before the class. The students are advised to watch the videos before attending the class. The class sessions will be used for covering advanced topics, clarifications and hands-on sessions. There will also be some guest lectures by students/professors working in the field of aerial robot autonomy.

For any queries regarding the course and its content, please contact Nitin J. Sanket and Chahat Deep Singh on Piazza if you find errors. Sign up for Piazza here, if you haven't.

This course will explore rigid body transformations, attitude estimation, Bayesian filter, Linear and Unscented Kalman filters, Camera models, Gaussian Mixture Models, Image Processing, Visual feature detection and tracking, Projective Geometry, Optical Flow, Stereopsis, Quadrotor Dynamics and Controls, Structure from Motion/SLAM.

All the class announcements will be made through Piazza. Please use Piazza to contact the instructors. Please do NOT contact the the Instructors via email unless it's an emergency, and do NOT contact the instructors on any social media platform such as Facebook or WhatsApp (please respect their privacy) regarding course content. If you want to have a chat about their research, feel free to contact them on any platform.

All the student reports will be released publicly online to enable better learning experience for others. We will also announce the top submission for each assignment on the wesbite. All the assignments are to be submitted using ELMS. If you find any errors/typo in the course github website, please edit the required markdown '.md' file and send a 'pull request'. If you don't know how to use pull request, please check out this tutorial.


Instructors











Nitin J. Sanket









Chahat Deep Singh



Pre-requisites


Programming proficiency in Python 2.7 is a soft pre-requisite. We assume that the students are proficient with basic Linear Algebra and calculus to the level of an undergraduate class. Experience working on quadrotors, ROS and Linux is a big plus.


Office Hours


  • Nitin J Sanket: By Appointment
  • Chahat Deep Singh: By Appointment


Course Structure


This is a hands-on course, centered around five projects. The tentative grading breakdown is as follows:
  • Project 1: 22%
  • Project 2: 10%
  • Project 3: 20%
  • Project 4: 22%
  • Project 5: 26%

Note that the course is going to be dynamically adapted based on student performance. Hence, the course structure and grading breakdown can change during the course based on instructor discretion.

Software Environment


We will use Python 2.7 as the programming platform throughout this course along with packages from ROS, OpenCV, Numpy, Scikit and Matplotlib. We officially support Ubuntu 16.04 only. Feel free to use VirtualMachine if you have a Mac/Windows system (We'll have a class on this to help students setup). Use of third party code is generally not allowed in this course unless specifically stated so.

No.
Tutorials
Link
Video
Excercise
1.
Introduction to Python
Link
2.
Object Oriented Programming in Python
Link
Video
Ex.1
3.
Introduction to ROS
Link
4.
Introduction to OpenCV
Link


Assignments


All assignments are to be done in groups of 3. However, we encourage you to discuss with your peers and not cheat. For further details, read the Collaboration Policy and Honor Code below. For each project, the test sets will be released on Piazza 24 hours before the deadline.

The Assignments are as follows:

No.
Assignment
Link
Test set
Student Outputs
1.a.
"Magic" Madgwick Filter for Attitude Estimation
Link
Link
1.b
Non-stinky Unscented Kalman Filter for Attitude Estimation
Link
Link
2.
Trajectory Following on the PRG Husky
Link
Link
3.a.
Mini Drone Race
Link
Link
3.b.
Circular Bullseye
Link
Link
4.a.
Stereo Pose Estimation
Link
Link
4.b.
Avoid the wall and find the bridge
Link
Link
5.
The Final Race!
Link



Lectures


Class No.
Topic
Videos
Slides
1.
Introduction
Link
pdf
2.a
Rigid Body Transformations and Rotations
Link
pdf
2.b
IMU Basics, Attitude Estimation using CF and Madgwick
Link
pdf
3.a
Quadrotor Hardware
Link
pdf
3.b
Hacking Bebop, DIY Research Drone
Link
pdf
4
Bayes Filter, Kalman Filter
Link
pdf
5
Extended Kalman Filter and Unscented Kalman Filter
Link
pdf
6
Quadrotor Dynamics
Link
pdf
7
Quadrotor Controls
Link
pdf
8
Cameras, Image Formation and GMM
Link
pdf
9
Fundamentals of Image Processing
Link
pdf
10
Features in Computer Vision
Link
pdf
11
Camera Models
Link
pdf
12
Projective Transformations
Link
pdf
13
Structure from Motion I: Epipolar Geometry
Link
pdf
14.a
Structure from Motion II
Link
pdf
14.b
Structure from Motion - Supplementary
Link
pdf
15
Optical Flow
Link
pdf
16
Stereopsis
Link
pdf
17
GTSAM
In Class
pdf
18
Introduction to Deep Learning
In Class
pdf


Guest Lectures


1
Flow Sensing For Small UAV Control
pdf
2
Lightweight Inertial Navigation System For Micro Air Vehicle Applications
pdf
3
Introduction to PX4 Autopilot
pdf
4
Advanced Topics in Nonlinear Control
pdf
5
Achieving Autonomy with Betaflight based Flight Controllers
pdf

Late Policy


This course moves quickly, and concepts tend to build on top of each other. Therefore it's very important to keep up with the material. To encourage this, late assignments are penalized for 25% per day after the due date. But life is unpredictable; we all need a break sometimes. So, we allow you six late days, to spend on any assignment(s) except the final project. You may submit an assignment late (after the due date) using a late day without any penalty. Think of a late day as pushing the deadline back by a day. So, to get full credit on a 2-days-late assignment, you'd need to use two late days. Late days can only be spent as full days (i.e., you can't use only half a late day for an assignment you submit 12 hrs late). If you are using a late day, mention it in the title of your submission as "USING X LATE DAY(S)" and post a comment on ELMS about the usage of a late day. We expect you to keep track of number of late days you have remaining and notify us of usage of one or more late days. We will default for penalty if we don't see the mention of late day usage as a comment on ELMS on that particular assignment. If you are using a late day, mention it in the title of your submission as "USING X LATE DAY(S)"

Collaboration Policy and Honor Code


Collaboration is encouraged, but one should know the difference between collaboration and cheating. Cheating is prohibited and will carry serious consequences. Cheating may be defined as using or attempting to use unauthorized assistance, material, or study aids in academic work or examinations. Some examples of cheating are: collaborating on an take-home exam or homework unless explicitly allowed; copying homework; handing in someone else's work as your own; and plagiarism. You are welcome to collaborate with your peers on Piazza and in person. However it's important that the work you submit is an expression of your understanding, and not merely something you copied from a peer. So, we place strict limits on collaboration: Firstly, you must clearly cite your collaborators by name at the top of your report. This includes Piazza posts reference. You may not share or copy each other's code. You can discuss how your code works, and the concepts it implements, but you can't just show someone your code. You may use free and publicly available sources, such as books, journal and conference publications, and web pages, as research material for your answers. (You will not lose points for using external sources.) You may not use any service that involves payment, and you must clearly and explicitly cite all outside sources and materials that you made use of. We consider the use of uncited external sources as portraying someone else's work as your own, and as such it is a violation of the University's policies on academic dishonesty. Instances will be dealt with harshly and typically result in a failing course grade. Unless otherwise specified, you should assume that that the UMD Code of Academic Integrity applies. Unless otherwise specified, you should assume that that the UMD Code of Academic Integrity applies.

Reference Books


All concepts will be covered in class lecture, and in the lecture notes. However, we also recommend the following books as good references:
  • Robotics, Vision and Control, Peter Corke, 2011.
  • Multiple view geometry in computer vision, Cambridge university press, Richard Hartley, and Andre Zisserman, 2003.
  • Computer Vision: Algorithms and Applications, Springer, Richard Szeliski, 2010.
  • Digital Image Processing, Prentice Hall, Rafael Gonzalez, and Richard Woods, 2008.


Powered by


team member team member team member team member

team member team member team member team member

           

 info[at]prg.cs.umd.edu