# UnityDrone
**Repository Path**: youlai-code/unity-drone
## Basic Information
- **Project Name**: UnityDrone
- **Description**: 记录了在 Unity 中构建一个高拟真 FPV 穿越机(Drone)物理模拟系统的过程。从基础的 PID 控制到引入空气动力学阻力、地面效应和电机惯性,一步步逼近真实的飞行手感。
- **Primary Language**: Unknown
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-12-24
- **Last Updated**: 2025-12-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
该项目是一个基于Unity引擎开发的无人机模拟系统。它包含控制无人机飞行的核心组件,如飞行控制器、电机引擎和PID控制器等。以下为项目结构说明及使用指南:




---
### 项目结构
| 架构分层 | 核心脚本 | 角色定位 | 主要功能与逻辑 | 数据流向 / 物理作用 |
| ---------- | --------------------- | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
| **输入层** | `DroneInput.cs` | **信号预处理** | 1. **读取硬件**:接收物理手柄输入。
2. **数据清洗**:处理摇杆死区、应用映射曲线。 | **输出**:标准化控制信号
• 油门 (Throttle): `0 ~ 1`
•俯仰/横滚/偏航: `-1 ~ 1` |
| **控制层** | `FlightController.cs` | **大脑 (Brain)** | 1. **模式处理**:根据 Angle/Acro 模式将输入转为目标角速度。
1. **PID 调度**:调用 `PID.cs` 计算误差。
2. **混控 (Mixer)**:混合主油门与 PID 修正值。
3. **环境模拟**:计算非线性阻力与地面效应。 | **输入**:标准化信号 + 刚体物理状态
**输出**:4 个电机的最终目标油门 |
| **算法层** | `PID.cs` | **纯数学计算** | 1. **误差计算**:对比目标值与当前值。
2. **修正输出**:计算比例(P)+积分(I)+微分(D)的总和。 | **输入**:目标值、当前值、时间差 (dt)
**输出**:PID 修正值 |
| **执行层** | `MotorEngine.cs` | **四肢 (Limbs)** | 1. **惯性模拟**:通过低通滤波模拟电机响应延迟。
2. **物理交互**:将油门值转换为具体的物理力。 | **输入**:目标油门值
**作用**:向 Rigidbody 施加
• 推力 (Force)
• 反扭矩 (Torque) |
- **Assets/SimDrone/Scripts**
- `DroneInput.cs`: 负责处理无人机的输入控制,包括油门、偏航、俯仰和滚动。
- `FlightController.cs`: 主飞行控制逻辑,依赖 `MotorEngine` 和 `PID` 控制器,实现无人机的姿态控制。
- `MotorEngine.cs`: 模拟无人机电机的物理行为,包括推力和扭矩控制。
- `PID.cs`: 提供PID控制器功能,用于飞行姿态的稳定控制。
- **Assets/SimDrone/Models**
- 包含无人机的3D模型文件(如 `Drone 2.fbx`)。
- **Assets/SimDrone/Materials**
- 包含无人机和地面的材质文件,用于渲染。
- **Assets/SimDrone/Textures**
- 包含无人机的纹理贴图文件。
- **Assets/Scenes**
- 包含Unity场景文件(如 `SampleScene.unity`),用于构建模拟环境。
---
### 核心功能
- **输入控制**
- 支持通过游戏手柄或键盘控制无人机的移动。
- **飞行控制**
- 使用PID算法实现稳定飞行,支持多种飞行模式(如角度模式)。
- **物理模拟**
- 模拟电机推力、扭矩以及空气动力学效应。
---
### 使用说明
1. **启动Unity项目**
- 使用Unity编辑器打开项目。
2. **加载场景**
- 打开 `Assets/Scenes/SampleScene.unity` 开始模拟。
3. **控制无人机**
- 手柄控制无人机的飞行。
1. **调整参数**
- 在 `FlightController` 组件中调整PID参数和飞行模式。
---
### 开发者指南
- **扩展功能**
- 可以通过修改 `FlightController` 和 `PID` 类来优化飞行算法。
- 添加新的传感器或物理效果,增强模拟的真实性。
- **贡献代码**
- 如果您有兴趣为项目贡献代码,请提交Pull Request。
---
### 许可证
本项目遵循MIT开源许可证。有关详细信息,请参阅 `LICENSE` 文件。
---
如需进一步了解,请查阅项目文档或联系开发者。欢迎为项目提供反馈和建议!