Courses
Current course offerings are as follows:

MAEG5755 Robotics (Spring)

The course covers the fundamentals of robotic manipulation (sensors, actuators, kinematics, dynamics, motion control, and machine intelligence). Students will also learn about vision processing and how to combine both vision and manipulation. The course will use both Peter Corke’s Matlab Robotics Toolkit and ROS. The course will consist of a class project using the Baxter Research Robot. You can see a sample of past projects here.

MAEG3080 Fundamentals of Machine Intelligence–Intro to AI–(Spring)

This course provides students with fundamental knowledge of machine intelligence. It covers the following topics: data structures, sorting and searching, knowledge representation (state space, logical statements, rules, connectionism), discrete problem solving by state space search, deduction by resolution in predicate logic, inference by ruled-based systems, mappings by networks, and principles of learning. The application examples are also included.


Former Courses


Robot Middleware: ROS
To have a thorough understanding of the working principles of Robotic Middleware, in particular ROS, as well as hands on practice in developing robotic behaviors through the use ROS.

The semester is divided in three stages:
– Foundations of the ROS Ecosystem: all aspects of understanding the ROS network, visualization environments, and basic coding.
– By working with the Baxter robot and a few other robots, we explore advanced robotic concepts such as: robot navigation & path planning; localization and mapping, image processing and computer vision; vision and navigation, and manipulation. Theoretical grounding of how to string the middleware for these concepts will be presented class.
– The last stage consists of deploying an independent project. You will experiment with existing but advanced software available through the ROS website or open source code as well as implementing your own code. Students will also have an opportunity to choose a project and implement desired functionality. Students will validate their robotic experiments through real Baxter robot, display their work in an “open-day” project presentation where the community can come and see the work. You will also submit a conference-style report.

Should you take this course?
Students often ask me if this course is hard or if they can take it as Sophomores. I recommend students to first take the Introduction to Robotics class in the Fall semester. If you have not take Intro to Robotics, you could take ROS only if you are extremely interested in robotics and are willing to invest a large amount of time to become familiar with basic robotic concepts like: sensors, actuators, control and control architectures, and finite state machines at a high-level.

The ROS class will teach you how to use the middleware software to execute robot commands, to connect different robot modules together, and use this to create complex behavior. The class does not consist in learning deep robotic algorithms of different kinds.


Introduction to Robotics
In this course we will first study the building blocks of robotics: from sensors to actuators, to basic control, to control architectures. After that we will then survey some of the most interesting robot technologies currently occurring in the world of Robotics research. The overview of the subject will be broad in order to provide the student with a general understanding of many things robotic: from humanoids to mobile robots and from quad-rotors surface water vehicles; from biologically inspired to social robots, and much more. The course will also introduce basic robotic principles and concepts and will be demonstrated in class through simple robots or robot simulation. The course will use Kilobots to provide students with hands-on experience of robotics. The course also consists of a final project that will utilize a state-of-the art simulator called V-Rep. Knowledge of C++ basics, linear algebra, and familiarity with the Linux environment are desired but not necessary.


C++
The aim of this course is to help lay a strong foundation of Object-Oriented Programming in the student. We will learn about classes and objects as well as inheritance, polymorphism, and the STL library. This course consists of both in-class lectures with dynamic presentations and a lab-session for hands-on work. The course consists of weekly homework, lab-assignments, and an online and a written final examination.


Technical Communication
The objective of this course is to help improve your written and oral communication skills within a scientific context. Have you ever fallen asleep during a presentation? Have you ever felt that the research paper you are reading is impossible to understand?

This course will teach you how to present and write with clarity, effectively, and dynamically. Students will do public presentations or write scientific-style documents every other week. About 4 public presentations and 4 writing exercises during the semester. We will also focus on improving related aspects such as team work, leading discussions, ethical behavior, and assessment. Expect dynamic lectures, interactive exercises, and ample student activity.


Advanced Topics (Fall Semester)
If you want a challenging course in Robotics this will be it. We will study state-of-the-art robot techniques and seek to implement breakthrough research through the class. This course is intended to complement the research done at the BIRL lab. In the past, we used this course to develop code for the 2015 Darpa Robotics Callenge where we worked along with Hong Kong University to implement the driving for the robot. Some of the class work results in a conference publication.