Skip to main content

Minimal 3D drone simulator with keyboard/mouse/HID (WFLY ET16S) control, lighting, shadow, and live-tunable physics.

Project description

FlySim

A minimal but complete 3D drone simulator with real-time OpenGL rendering, lighting, shadow, and three input methods: keyboard, mouse, and the WFLY ET16S RC transmitter over USB HID.

Features

  • Real-time 3D rendering (pygame + PyOpenGL): perspective camera, depth test, per-vertex lighting (ambient + diffuse), smooth shading
  • Tiled checkerboard ground with cardinal direction markers (N/E arrows)
  • Point light source (yellow sphere) with ambient + diffuse components
  • Soft blob shadow projected under the drone
  • Drone model: body, 4 arms, 4 motors, independently spinning propellers (speed scales with throttle + differential for pitch/roll/yaw)
  • Payload box hanging by a rope below the drone (swings with acceleration)
  • Front markers: two red squares on the nose; rear marker: green triangle
  • Third-person orbit camera (mouse drag = orbit, wheel = zoom)
  • Flight telemetry HUD: position (N/E/Alt from takeoff), heading, pitch/roll, speed, acceleration, velocity vector
  • Live RC transmitter visualization panel (twin-stick, Mode 2)
  • Fully configurable HID axis mapping (axis index + sign per channel)
  • Live-tunable physics: max tilt, pitch/roll/throttle force, yaw rate, damping
  • Persistent config: axismap.txt and tuning.txt auto-loaded/saved

Install

pip install dronesim

Or from source:

git clone https://github.com/CodeOfMe/FlySim.git
cd FlySim
pip install -e .

Run

dronesim          # installed entry point
# or
python -m dronesim

Requirements

  • Python >= 3.10
  • pygame >= 2.4, PyOpenGL >= 3.1.7, numpy >= 1.24

Controls

Keyboard

Action Keys
Forward / back (pitch) W / S or Up / Down
Strafe left / right (roll) A / D or Left / Right
Yaw left / right Q / E
Throttle up / down Shift / Ctrl
Orbit camera Mouse drag
Zoom Mouse wheel
Pause P
Reset drone R
Toggle help H
Toggle axis editor F1
Quit ESC

WFLY ET16S (HID, Mode 2 / USA transmitter)

Action Stick
Throttle (up/down) Left stick Y
Yaw (turn) Left stick X
Pitch (forward/back) Right stick Y
Roll (left/right) Right stick X

The HID input is auto-detected. If any ET16S stick moves beyond its deadzone, it takes priority over the keyboard.

Live HID axis configuration

Press F1 to open the axis editor. Then:

Key Action
1 / 2 / 3 / 4 Select channel: throttle / yaw / pitch / roll
[ / ] Decrement / increment axis index
; / ' Flip sign for current channel
F2 Save axis map to axismap.txt

Live physics tuning

Key Action
F3 Select max_tilt_deg
F4 Select pitch_force
F5 Select roll_force
F6 Select throttle_force
F7 Select yaw_rate
F8 Select damping
+ / - Increase / decrease selected parameter
F9 Save tuning to tuning.txt
F10 Load tuning from tuning.txt

Scene

  • Ground: 40 x 40 m checkerboard with N (red) and E (blue) arrows, origin cross
  • Light: point light at (20, 30, 15) with ambient + diffuse
  • Shadow: soft radial blob projected on ground under the drone
  • Drone: body + 4 arms + 4 motors + spinning props + payload on rope
  • Camera: third-person orbit, follows the drone

Coordinate system

  • Origin = takeoff point on the ground
  • North = -Z, South = +Z, East = +X, West = -X, Up = +Y
  • yaw = 0 faces North; yaw increases clockwise (top view)

License

GPL-3.0-or-later. See LICENSE.

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

flysim-0.1.1.tar.gz (16.9 kB view details)

Uploaded Source

Built Distribution

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

flysim-0.1.1-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

Details for the file flysim-0.1.1.tar.gz.

File metadata

  • Download URL: flysim-0.1.1.tar.gz
  • Upload date:
  • Size: 16.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for flysim-0.1.1.tar.gz
Algorithm Hash digest
SHA256 e10f14915cb286830dcaa9bbadab70ab426d1d1cd91252442d29f1dbdc2bbfb2
MD5 fa3d9aeea8c2a812496cc4aa4d9a9c1d
BLAKE2b-256 27781efb6851c00d62d3e83b6540453b57ddd6283fc5b98a6010890f82a38484

See more details on using hashes here.

File details

Details for the file flysim-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: flysim-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 15.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for flysim-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 398cae757361e97474c25db51014623375fc9d805089abaf80ee07c01b3aedd4
MD5 3afc3919a4324d8e17131bc8deb6528a
BLAKE2b-256 5263ac72639489a8ef9acce9e09737538643c62283161bcc58dba506508a7d44

See more details on using hashes here.

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