Read and Plot Navigation Data Using MATLAB Support Package for Ryze Tello Drones
This example shows how to use the MATLAB® Support Package for Ryze® Tello Drones to acquire and plot the real-time navigation data of the Ryze drone.
Introduction
The MATLAB Support Package for Ryze Tello Drones enables you to control and read the in-flight navigation data of the drone.
In this example, you will learn to read navigation data of the Ryze drone such as the speed, orientation, and height using MATLAB commands.
Required Hardware
To run this example you need the following:
A fully charged Ryze Tello drone
A computer with a Wi-Fi® connection
Task 1 - Hardware Setup
Power on the Ryze drone.
Connect your computer to the drone's Wi-Fi network.
Task 2 - Create a Ryze Object
Create a ryze
object.
r = ryze();
Task 3 - Take-off the Drone
Start the Ryze drone flight from a level surface.
Execute the following command at the MATLAB command prompt the takeoff of the drone.
takeoff(r);
Task 3 - Initialize MATLAB animatedline
and figure
Window Properties
This task shows you how to generate an animated plot for the orientation data.
Use MATLAB animatedline
function to plot the variation in drone orientation along the X, Y, and Z axes, separately.
Initialize the figure handle and create animated line instances hx, hy, and hz corresponding to the orientation along the X, Y, and Z axes respectively.
f = figure; hx = animatedline('Color', 'r', 'LineWidth', 2); hy = animatedline('Color', 'g', 'LineWidth', 2); hz = animatedline('Color', 'b', 'LineWidth', 2); title('DroneOrientation v/s Time'); xlabel('Time (in s)'); ylabel('Orientation (in degrees)'); legend('XOrientation', 'YOrientation', 'ZOrientation');
Task 4 - Plot Navigation Data During Drone Flight
Keep flying the drone along a square path and plot orientation data during this flight.
edgeIndex = 1; distance = 0.5; speed = 0.5; tObj = tic; while(edgeIndex <= 4) % Move the drone unblocking the command line tplot = tic; moveforward(r, 'Distance', distance, 'Speed', speed, 'WaitUntilDone', false); % Plot orientation while drone is moving while(toc(tplot)<distance/speed) orientation = rad2deg(readOrientation(r)); tStamp = toc(tObj); addpoints(hx, tStamp, orientation(2)); addpoints(hy, tStamp, orientation(3)); addpoints(hz, tStamp, orientation(1)); drawnow; end % Turn the drone after it has traversed one side of the square path pause(2); turn(r, deg2rad(90));
edgeIndex = edgeIndex+1; end
Task 5 - Land the Drone
Plot the final orientation and land the drone.
orientation = rad2deg(readOrientation(r)); tStamp = toc(tObj); addpoints(hx, tStamp, orientation(2)); addpoints(hy, tStamp, orientation(3)); addpoints(hz, tStamp, orientation(1)); drawnow; land(r);
Task 6 - Clean up
When finished, clear the connection to the Ryze drone.
clear r;