Overview
A simulated quadrotor that runs a complete mission profile while reacting in real time to its sensors. It's a testbed for flight-control logic that will later move to a real flight controller (an STM32 target). Each part (perception, control, motor mixing) is its own ROS 2 node, so pieces can be swapped or tested independently.
How it works
- Mission logic: a finite state machine moves through
IDLE → TAKEOFF → HOVER → FORWARD → AVOID → LAND. Takeoff and hover use sonar altitude feedback, and forward flight commands a pitch attitude setpoint rather than raw velocity. - Perception: a YOLOv8 node processes compressed camera frames and publishes detected targets. When a person or obstacle appears, the state machine interrupts the plan and holds position.
- Control: a custom PID mixer turns roll, pitch and thrust setpoints into per-motor forces. An IMU filter node low-passes acceleration and orientation, and a Tkinter tuner adjusts PID gains live while the drone flies.
- Simulation: a URDF/xacro airframe with sonar, IMU and camera sensors in a custom Gazebo world, visualized in RViz2.
Status
In progress. The core flight sequence (arm → takeoff → hover → forward → land) and vision-triggered avoidance work in simulation. Current focus: tuning the attitude PID and verifying the forward-flight pitch response. Flight videos will be added here.