Vision-based autonomous tracking system for drones and ground vehicles
PixEagle is a modular image-processing and tracking suite for drones running PX4 autopilot. It combines MAVSDK Python, OpenCV, and YOLO object detection to deliver high-performance visual tracking and autonomous following.
Full Documentation | Changelog | YouTube Demo
| Feature | Description | Documentation |
|---|---|---|
| Tracker System | 5 tracker types: CSRT, KCF, YOLO, SmartTracker, Gimbal | Tracker Docs |
| Follower System | 10 control modes: velocity, position, attitude, gimbal pursuit | Follower Docs |
| Video & Streaming | 7 input sources, GStreamer, MJPEG/WebSocket streaming | Video Docs |
| Professional OSD | Aviation-grade on-screen display with layered real-time pipeline and TrueType fonts | OSD Guide |
| Drone Interface | PX4 integration via MAVSDK & MAVLink2REST | Drone Docs |
| Core App | REST API, WebSocket, schema-driven configuration | Core Docs |
| GPU Acceleration | CUDA support for 60+ FPS, automatic CPU fallback | Installation |
| Web Dashboard | Real-time monitoring, model management, config UI | - |
| System | Description | Guide |
|---|---|---|
| Trackers | CSRT, KCF, YOLO, SmartTracker, Gimbal tracking | docs/trackers/ |
| Followers | 10 control modes (velocity, position, attitude) | docs/followers/ |
| Video | 7 input sources, GStreamer, OSD, streaming | docs/video/ |
| Drone Interface | PX4, MAVLink, MAVSDK setup & troubleshooting | docs/drone-interface/ |
| Core App | REST API, WebSocket, configuration system | docs/core-app/ |
| Development | Schema architecture, custom components | docs/developers/ |
Quick Links: Installation | Configuration | Troubleshooting
- Ubuntu 22.04+ / Raspbian / Windows 10+
- Python 3.9+
- 4GB+ RAM
Linux/macOS:
curl -fsSL https://raw.githubusercontent.com/alireza787b/PixEagle/main/install.sh | bashWindows PowerShell:
irm https://raw.githubusercontent.com/alireza787b/PixEagle/main/install.ps1 | iexLinux:
# Install system dependencies
sudo apt update && sudo apt install -y python3 python3-venv python3-pip tmux lsof curl git
# Clone and initialize
git clone https://github.com/alireza787b/PixEagle.git
cd PixEagle
make initWindows:
# Clone and initialize
git clone https://github.com/alireza787b/PixEagle.git
cd PixEagle
scripts\init.batWindows Guide: Windows Setup Documentation
The init script runs a 9-step automated setup including Python venv, Node.js, dashboard, and MAVSDK/MAVLink2REST binaries.
Installation Profiles:
- Core - Essential features (recommended for ARM/Raspberry Pi)
- Full - All features including AI/YOLO detection
The script auto-detects your platform and recommends the appropriate profile.
AI install behavior in Full profile: Core dependencies are installed first, then init offers deterministic PyTorch setup (
setup-pytorch.sh) for your platform (x86 CUDA, Jetson, macOS, or CPU).
After that, AI packages (ultralytics,lap, optionalncnn) are installed and verified. If verification fails, init can roll back to Core-safe mode and prints recovery commands.
Detailed Guide: Installation Documentation
Linux/macOS:
make run # Run all services
make dev # Development mode with hot-reload
make stop # Stop all services
make sync # Pull latest updates from upstream
make help # Show all commandsWindows:
scripts\run.bat # Run all services
scripts\run.bat --dev # Development mode
scripts\stop.bat # Stop all services- Local: http://localhost:3040
- LAN: http://:3040 (auto-detected)
PixEagle/
├── Makefile # Primary entry point (make help, make run)
├── install.sh # Bootstrap installer (Linux/macOS)
├── install.ps1 # Bootstrap installer (Windows)
├── scripts/ # All scripts organized here
│ ├── init.sh/bat # Main setup scripts
│ ├── run.sh/bat # Main launcher scripts
│ ├── stop.sh/bat # Stop services
│ ├── lib/ # Shared utilities
│ ├── components/ # Component runners
│ └── setup/ # Setup utilities
├── bin/ # Downloaded binaries
├── src/ # Python source code
├── configs/ # Configuration files
├── dashboard/ # React web dashboard
└── docs/ # Documentation
Most settings can be configured via the Web Dashboard UI (Settings page).
For manual configuration, edit configs/config.yaml:
nano configs/config.yamlNote:
config.yamlis gitignored. Default values are inconfigs/config_default.yaml.
Detailed Guide: Configuration Documentation | Config Service
PixEagle requires MAVLink communication with PX4.
| Component | Purpose | Default Port |
|---|---|---|
| MAVSDK | Offboard control & telemetry | UDP 14540 |
| MAVLink2REST | REST API for OSD/telemetry | UDP 14569 |
| QGC | Ground Control Station | UDP 14550 (optional) |
Setup Options:
- mavlink-anywhere - Guided setup (Recommended) | Video Tutorial
- Manual mavlink-router - Advanced users
Full Guide: Drone Interface Documentation | Port Configuration
| Port | Service | Required |
|---|---|---|
| 3040 | Dashboard | Yes |
| 5077 | Backend API | Yes |
| 5551 | WebSocket (video) | Yes |
| 8088 | MAVLink2REST API | For OSD |
| 14540 | MAVSDK | For PX4 |
# Ubuntu/Raspbian firewall
sudo ufw allow 3040/tcp && sudo ufw allow 5077/tcp && sudo ufw allow 5551/tcp && sudo ufw allow 8088/tcpFull Guide: Port Configuration
Using Makefile (Linux/macOS):
make run # Full system (recommended)
make dev # Development mode with hot-reload
make stop # Stop all services
make sync # Pull latest updates safely
make reset-config # Reset config files to defaults
make status # Show service status
make logs # Attach to tmux session
make help # Show all commandsUsing scripts directly:
bash scripts/run.sh # Full system (recommended)
bash scripts/run.sh --dev # Development mode with hot-reload
bash scripts/run.sh --rebuild # Force rebuild
bash scripts/run.sh -d # Skip dashboard
bash scripts/run.sh -p # Skip Python app
bash scripts/run.sh -m # Skip MAVLink2REST
bash scripts/stop.sh # Stop all servicesTmux Controls: Ctrl+B + arrows (switch panes) | Ctrl+B D (detach) | tmux attach -t pixeagle (reattach)
Troubleshooting: Troubleshooting Guide
For accelerator-aware PyTorch setup (CUDA/MPS/CPU auto-detection):
bash scripts/setup/setup-pytorch.sh --mode auto
bash scripts/setup/check-ai-runtime.shUse --mode gpu (strict GPU) or --mode cpu (force CPU) when needed.
More Info: Installation Guide
PixEagle supports two service management modes:
Production auto-start (Raspberry Pi/Jetson/Linux with systemd):
# Install canonical management command
sudo bash scripts/service/install.sh
# Runtime management
pixeagle-service start
pixeagle-service stop
pixeagle-service status
pixeagle-service attach
# Boot auto-start
sudo pixeagle-service enable
sudo pixeagle-service disable
# Logs
pixeagle-service logs -f
# Optional SSH login hint (interactive SSH sessions only)
pixeagle-service login-hint enable
pixeagle-service login-hint disable
# System-wide SSH login hint (all users on the board)
sudo pixeagle-service login-hint enable --system
sudo pixeagle-service login-hint disable --systemSystem login hint now shows:
- PixEagle ASCII banner
- service and boot state
- per-interface dashboard/backend URLs
- repo metadata (branch, commit, date, origin)
- quick operations commands
If hint format still looks old after updating code, regenerate it:
sudo pixeagle-service login-hint disable --system
sudo pixeagle-service login-hint enable --systemTmux session name: pixeagle.
During make init on Linux/systemd, PixEagle prompts for:
- auto-start enablement
- system-wide SSH login hint
- optional immediate start and optional reboot validation
When installed through a platform like ARK-OS, the platform manages the service lifecycle:
- Runs as a user-level systemd service managed by the platform
make initautomatically skips standalone service setup (no conflict)- Use the platform's web UI or
systemctl --user {start|stop|status} pixeagle - Dashboard accessible at
http://<host>/pixeagle/through the platform's nginx
Note: Standalone and platform-managed modes are mutually exclusive. PixEagle auto-detects the active mode and prevents conflicts.
More Info: Service Management Runbook | Installation Guide
| Key | Action |
|---|---|
t |
Select ROI (Classic Tracker) |
c |
Cancel Tracking |
y |
Trigger YOLO Detection |
f |
Start Following |
s |
Toggle Smart Tracker Mode |
q |
Quit |
PixEagle provides full Windows support with enterprise-grade batch scripts matching the Linux experience:
# Initialize (one-time setup)
scripts\init.bat
# Run PixEagle
scripts\run.bat
scripts\run.bat --dev # Development mode
# Stop services
scripts\stop.batFeatures:
- Windows Terminal tabs support (similar to tmux)
- Automatic fallback to separate windows
- Full 9-step setup wizard
- All component runners
Contributions welcome! Please:
- Fork the repository
- Create a feature branch
- Submit a pull request
Report issues at GitHub Issues.
Apache License 2.0 - see LICENSE for details.
Commercial use: Allowed with attribution. You must include the copyright notice and license in any distribution.
PixEagle is experimental software. Use at your own risk. The developers are not responsible for any misuse or damages.
Star this repo if you find it useful!
