diff --git a/UWB Follow-Me System.-.md b/UWB Follow-Me System.-.md new file mode 100644 index 0000000..f9994b0 --- /dev/null +++ b/UWB Follow-Me System.-.md @@ -0,0 +1,63 @@ +# UWB Follow-Me System + +## Overview +Precision person-following using Ultra-Wideband (UWB) two-way ranging. Enables SaltyLab to follow Tee during outdoor EUC rides at 20-30 km/h. + +## Hardware +### MaUWB ESP32-S3 (DW3000) +- **Vendor:** Makerfabs +- **URL:** https://www.makerfabs.com/mauwb-esp32s3-uwb-module.html +- **Price:** $54.80 USD each +- **SKU:** MAUWBS3CA1 +- **Qty needed:** 3 (1 tag + 2 anchors) + +### Specs +| Parameter | Value | +|-----------|-------| +| UWB Chip | Qorvo DW3000 + PA | +| MCU | ESP32-S3 (WiFi + BLE 5.0) | +| Co-processor | STM32 (TWR scheduling firmware) | +| Range | 500m outdoor | +| Accuracy | ±10cm | +| Max anchors | 8 (auto-select nearest) | +| Max tags | 64 | +| Interface | AT commands via UART, USB | +| Display | 0.96\" OLED | +| Power | USB 5V, ~200-250mA active | +| Channels | UWB Ch5 (6.5 GHz) + Ch9 (8 GHz) | +| Apple U1 | Interoperable (per Qorvo) | + +## System Layout +``` +[Tag - on Tee] [Anchor A - left stem] [Anchor B - right stem] + MaUWB ESP32-S3 MaUWB ESP32-S3 MaUWB ESP32-S3 + 18650 battery USB → Orin Nano USB → Orin Nano + OLED shows range ~25cm apart for bearing estimation +``` + +## How It Works +1. **Tag** (Tee) and **Anchors** (bot) perform Two-Way Ranging (TWR) at ~10-100Hz +2. STM32 firmware handles time-slot scheduling (no signal conflicts) +3. ESP32-S3 reports range via AT commands over UART/USB +4. Two anchors spaced 25cm apart → **TDoA gives bearing angle** +5. ROS2 node publishes `/uwb/target` (distance + angle in base_link frame) +6. Fused with camera person detection for identity confirmation + +## Tag Battery (12hr runtime) +- 3000mAh 18650 cell (e.g., Samsung 35E) +- TP4056 USB-C charger board +- Mini boost converter to 5V +- 3D-printed enclosure with belt clip + +## Software Integration +- ROS2 package: `saltybot_uwb` +- Subscribes to anchor serial ports +- Publishes: `/uwb/target` (geometry_msgs/PoseStamped) +- Fused in `person_follower_node` as primary position source +- Camera serves as secondary (identity confirmation + obstacle avoidance) + +## References +- Makerfabs GitHub: https://github.com/Makerfabs/Makerfabs-ESP32-UWB-DW3000 +- MaUWB AT command docs: https://www.makerfabs.com/blog/post/mauwb-new-firmware-upgrade_v112 +- Gitea issue: #57 +