amithmathew7/hand-actuated-wireless-kinetics
GitHub: amithmathew7/hand-actuated-wireless-kinetics
HAWK是一个穿戴式手势控制系统,用于通过自然手部动作导航多架无人机,简化了传统遥控操作的复杂性。
Stars: 0 | Forks: 0
# HAWK 🦅
### 用于无人机导航的手部驱动无线动力学
## 概述
HAWK 通过将自然的手势转化为精确的无人机飞行指令,取代了传统的遥控器。一个配备 MPU6050 IMU 的智能手套捕捉手部姿态,并通过 ESP-NOW 无线传输飞行指令至两架独立的无人机。每架无人机运行一个专用的 ESP32 接收器,该接收器使用 MSP 协议与 Betaflight 飞控进行通信。
向前倾斜手部 —— 无人机向前俯冲。向左倾斜 —— 它向左倾斜。将一根导线触地 —— 它解锁并起飞。松开 —— 它平稳降落。
## 演示
## 系统架构
```
┌─────────────────────────────┐ ┌──────────────────────────────┐
│ GLOVE UNIT │ │ DRONE UNIT │
│ │ │ │
│ MPU6050 IMU │ │ ESP32 Receiver │
│ (pitch + roll angles) │ │ (ESP-NOW → MSP decode) │
│ ↓ │ ESP-NOW│ ↓ │
│ ESP32 Microcontroller ─────┼────────▶│ F722 Flight Controller │
│ (filter + map + transmit) │ 5-10ms │ (Betaflight Angle Mode) │
│ ↓ │ │ ↓ │
│ Conductive Probe Trigger │ │ SimonK 30A ESCs │
│ (drone selection + arm) │ │ ↓ │
│ │ │ A2212 2200KV BLDC Motors │
└─────────────────────────────┘ └──────────────────────────────┘
```
## 硬件
### 手套单元
| 组件 | 详情 |
|-----------------|--------------------------------------------|
| 微控制器 | ESP32 (38针) |
| IMU | MPU6050 (I²C) |
| 无人机触发器 | 导电探针线 (GPIO 13 + GPIO 14) |
| 供电 | USB / LiPo |
### 无人机单元 (x2)
| 组件 | 详情 |
|-------------------|----------------------------|
| 飞控 | Radiolink F722 (STM32F722) |
| 接收器 | ESP32 (UART2 → MSP) |
| 电调 | SimonK 30A (PWM) |
| 电机 | A2212 2200KV BLDC |
| 螺旋桨 | 5152 三叶桨 |
| 电池 | 3S LiPo |
| 机架 | 450mm 四轴 |
## 接线
### 手套 ESP32
```
MPU6050 SDA → GPIO 21
MPU6050 SCL → GPIO 22
MPU6050 VCC → 3.3V
MPU6050 GND → GND
Drone 1 wire → GPIO 13 (touch to GND = arm drone 1)
Drone 2 wire → GPIO 14 (touch to GND = arm drone 2)
```
### 无人机 ESP32 → F722 飞控
```
ESP32 TX (GPIO 17) → F722 UART2 RX
ESP32 RX (GPIO 16) → F722 UART2 TX
ESP32 GND → F722 GND
ESP32 5V → F722 5V
```
## 软件设置
### 前置条件
- Arduino IDE 2.x
- 已安装 ESP32 开发板包
- 库: `MPU6050`, `esp_now`, `WiFi`, `HardwareSerial`
### 手套 (发射器)
1. 打开 `glove/transmitter_glove.ino`
2. 更新 MAC 地址以匹配您的无人机 ESP32:
```
uint8_t drone1MAC[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; // replace
uint8_t drone2MAC[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; // replace
```
3. 刷入到手套 ESP32
4. 以 115200 波特率打开串口监视器
5. 注意启动时打印的发射器 MAC 地址
### 无人机 (接收器)
1. 打开 `drone/receiver_final.ino`
2. 更新受信任的发送者 MAC 以匹配您的手套 ESP32:
```
uint8_t trustedSender[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; // replace
```
3. 根据您的无人机调整悬停油门:
```
#define THROTTLE_HOVER 1350 // increase until drone hovers
```
4. 刷入到无人机 ESP32 (先断开与飞控的连接)
### Betaflight 配置
| 设置 | 值 |
|---|---|
| 接收器模式 | MSP (通过 MSP 端口控制) |
| UART2 | 配置/MSP 已启用 |
| 电调协议 | PWM |
| 电机 PWM 频率 | 400Hz |
| 飞行模式 | 自稳 |
| 倾斜角限制 | 45° |
| 倾斜角强度 | 80 |
| 电机输出限制 | 100% |
| 解锁通道 | AUX1 → 1600-2100 |
| 自稳模式通道 | AUX2 → 1600-2100 |
**在 CLI 中:**
```
set motor_pwm_rate = 400
save
```
**PID 值 (针对平稳飞行已调参):**
| | P | I | D |
|-------|----|----|----|
| 横滚 | 32 | 30 | 18 |
| 俯仰 | 35 | 28 | 20 |
| 偏航 | 30 | 40 | 0 |
## 工作原理
### 手势到飞行指令的流程
**1. 感测**
手套背面的 MPU6050 IMU 以 50Hz 的频率持续测量三轴加速度计数据。
**2. 角度计算**
使用反正切近似值计算俯仰角和横滚角:
```
pitch = atan2(ay, az) × (180 / π)
roll = atan2(ax, az) × (180 / π)
```
**3. 滤波**
指数平滑滤波器 (α = 0.15) 消除传感器噪声。±5° 的死区消除了自然手抖。
**4. RC 映射**
滤波后的角度 (-45° 到 +45°) 线性映射到 RC 通道值 (1350 到 1650 µs),以 1500µs 中位为中心。
**5. 传输**
一个 `ControlPacket` 结构体通过 ESP-NOW 单播以 50Hz 的频率传输到选定的无人机。未激活的无人机始终接收解锁指令包。
**6. 飞行控制**
无人机 ESP32 解码数据包,并以 50Hz 的频率向 F722 飞控发送 MSP 指令。一个 3 状态固件状态机管理:
- `解锁` — 油门在约 1.75 秒内从 1000 爬升至悬停值
- `飞行` — 手势指令激活,自稳模式
- `降落` — 松开导线后,油门在约 3.5 秒内逐渐下降
## 控制映射
| 手势 | 无人机动作 |
|---------------------|-------------------|
| 手部向前倾斜 | 向前俯冲 |
| 手部向后倾斜 | 向后俯冲 |
| 手部向左倾斜 | 向左横滚 |
| 手部向右倾斜 | 向右横滚 |
| 将导线 1 触地 | 解锁并飞行无人机 1 |
| 将导线 2 触地 | 解锁并飞行无人机 2 |
| 松开导线 | 平稳降落 |
## 测试结果
| 指标 | 值 |
|--------------------------------|-----------------------|
| ESP-NOW 传输延迟 | 5–10 毫秒 |
| 数据包送达率 | 100% |
| 传输频率 | 50 赫兹 |
| 通信范围 (室内) | 最远 10 米 |
| 手势死区 | ±5 度 |
| 油门爬升持续时间 | 约 1.75 秒 |
| 油门下降持续时间 | 约 3.5 秒 |
| 飞行模式 | 自稳模式 |
| 飞控协议 | 基于 UART 的 MSP |
## 仓库结构
```
HAWK/
├── README.md
├── glove/
│ └── transmitter_glove.ino
├── drone/
│ └── receiver_final.ino
├── docs/
│ ├── architecture_diagram.png
│ ├── betaflight_config.md
│ └── wiring_diagram.png
└── paper/
├── HAWK_Paper.pdf
└── HAWK_Presentation.pptx
```
## 论文
**用于无人机导航的手部驱动无线动力学**
发表于第 14 届国际当前工程趋势会议 (ICCET 2026)
论文 ID: ICCET267691
## 许可证
MIT 许可证 — 免费使用、修改和分发,但需注明出处。
gloves
drone
equipment
drone
equipment
标签:Betaflight, ESP32, ESP-NOW, MPU6050, MSP协议, 传感器技术, 传感器数据融合, 低延迟, 加速度计, 多无人机系统, 安全机制, 实时传输, 嵌入式开发, 嵌入式系统, 微控制器, 手势控制, 手势识别, 控制映射, 无人机, 无线传感器网络, 无线通信, 机器人导航, 物联网, 电机控制, 穿戴设备, 遥操作, 防故障设计, 陀螺仪, 飞行控制器, 飞行模式