Why
Provide a gymnasium style interface using a physics simulation engine (pybullet in this case) to drone models. This in-turn enables faster prototyping of controllers, and reinforcement models. I'm maintaining this particular repo for my own research which is focused on waypoint generation, hence my priority is the trajectory drone environment. However, any upgrades and updates on the others would be hugely appreciated.
:warning: This code is still in alpha and will change over time as I use it :warning:
Environments
The environment documentation can be found here
Base Dynamics
PyBulletDroneEnv-v0:link:NonLinearDynamicModelDroneEnv-v0:link:LinearDynamicModelDroneEnv-v0:link:
Attitude
LQRDroneEnv-v0:link:
Position
FirstOrderPolyPositionDroneEnv-v0:link:FifthOrderPolyPositionDroneEnv-v0:link:FifthOrderPolyPositionWithLookAheadDroneEnv-v0:link:
Development
Create the local development environment:
conda create --name jdrones python=3.10
conda activate jdrones
pip install -r requirements.txt -r tests/requirements.txt
The run ***all tests with
#!/bin/bash
GIT_DIR=$(git rev-parse --show-toplevel)
PYTHONPATH=$GIT_DIR/src python -m pytest -s -q -n auto $GIT_DIR
PYTHONPATH=$GIT_DIR/src python -m pytest -s -q -n auto --only-integration $GIT_DIR
PYTHONPATH=$GIT_DIR/src python -m pytest -s -q -n auto --only-slow-integration $GIT_DIR
Citations
[1] J. Panerati, H. Zheng, S. Zhou, J. Xu, A. Prorok, and A. P. Schoellig, ‘Learning to Fly -- a Gym Environment with PyBullet Physics for Reinforcement Learning of Multi-agent Quadcopter Control’. arXiv, Jul. 25, 2021. doi: 10.48550/arXiv.2103.02142.
[2] J. Meyer, A. Sendobry, S. Kohlbrecher, U. Klingauf, and O. von Stryk, ‘Comprehensive Simulation of Quadrotor UAVs Using ROS and Gazebo’, in Simulation, Modeling, and Programming for Autonomous Robots, Berlin, Heidelberg, 2012, pp. 400–411. doi: 10.1007/978-3-642-34327-8_36.
Future Work
- Better sensor modelling and kalman filters
- Performance improvements of simulation using either compiled code or a JIT
- Better controllers
- LQR
- Better trajectory generation between waypoints
- First- and fifth-order polynomial trajectory generation
- Examples
- Proper integration testing
- Higher fidelity motor models
Release files for jdrones 0.10.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| jdrones-0.10.1-py3-none-any.whl | Python 3 | none | any | Details |
Release files / jdrones-0.10.1-py3-none-any.whl
| Download URL | jdrones-0.10.1-py3-none-any.whl |
|---|---|
| Size | 148.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
65bf41afba4aeb29280e61f9a1f9c8741476203f6684e643a6a691cfadc8f3b0
|
|
BLAKE2b-256 checksum How to use checksums |
a3c6d0b757e43a252b2768dd70917c5c440210349874d45d81374d8d22c74f35
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.0.1 CPython/3.12.8
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jan 3, 2025.
Transparency log