#drone #edu #tokio #controlling #asynchronous #wifi #tello

tello-edu

A library for controlling and interacting with the Tello EDU drone

13 releases (4 breaking)

0.5.5 Apr 23, 2023
0.5.4 Apr 23, 2023
0.4.1 Apr 22, 2023
0.3.1 Apr 16, 2023
0.1.1 Apr 15, 2023

#1417 in Network programming

LGPL-2.1-only

35KB
574 lines

tello-edu

A library for controlling and interacting with the Tello EDU drone using asynchronous Rust and Tokio. All operations are implemented as awaitable futures, completed when the drone sends acknowledgment of the command message.

use tello_edu::{Tello, Result};

#[tokio::main]
async fn main() {
    fly().await.unwrap();
}

async fn fly() -> Result<()> {
    // create a new drone in the `NoWifi` state 
    let drone = Tello::new();

    // wait until the host computer joins the drone's Wifi network
    // (joining the network is not automatic - how it happens is up to you)
    let drone = drone.wait_for_wifi().await?;

    // establish connection and put the drone in "command" mode
    let drone = drone.connect().await?;

    // fly!
    drone.take_off().await?;
    drone.turn_clockwise(360).await?;
    drone.land().await?;

    Ok(())
}

(If Python is more your thing, there is also an equivalent asynchronous Python package - tello-asyncio.)

Version History

0.1.0

Basic drone control

  • UDP connection for sending commands and receiving responses (default AP mode only - you must join the drone's own WiFi network)
  • take off and land
  • rotate clockwise and counter-clockwise
  • move up, down, left, right, forward and back
  • emergency stop

0.1.1

  • wait for WiFi on Linux as well as macOS, assume WiFi on anything else

0.2.0

More drone control

  • set & query speed
  • stop
  • flip left, right, forward and back

0.3.1

Drone state

  • drone state stream (except mission pad data)

0.4.0

Video

  • start/stop video stream
  • receive h264 encoded frames
  • decode & show video example

0.5.0

Remote control

  • real-time control
  • example using game controller to fly the drone

Dependencies

~3–13MB
~122K SLoC