Skip to main content

A local DJI Tello simulator with a djitellopy-compatible Python API and 3D Pygame renderer.

Project description

DJI Tello Simulator

djitellopy-sim is a local simulator for DJI Tello programs. It exposes a djitellopy-style Tello and TelloSwarm API while rendering drones in a Pygame 3D scene instead of sending UDP commands to physical hardware.

Features

  • 3D projected drone renderer with altitude, yaw, tilt, rotors, shadows, trails, and extension LED color.
  • Single-drone and swarm simulation.
  • Broad compatibility with djitellopy 2.5.0 method names.
  • Simulated state packets, query commands, RC control, video frame reads, mission pad toggles, video settings, and Tello Talent extension commands.
  • PyPI-ready packaging with automatic dependency installation.
  • Uses pygame-ce for modern prebuilt wheels, including macOS universal2 wheels, while still importing the runtime module as pygame.

Installation

From a local checkout:

python -m pip install .

For development:

python -m pip install -e .

Usage

from djitellopySim import Tello

tello = Tello()
tello.connect()
tello.takeoff()
tello.move_forward(100)
tello.rotate_clockwise(90)
tello.send_expansion_command("led 0 255 255")
tello.flip_back()
tello.land()

Swarm code follows the same shape as djitellopy:

from djitellopySim import TelloSwarm

swarm = TelloSwarm.fromFile("ip.txt")
swarm.connect()
swarm.takeoff()
swarm.parallel(lambda i, tello: tello.move_up(50 + i * 10))
swarm.land()

Publishing

Update the package metadata in pyproject.toml, then build locally:

python -m pip install build
python -m build

This repository includes .github/workflows/publish.yml, which publishes to PyPI automatically when a v* tag is pushed or a GitHub Release is published.

PyPI Trusted Publishing Setup

Use PyPI Trusted Publishing so GitHub Actions can publish without a stored PyPI token.

  1. Create or log in to your PyPI account at https://pypi.org.
  2. If djitellopy-sim already exists on PyPI and you own it, open the project, go to Manage project -> Publishing, then add a GitHub Actions trusted publisher.
  3. If this will be the first upload for djitellopy-sim, open your account Publishing page and add a pending GitHub Actions publisher for the new project name.
  4. Enter these publisher values:
PyPI project name: djitellopy-sim
Owner: <your GitHub username or organization>
Repository name: <this GitHub repository name>
Workflow name: publish.yml
Environment name: pypi
  1. In this GitHub repository, create an environment named pypi under Settings -> Environments. Optional but recommended: require manual approval for deployments to that environment.
  2. Make sure pyproject.toml has the version you want to publish, commit the changes, push them to GitHub, then create and publish a GitHub Release.

API Parity

The simulator targets djitellopy 2.5.0. See PARITY.md for the implemented surface and the known differences from real hardware behavior.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

djitellopy_sim-0.2.3.tar.gz (15.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

djitellopy_sim-0.2.3-py3-none-any.whl (12.2 kB view details)

Uploaded Python 3

File details

Details for the file djitellopy_sim-0.2.3.tar.gz.

File metadata

  • Download URL: djitellopy_sim-0.2.3.tar.gz
  • Upload date:
  • Size: 15.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for djitellopy_sim-0.2.3.tar.gz
Algorithm Hash digest
SHA256 e26ac9591444dea3d4ac9d2a489cee290586bbe87ddbe02001a0ece98cfb7e78
MD5 0381168c10fb162db46c929a6f63a17e
BLAKE2b-256 82472e83409ea7a68571983f00a5f63fb7b0b242b8f1c80cc916cba0b2858897

See more details on using hashes here.

Provenance

The following attestation bundles were made for djitellopy_sim-0.2.3.tar.gz:

Publisher: publish.yml on MrDaviesKellett/djitellopySim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file djitellopy_sim-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: djitellopy_sim-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 12.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for djitellopy_sim-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 02e9d2acb3b5b1c84905bb51372fca97ccd6999d1e0b9eed27afde753b865fc3
MD5 b8ea2b82add96ca867a0f26c936650ab
BLAKE2b-256 168cf893ce6ee080232857490cf5e4ac5fb8bad4414e7364e919cc1961ae49d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for djitellopy_sim-0.2.3-py3-none-any.whl:

Publisher: publish.yml on MrDaviesKellett/djitellopySim

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page