Drone programming is the development of software that enables drones to fly autonomously with self-awareness and situational awareness. It also enables a drone to make decisions and execute tasks without human intervention, such as last mile delivery.
Drone programming typically includes algorithm development and prototyping, software simulation, and hardware implementation and testing. MATLAB® and Simulink® provides tools and reference applications that support the different aspects of drone programming.
The first step in drone programming is prototyping and algorithm development. The program can be structured into these key software components:
- Drone dynamic model (plant model) consists of the drone’s equations of motion.
- Sensing and perception generates and processes sensor data from sensors such as IMUs, barometers, or GPS for flight and low-level control, and cameras, lidars or ultrasonic sensors for autonomous capabilities.
- Planning and deciding generates a path based on the environment and obstacles detected.
- Flight control system stabilizes and controls the drone flying along the generated path.
The next step in drone programming, software simulation, helps identify bugs and validate complex autonomous flight algorithms. Simulation environments such as Gazebo®, Cuboid World, and Unreal Engine® are used to test the drone software in a virtual environment tailored for the test cases.
Finally, in the hardware implementation and testing phase, the programs and models are implemented on autopilots such as PX4® Autopilots or onboard computers such as the NVIDIA Jetson® CPUs by automatically generating code. Mission planning software such as QGroundControl and Mission Planner are used to plan missions, tune flight control parameters, and control the drone. The Micro Air Vehicle Link (MAVLink) communication protocol or Robot Operating System (ROS) are used to communicate with the autopilots or onboard computers. Flight log analysis tools help analyze flight logs to understand the behavior of the drone.