# 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控制器等。以下为项目结构说明及使用指南: ![alt text](Image/image.png) ![alt text](Image/image-1.png) ![alt text](Image/image-3.png) ![alt text](Image/操作示意图.jpg) --- ### 项目结构 | 架构分层 | 核心脚本 | 角色定位 | 主要功能与逻辑 | 数据流向 / 物理作用 | | ---------- | --------------------- | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | | **输入层** | `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` 文件。 --- 如需进一步了解,请查阅项目文档或联系开发者。欢迎为项目提供反馈和建议!