UWB ranging, trilateration, ESP32-S3 firmware, and visualization for a mother-ship UAV docking system.
Chinese · Main Project · Vision Module · Project Website · Quickstart · Features · Tech Stack
This repository owns the mid-range relative-position layer of the Mother-Ship Docking Drone System. GPS/RTK can bring the child UAV near the mother platform, but docking needs a local coordinate estimate relative to the mother frame.
The experiments here focus on turning UWB anchor-to-tag ranges into an inspectable x, y, z estimate, then preparing that estimate for Pixhawk/MAVLink and the larger docking stack.
- ESP32-S3 Arduino sketches for UWB ranging, ESP-NOW, and Pixhawk-side communication experiments.
- Four-anchor docking-frame geometry for relative localization experiments.
- Trilateration and least-squares solving path for converting ranges into local position.
- Python serial tools and 3D viewers for inspecting distance and pose streams.
- Companion role to the main docking project, alongside the OpenMV AprilTag vision module.
- Mount UWB anchors on the mother docking frame and a UWB tag on the child UAV.
- Read per-anchor distance packets from the ESP32-S3/UWB hardware path.
- Filter distance spikes and map ranges to the configured anchor geometry.
- Solve the relative position estimate and visualize it on the PC tools.
- Use the result as the mid-range localization signal before terminal vision alignment.
Clone the repo, install the PC visualization dependencies, and flash the firmware from firmware/ with Arduino IDE or your ESP32 toolchain.
git clone https://github.com/Ha22yX/UWB-Project.git
cd UWB-Project
pip install -r tools/requirements.txt
# Flash the ESP32-S3 sketches from firmware/ in Arduino IDE
python tools/visualization/uwb_viewer.pyUpdate serial ports, UWB IDs, anchor coordinates, and baud rates for your actual hardware before running the viewers.
| Item | What to adjust |
|---|---|
| Anchor geometry | Measure anchor positions on the mother docking frame and keep units consistent. |
| Serial ports | Set the ESP32-S3 / UWB / Pixhawk ports used by the viewer scripts. |
| UWB IDs | Match firmware anchor/tag IDs to the physical modules. |
| Flight-controller path | Treat MAVLink/Pixhawk scripts as bench tests until verified safely. |
| Layer | Technology | Role |
|---|---|---|
| Firmware | Arduino, ESP32-S3 | UWB, ESP-NOW, and Pixhawk experiments. |
| Localization | UWB trilateration | Convert ranges into mother-frame relative position. |
| Visualization | pyserial, matplotlib, PyQtGraph | Inspect serial data and pose streams. |
| Integration | Pixhawk, MAVLink | Prepare flight-controller communication paths. |
firmware/uwb/ UWB ranging and solver sketches
firmware/docking/ mother/child ESP-NOW docking sketches
firmware/pixhawk/ Pixhawk TELEM and MAVLink experiments
tools/visualization/ serial and 3D viewers
docs/ wiring notes, references, and diagrams
archive/ older prototypes kept for context
Hardware research workspace. It is useful for bench testing and documentation, but it is not a ready-to-fly autopilot or safety-certified docking controller.
- Mother-Ship-Docking-Drone-System - main autonomous docking project.
- OpenMV-AprilTag - terminal visual localization module.
No project-wide open-source license has been declared yet.