Vision: Open-source drone operating system with natural language control and computer vision for autonomous facade cleaning.
- Universal Drone OS - Hardware-agnostic system that auto-detects sensors/actuators
- Natural Language Control - Fly drones with plain text commands ("takeoff to 10m", "land")
- Facade Cleaning - Autonomous dirt detection and cleaning with mounted water system
- Simulation First - Test everything in PX4 SITL + Gazebo before hardware deployment
-
Budget-Friendly - Start with cheap components (
$50-200), scalable to industrial ($ $$)
- ๐ฃ๏ธ Natural Language Interface: Control drone with text commands (English/German)
- "takeoff" / "abheben"
- "fly up to 10m" / "fliege hoch auf 10m"
- "land" / "landen"
- ๐ค PX4 SITL Integration: Full simulation environment with Gazebo
- ๐ ROS2 Bridge: DDS communication for advanced features
- ๐ฏ Vision-Ready: Prepared for VLM integration (Wall-X, TinyML)
- ๐ฆ Plug & Play: YAML-based hardware configuration
git clone https://github.com/enving/Dronoid.git
cd Dronoid
./setup_dependencies.sh # Download PX4, build deps (~5 min)
./px4-client # Auto-starts everything!Type takeoff and watch your drone fly! ๐
# Install ROS2 Jazzy (if not already installed)
sudo apt update
sudo apt install -y ros-jazzy-desktop
# Install PX4 dependencies
sudo apt install -y \
python3-pip \
git \
wget \
gnutls-bin \
openjdk-11-jre-headless \
gz-harmonic
# Install Python packages
pip3 install --break-system-packages \
pymavlink \
python-dotenv \
requests \
kconfiglib \
pyros-genmsg \
packaging \
toml \
numpy \
jinja2
# Or use requirements.txt:
pip3 install --break-system-packages -r requirements.txtgit clone https://github.com/YOUR_USERNAME/Dronoid.git
cd Dronoid
# Download dependencies (PX4, DDS Agent, etc.)
chmod +x setup_dependencies.sh
./setup_dependencies.sh./start_drone.shThis will:
- Start PX4 SITL (Software In The Loop)
- Launch Gazebo Harmonic simulator
- Spawn X500 quadcopter drone
- Wait for "Ready for takeoff!" message
Easy Mode (auto-starts PX4 if needed):
./px4-clientManual Mode:
# Make sure PX4 is running first
./start_drone.sh
# Then start control
python3 nl_drone.pyThen type natural language commands:
takeoff- Take off to 5m altitudetakeoff to 10m- Take off to 10mfly up/abheben- Take off (German)land/landen- Land the droneq- Quit
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Natural Language Interface โ
โ (nl_drone.py) โ
โ โข Text parsing (Regex/Cloud LLM) โ
โ โข Bilingual support (EN/DE) โ
โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโ
โ MAVLink UDP
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ PX4 Autopilot (SITL) โ
โ โข Flight controller firmware โ
โ โข MAVLink communication โ
โ โข UDP Port 14580 (Offboard API) โ
โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโ
โ Gazebo Bridge
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Gazebo Harmonic Simulator โ
โ โข Physics simulation โ
โ โข X500 quadcopter model โ
โ โข 3D visualization โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ROS2 Integration (Future) โ
โ โข Micro-XRCE-DDS-Agent โ
โ โข px4_msgs โ
โ โข dronecore package โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Humanoid/
โโโ README.md # This file
โโโ start_drone.sh # Quick start script
โโโ nl_drone.py # Natural language control
โโโ control_drone.py # Numeric menu control
โโโ quick_test.sh # PX4 + Gazebo launcher
โ
โโโ PX4-Autopilot/ # PX4 firmware (v1.15.4)
โ โโโ Tools/simulation/gz/ # Gazebo models & worlds
โ โโโ build/px4_sitl_default/ # Build artifacts (git ignored)
โ
โโโ Micro-XRCE-DDS-Agent/ # ROS2 โ PX4 bridge
โ โโโ build/ # Build artifacts (git ignored)
โ
โโโ px4_msgs/ # ROS2 message definitions
โโโ dronecore/ # ROS2 control package
โ โโโ drone_commander.py # ROS2 node for commands
โ โโโ nl_bridge.py # FastAPI HTTP server
โ
โโโ old_docs/ # Legacy documentation
python3 nl_drone.pyText commands with intelligent parsing.
python3 control_drone.pySimple 1-4 menu for basic commands.
# Build dronecore package first
cd dronecore && colcon build
source install/setup.bash
# Launch ROS2 nodes
ros2 run dronecore drone_commanderDronoid supports two modes for understanding your commands:
- โก Fast: Instant response
- ๐ป No internet needed: Works offline
- ๐ชถ Lightweight: No ML model, runs on any hardware
- ๐ Pattern matching:
"takeoff" โ takeoff()
Perfect for: Weak laptops, offline use, predictable commands
- ๐ค Intelligent: Understands context and synonyms
- ๐ Multilingual: Works in any language
- ๐ก Flexible: "fly a bit higher" โ understands intent
- ๐ Free tier available: Google Gemini Flash 1.5
Setup (optional):
# 1. Get free API key: https://openrouter.ai/keys
# 2. Copy example config
cp .env.example .env
# 3. Edit .env and add your key
nano .env # or use any text editorThe system automatically falls back to regex if OpenRouter is unavailable!
Dronoid includes smart connection management to make your experience smooth:
- 10 Retry Attempts: Automatically retries connection if PX4 is starting
- Intelligent Port Detection: Tests multiple MAVLink ports
- Clear Error Messages: Helpful troubleshooting hints if connection fails
- Auto-Start Wrapper:
px4-clientchecks if PX4 is running and starts it automatically
./px4-client
โ
Checks: Is PX4 running?
โโ Yes โ Connect to drone โ
โโ No โ Start PX4 โ Wait for ready โ Connect โThis means you never have to manually start PX4 - just run ./px4-client and fly!
Create .env file (not tracked in git):
# Optional: Cloud LLM for advanced NL processing
OPENROUTER_API_KEY=your-key-hereYAML-based plug & play:
# drone_config.yaml
hardware:
flight_controller: px4
camera:
type: raspberry_pi_camera_v2
resolution: 1920x1080
water_system:
pump: 12v_dc
pressure_sensor: analog- CPU: Dual-core 2.0 GHz
- RAM: 4GB (note: Gazebo can be heavy)
- Storage: 10GB free
- OS: Ubuntu 24.04 (or 22.04)
- CPU: Quad-core 2.5 GHz+
- RAM: 8GB+
- GPU: For VLM inference (optional)
- Additional: Raspberry Pi 4 (4GB) for onboard processing
- PX4 SITL + Gazebo setup
- MAVLink communication
- Natural language control (regex-based)
- Basic commands (arm, takeoff, land)
- Cloud LLM integration (OpenRouter)
- Advanced command parsing
- HTTP API for remote control
- ROS2 full integration
- VLM integration (Wall-X / TinyML)
- Dirt detection on facades
- Water system control
- Autonomous cleaning routines
- Hardware deployment (Raspberry Pi + PX4)
- Real-world testing
- Multi-drone coordination
- Industrial scalability
# Check if PX4 is running
ps aux | grep px4
# Restart system
./start_drone.sh# Check environment variables
echo $GZ_SIM_RESOURCE_PATH
# Should include PX4 models path
export GZ_SIM_RESOURCE_PATH=$PWD/PX4-Autopilot/Tools/simulation/gz/models:$PWD/PX4-Autopilot/Tools/simulation/gz/worlds# PX4 MAVLink should be on port 14580
lsof -i UDP:14580
# If port is closed, PX4 isn't runningThis is an open-source project! Contributions welcome:
- ๐ Bug reports via GitHub Issues
- ๐ก Feature suggestions
- ๐ง Pull requests
- ๐ Documentation improvements
- PX4 Autopilot - Drone flight controller
- MAVSDK - Drone API library
- Wall-X - VLM for visual inspection
- Dronekit-Python - Similar project
MIT License - See LICENSE file
Tristan - Universal Drone OS Project
Built with Claude Code ๐ค
Note: This project is in active development. Star โญ the repo to follow progress!