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 gloves drone drone equipment equpiment
标签:Betaflight, ESP32, ESP-NOW, MPU6050, MSP协议, 传感器技术, 传感器数据融合, 低延迟, 加速度计, 多无人机系统, 安全机制, 实时传输, 嵌入式开发, 嵌入式系统, 微控制器, 手势控制, 手势识别, 控制映射, 无人机, 无线传感器网络, 无线通信, 机器人导航, 物联网, 电机控制, 穿戴设备, 遥操作, 防故障设计, 陀螺仪, 飞行控制器, 飞行模式