This is a test project that demonstrates how to use the easy-drone package as a normal user would - by installing it directly from GitHub.
This project recreates some of the examples from the main easy-drone-python repository to demonstrate:
- Installing the package from GitHub
- Using the pub/sub messaging system
- Communicating with Gazebo simulations
- Listing available topics
# Create and activate virtual environment
python3 -m venv venv
source venv/bin/activate # On Linux/Mac
# On Windows: venv\Scripts\activate# Install easy-drone from GitHub
pip install -r requirements.txtThis will install the easy-drone package directly from the GitHub repository.
Discover all available topics on the network:
python examples/topic_list.pyIn one terminal (subscriber):
source venv/bin/activate
python examples/simple_subscriber.pyIn another terminal (publisher):
source venv/bin/activate
python examples/simple_publisher.pyYou should see messages being published and received!
If you have Gazebo running with a drone simulation:
# List all topics from Gazebo
python examples/topic_list.py
# Subscribe to a specific Gazebo topic
python examples/simple_subscriber.py /world/default/model/x500/odometryexample-easy-drone-python/
├── README.md # This file
├── requirements.txt # Install easy-drone from GitHub
├── examples/
│ ├── simple_publisher.py # Publish messages
│ ├── simple_subscriber.py # Subscribe to messages
│ └── topic_list.py # List available topics
└── venv/ # Virtual environment (created by user)
Publishes string messages to a topic at 1 Hz. Great for testing communication.
Subscribes to a topic and prints received messages. Can connect directly to Gazebo topics.
Tip: If discovery doesn't work (common with Docker), specify the publisher address:
# First, get the publisher address
gz topic -i -t /your/topic
# Output: tcp://172.17.0.1:45943, gz.msgs.Image
# Then use it directly
GZ_PUBLISHER_ADDRESS=tcp://172.17.0.1:45943 python examples/simple_subscriber.py /your/topicDiscovers and lists all topics on the network. Useful for debugging.
- Check firewall allows UDP multicast on port 11317
- Ensure Gazebo or other publishers are running
- Try with verbose mode (edit examples to set
verbose=True)
- Ensure publisher is running before subscriber connects
- Wait a few seconds for discovery
- Try using
GZ_PUBLISHER_ADDRESSenvironment variable (see above)
# Reinstall from GitHub
pip uninstall easy-drone
pip install --no-cache-dir git+https://github.com/TensorFleet/easy-drone-python.gitThe library supports two transport backends:
# Use ZeroMQ (default, no env var needed)
python examples/simple_publisher.py# Install with Zenoh support
pip install 'easy-drone[zenoh] @ git+https://github.com/TensorFleet/easy-drone-python.git'
# Use Zenoh backend
export GZ_TRANSPORT_IMPLEMENTATION=zenoh
python examples/simple_publisher.pyImportant: All communicating nodes must use the same backend!
- Main Repository: https://github.com/TensorFleet/easy-drone-python
- Full Documentation: See the main repo's README
- Gazebo Transport: https://github.com/gazebosim/gz-transport
Apache 2.0 (same as the main easy-drone-python project)