Design, simulate, and deploy drones for autonomous flight

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.

Drone programming workflow.

The first step in drone programming is prototyping and algorithm development. The program can be structured into these key software components:

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.

For more information, UAV Toolbox provides examples to get you started on your drone programming.

See also: UAV Toolbox, drone programming videos, Computer Vision Toolbox, Lidar Toolbox, ROS Toolbox, Navigation Toolbox, MATLAB and Simulink for Robotics, robot programming, What is SLAM