Phase 1 – Foundations (Week 1–2)
Week 1 – Linux + ROS 2 Basics
• Day 1: Install Ubuntu 22.04 (or WSL2). Learn cd, ls, pwd, cp, mv.
• Day 2: Learn grep, cat, nano/vim, apt, sudo.
• Day 3: Install ROS 2 Humble. Test with ros2 run demo_nodes_cpp talker.
• Day 4: Learn ROS 2 nodes & topics. Run ros2 topic list, ros2 topic echo.
• Day 5: Write a simple ROS 2 Python publisher/subscriber (pub: Hello, sub: print).
• Day 6: Learn services/actions in ROS 2. Try ros2 service call.
• Day 7: Mini-project → make a node that asks for a number and returns square (service).
Week 2 – Gazebo Basics
• Day 8: Install Gazebo Harmonic (or Fortress). Launch empty world.
• Day 9: Spawn basic models (box, cylinder). Move them in GUI.
• Day 10: Learn URDF/SDF structure. Spawn a simple robot.
• Day 11: Add a camera sensor to a robot in Gazebo. View image stream.
• Day 12: Add a lidar sensor to robot. View topic in ROS 2.
• Day 13: Control a mobile robot (TurtleBot in Gazebo).
• Day 14: Mini-project → spawn robot with camera + move using ROS 2 cmd_vel.
Phase 2 – PX4 Setup (Week 3–4)
Week 3 – PX4 SITL
• Day 15: Clone PX4-Autopilot repo, install dependencies.
• Day 16: Run PX4 SITL: make px4_sitl gz_x500.
• Day 17: Install QGroundControl. Connect to PX4 SITL.
• Day 18: Upload AUTO mission in QGC (takeoff → waypoint → land).
• Day 19: Learn PX4 console (pxh> help).
• Day 20: Try different drones (quadrotor, VTOL).
• Day 21: Mini-project → run gz_x500 drone, take off and land using QGC only.
Week 4 – MAVROS 2 Bridge
• Day 22: Install MAVROS 2. Run ros2 topic list and explore PX4 topics.
• Day 23: Echo /mavros/local_position/pose.
• Day 24: Publish setpoint to /mavros/setpoint_position/local.
• Day 25: Write ROS 2 node → simple takeoff at fixed altitude.
• Day 26: Add land command from ROS 2 node.
• Day 27: Test sending velocity commands.
• Day 28: Mini-project → ROS 2 node that takes off, flies a square, and lands.
Phase 3 – Missions & Sensors (Week 5–6)
Week 5 – Setpoints & Missions
• Day 29: Learn PX4 position setpoints vs velocity setpoints.
• Day 30: Write ROS 2 script to go to [0,0,5].
• Day 31: Add second waypoint [5,0,5].
• Day 32: Add more waypoints (fly square).
• Day 33: Auto mission: upload waypoints from ROS 2 instead of QGC.
• Day 34: Test combining AUTO mission + ROS 2 overrides.
• Day 35: Mini-project → drone flies triangle path using ROS 2.
Week 6 – Gazebo Sensors Integration
• Day 36: Add camera sensor to drone model.
• Day 37: Subscribe to camera topic in ROS 2. Save images.
• Day 38: Add lidar sensor. Visualize with RViz.
• Day 39: Add GPS noise simulation.
• Day 40: Subscribe to /mavros/global_position/raw/fix.
• Day 41: Log IMU data in ROS 2.
• Day 42: Mini-project → spawn drone with camera + lidar, save image + lidar scan.
Phase 4 – Computer Vision (Week 7–9)
Week 7 – OpenCV Basics
• Day 43: Install OpenCV in ROS 2 workspace.
• Day 44: Read image from file, display.
• Day 45: Convert Gazebo camera stream → OpenCV image.
• Day 46: Detect red object in image.
• Day 47: Draw bounding box around object.
• Day 48: Send drone velocity command if object moves.
• Day 49: Mini-project → “follow red ball” using camera + velocity control.
Week 8 – Object Following
• Day 50: Improve detection with HSV color filtering.
• Day 51: Add proportional control (object center → drone velocity).
• Day 52: Limit movement range to safe altitude.
• Day 53: Test detection with moving ball in Gazebo.
• Day 54: Record video of drone following object.
• Day 55: Debug lag issues.
• Day 56: Mini-project → robust red-object follower.
Week 9 – Sensor Fusion
• Day 57: Learn basic sensor fusion idea (camera + GPS).
• Day 58: Subscribe to GPS and camera simultaneously.
• Day 59: Combine GPS waypoint + vision correction.
• Day 60: Add simple obstacle avoidance (lidar).
• Day 61: Test flight: waypoint + avoid obstacle.
• Day 62: Tune PID gains for smoother control.
• Day 63: Mini-project → “fly waypoint, avoid obstacle, detect object.”
Phase 5 – Advanced Autonomy (Week 10–12)
Week 10 – PX4 Tuning & Parameters
• Day 64: Learn PX4 parameters (param show).
• Day 65: Tune altitude hold gains.
• Day 66: Tune position control.
• Day 67: Save and load param files.
• Day 68: Test different tuning.
• Day 69: Automate param changes from ROS 2.
• Day 70: Mini-project → better tuned drone flight.
Week 11 – ROS 2 Package Development
• Day 71: Create new ROS 2 package (ros2 pkg create).
• Day 72: Move takeoff/land code inside package.
• Day 73: Add camera subscriber + control logic.
• Day 74: Launch with ros2 launch.
• Day 75: Add config file for parameters.
• Day 76: Test multiple nodes working together.
• Day 77: Mini-project → one ROS 2 package controlling drone with vision.
Week 12 – Final Project
• Day 78: Define final project (choose: object tracking OR waypoint flight with obstacle
avoidance).
• Day 79: Implement mission logic.
• Day 80: Test in simple Gazebo world.
• Day 81: Test in complex Gazebo world (obstacles, buildings).
• Day 82: Debug failures.
• Day 83: Improve robustness (safety checks).
• Day 84: Record final demo + write short report.