On completion of this course the students will be able to design, develop, maintain, and update robotic applications developed through a robotic software framework.

After a general introduction of robotics application development, we will focus on one of the most adopted robotic software development frameworks (ROS) and how it enables abstractions, software development, software testing and management operations for common robotic capabilities (e.g., simulation, positioning, mapping, navigation, vision, grasping). These capabilities can be programmed and composed into complex behavior and interfaced with other software components (e.g, UIs, Web User interfaces, remote services, cloud computing) to program complete applications.

For each capability we will introduce the theoretical foundations and most common algorithmic solutions, then we will provide insights on concrete software implementations and their usage.

Particular emphasis will be given to the specific simulation, build, testing, and debugging tools needed for robotic application software development.

The labs reflect the teaching contents and are divided into two parts. The first part consists of a standard exercise to apply the teaching content on simulated / real hardware. The second part immediately builds on the first to enable the students to build a robotic application of their own choice composing the treated capabilities.