CC BY-NC 4.0 Course materials licensed under CC BY-NC 4.0

This course offers a comprehensive introduction to robotics software development. Students learn how to employ widely adopted programming tools in robotics, including the Robotics Operating System (ROS), enabling students to apply techniques related to the physical embodiment of robots.

  • Lecture TA: Abdalla Eslam (100066889@ku.ac.ae)
  • Lab TAs: Suma Rao, Abdelmoamen Ali, Mohamed Ali

Lecture Progress

Week Topic Comments
Week 1
(25
- 29 Aug)
Lecture 1: Introduction to robotics, computer systems and software development with an emphasis on sustainable criteria such as execution time and effective use of computing resources.
Lecture 2: Linux OS I: Introduction; Basic Linux commands
Python Revision: Unit 1-4
Week 2
(1 – 5 Sep)
Lecture 3: Linux OS II: Linux File System.
Lecture 4: Linux OS III: Bash Scripting.
Additional Linux material
Week 3
(8 – 12 Sep)
Lecture 5: Python Essentials I; Brief Python 3 Revision; Running Python scripts in Linux; Python Exception (Error) Handling.
Lecture 6: Python Essentials II: Creating custom packages; Python Libraries: Numpy.
 
Week 4
(15 – 19 Sep)
Lecture 7: Python Essentials III; Python packages: Matplotlib; Python User Interface: Tkinter.
Lecture 8: Python Object Oriented Programming I; Python class, methods, contractor.
 
Week 5
(22 – 26 Sep)
Lecture 9: Python Object Oriented Programming II; Inheritance, Composition, Polymorphism, Abstraction.
Lecutre 10: Computer Networking I; network protocols and standards;
Design Patterns
(videos)
Git - Videos
Week 6
(29 Sep – 3 Oct)
Quiz 1 – Tuesday 30 Sep.

Lecture 11: Computer Networking II; understanding IPs and Ports; Linux networking commands.
 
Week 7
(6 – 10 Oct)
Lecture 12: Computer Networking III; Basics of socket programming in Python;
ROS 2 (part 1): Introduction to Robot Operating System (ROS).
ROS Publishers and Subscribers, Writing ROS Nodes in Python (and C++); Navigating ROS file system, Creating a ROS package, Understanding Topics.

Lecture 13: ROS 2 (part 2); Minimalistic ROS nodes; ROS over network; Creating Launch files; Recording and playing back data.
 
Week 8
(13 – 17 Oct)

*17 Oct - Mid Grade Due
Lecture 14: ROS 2 (part 3); Data Visualization in RVis2; Sensor Visualization; Unified Robot Description Format (URDF) files

Lecture 15: ROS 2 (part 4); Creating a custom interactive visualization UI with Tkinter
By Syed and Abdel Moamen




By Hamdy
Week 9
(20 – 24 Oct)
(Midterm Exam - Tuesday 21 Oct).

Lecture16: ROS 2 (part 5); Introduction to Gazebo simulation, ROS TF and ROS URDF.
Midterm Content: W1 - W7


By Abdel Moamen
Week 10
(27 – 31 Oct)

*31 Oct Last day to drop w/”W”
Lecture 17: ROS 2 (part 6) Building new environments in Gazebo and deploy assets, RViz visualization.

Lecture 18: ROS 2 (part 7); Services. Custom Services.
Midterm Exam Revision session
Week 11
(3
– 7 Nov)
Lecture 19: ROS 2 (part 8); Actions. Customer Actions and Messages.
Lecture 20: ROS 2 (part 9); Integration Project (part 1)
 
Week 12
(10 – 14 Nov)
*Abu Dhabi Autonomous Week 10-15 Nov
No Class (DriftX, Robocup, A2RL…)


 
Week 13
(17 – 21 Nov)
Lecture 21: ROS 2 (part 10); Integaration Project (part 2)


(Quiz 2 – Thursday 20 Nov).
Lecture 14-19
 
Week 14
(21 – 25 Nov)
(Assignment Issue – Tuesday, 22 Nov).

Lecture 22: ROS 2 (part 11); Integration Project (part 3)

Lecture 23: ROS 2 (part 12); Integration Project (part 4); Navigation Stack (Nav2)

Nav2 doc
Week 15
(1 – 5 Dec)

5 Dec - Last Day of Classes

* 18 Dec - Final Grades Publish
Lecture 24: Vim champions day;

Additional Topics (Optional):
System integration under sustainability criteria and resource constraints (low-cost robotic devices). Continuous integration (CI) and continuous delivery (CD)


Cloud Robotics I; Introduction; basics of web technologies: HTTP, HTML

Cloud Robotics II; Cloud Computing; Data Formats: XML, JSON, YAML. Basics of data storage: SQLite

Cloud Robotics III; visualizing and controlling robots via REST API; Python Flask Library.

Cloud Robotics IV; Robot Control and Visualization via WebAPI. Dynamic Web Frontends: HTMX. Best practices for remote robotics command and control.

(Assignment Deadline: Thursday 4 Dec at 11:59 PM).
 
     

Lab Progress

Week Topic Comments
Week 1 No Lab  
Week 2 Safety instructions and Lab Rules. Downloading Linux: dual boot  
Week 3 Intro to Linux and bash scripting  
Week 4 Python Packages: Numpy, tkinter, Matplotlib  
Week 5 OOP in Python  
Week 6 GIT tool, VS code, code refactor  
Week 7 ROS2 - Workspace organization, Writing Publisher/Subscriber nodes, Launch file.  
Week 8 No Lab  
Week 9 Visualizing URDF files in RViz2  
Week 10 Simulating URDF model on Gazebo  
Week 11 Obstacle avoidance in URDF robot  
Week 12 Understanding ROS Services  
Week 13 Project implementation  
Week 14 Final Project Demonstration  
Week 15 No Lab