# DroneControlSystem **Repository Path**: xonghanwei/drone-control-system ## Basic Information - **Project Name**: DroneControlSystem - **Description**: DroneControlSystem 是一个基于 Python - pymavlink 的无人机控制系统,支持 PX4 飞控平台。该系统提供多种控制方式(语音千文大模型、键盘、API),实时状态监控,视觉处理功能,并支持集群控制扩展。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-07-15 - **Last Updated**: 2026-07-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DroneControlSystem - 无人机控制系统 ## 项目概述 DroneControlSystem 是一个基于 Python - pymavlink 的无人机控制系统,支持 PX4 飞控平台。该系统提供多种控制方式(语音千文大模型、键盘、API),实时状态监控,视觉处理功能,并支持集群控制扩展。 ## 目录结构说明 ``` DroneControlSystem/ ├── .venv/ # Python 虚拟环境 ├── main.py # 主程序入口 ├── config.py # 配置文件(全局配置) ├── requirements.txt # 依赖库列表 │ ├── core/ # 核心功能模块 │ ├── drone_controller.py # 无人机控制核心(PX4Controller) │ ├── communication.py # 通信模块(Socket连接管理) │ └── state_manager.py # 状态管理(无人机状态获取与更新) │ ├── services/ # 服务层(业务逻辑) │ ├── voice_control.py # 语音控制服务 │ ├── keyboard_control.py # 键盘控制服务 │ ├── vision_processing.py # 视觉处理服务(YOLO模型) │ ├── swarm_manager.py # 集群管理(多无人机协调) │ └── api_server.py # API服务(提供RESTful接口) │ ├── ui/ # 用户界面相关 │ ├── main_window.py # 主窗口(继承自Qt设计) │ ├── tk_show.py # TKinter信息显示 │ └── qt_designer/ # Qt Designer设计的UI文件 │ └── main_window.ui │ ├── utils/ # 工具函数 │ ├── log.py # 日志配置 │ ├── helpers.py # 辅助函数(如坐标转换等) │ └── constants.py # 常量定义 │ ├── clients/ # 客户端示例 │ ├── api_client.py # API调用示例 │ └── mobile_app/ # 移动端示例(可选) │ └── tests/ # 测试目录 ├── test_drone_controller.py └── test_vision_processing.py ``` ### 关键文件说明 1. **main.py** - 程序入口点,初始化系统并启动主循环 2. **config.py** - 全局配置(API密钥、连接参数等) 3. **core/drone_controller.py** - 无人机控制核心,封装所有基本操作 4. **services/voice_control.py** - 语音识别与控制逻辑 5. **services/api_server.py** - RESTful API服务,支持远程控制 6. **ui/main_window.py** - 主GUI界面(基于PyQt6) ## 系统架构 ### 架构图 ``` +---------------------+ | User Interface | | (Qt/TKinter/API) | +----------+----------+ | v +----------+----------+ | Services | | (Voice, Keyboard, | | Vision, Swarm, API)| +----------+----------+ | v +----------+----------+ | Core | | (Controller, State, | | Communication) | +----------+----------+ | v +----------+----------+ | 无人机硬件/模拟器 | +----------------------+ ``` ### 核心组件 1. **通信层 (Communication)** - 负责与无人机飞控的MAVLink通信 - 支持UDP/TCP连接 - 心跳检测与连接管理 2. **控制层 (Controller)** - 提供基本控制指令:起飞、降落、移动等 - 支持位置控制、速度控制、加速度控制 - 飞行模式切换 3. **状态管理层 (State Manager)** - 实时获取并更新无人机状态 - 位置、速度、电池、GPS等信息 - 状态变化通知机制 4. **服务层 (Services)** - 语音控制:语音指令识别与执行 - 键盘控制:快捷键绑定与响应 - 视觉处理:YOLO目标检测与跟踪 - 集群管理:多无人机协调控制 - API服务:RESTful接口提供远程控制 ### 设计模式 1. **观察者模式 (Observer Pattern)** - 用于状态更新:当无人机状态变化时,通知所有观察者(UI、日志、API等) - 实现事件驱动架构 2. **命令模式 (Command Pattern)** - 封装控制指令(如TakeoffCommand、LandCommand) - 支持指令队列、撤销/重做 3. **外观模式 (Facade Pattern)** - 提供简化的控制接口(如`DroneControlFacade`) - 隐藏底层复杂实现 4. **策略模式 (Strategy Pattern)** - 用于不同控制策略(如单机控制 vs 集群控制) - 可动态切换控制算法 ## 功能特性 ### 核心功能 - 多模式控制(语音、键盘、API) - 实时状态监控(位置、速度、电池等) - 视觉目标检测与跟踪 - 飞行轨迹记录与回放 - 安全保护机制(地理围栏、低电量保护) ### 扩展功能 - 集群控制(多无人机协同) - 任务规划(自主巡逻、目标搜索) - API接口(远程控制与状态查询) - 移动端支持(Android/iOS应用) ## 开发环境 ### 依赖安装 ``` # 创建虚拟环境 python -m venv .venv # 激活虚拟环境 # Windows .\.venv\Scripts\activate # Linux/MacOS source .venv/bin/activate # 安装依赖 pip install -r requirements.txt ``` ### 运行系统 ``` python main.py ``` ## API 接口文档(开发中) ### 基础URL ``` http://localhost:5000/api/v1 ``` ### 端点 1. **获取无人机状态** ``` GET /drones/{drone_id}/status ``` 2. **发送控制指令** ``` POST /drones/{drone_id}/control { "command": "takeoff", "params": {"height": 5.0} } ``` 3. **获取视频流** ``` GET /drones/{drone_id}/video_feed ``` 4. **集群控制** ``` POST /swarm/command { "command": "formation", "formation": "triangle", "drones": [1, 2, 3] } ``` ## 贡献指南 1. Fork 仓库并创建新分支 2. 提交清晰的提交信息 3. 编写单元测试 4. 确保代码符合PEP8规范 5. 创建Pull Request ## 许可协议 本项目采用 MIT 许可证。该许可证允许您自由使用、复制、修改、合并、发布、分发、再许可和/或销售本软件的副本,但必须遵守以下条件: 1. **非商业性使用**:本软件及其衍生作品仅可用于**研究学习目的**,未经书面许可不得用于任何商业用途。 2. **保留版权声明**:在软件的所有副本或重要部分中必须包含上述版权声明和本许可声明。 3. **免责声明**:本软件按"原样"提供,不提供任何明示或暗示的担保,包括但不限于对适销性、特定用途适用性和非侵权性的担保。作者或版权持有人对因软件或使用或其他交易行为引起的任何索赔、损害或其他责任不承担任何责任。 如果您希望将本软件用于商业用途,请联系项目负责人获取授权。 ## 联系方式 项目负责人/作者/联系人均为:Liang 微信:idealism74 邮箱:liangwater@163.com 项目仓库:https://gitee.com/liangwater/drone-control-system ------ **注意**:此文档为初始版本,随着项目开发将持续更新。建议开发者定期查看最新文档。