# 操控PX4无人机 **Repository Path**: baage-cn/control---px4-drone ## Basic Information - **Project Name**: 操控PX4无人机 - **Description**: 使用 mavsdk-Python 实现 MQTT 指令 操控 px4 无人机 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-02-19 - **Last Updated**: 2025-08-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目名称 这是一个基于Python的无人机监控和控制项目,旨在为无人机的状态监测与远程控制提供一套完整的解决方案。通过MQTT协议与无人机进行通信,实现飞行控制、状态监测和数据显示等功能。 ## 项目特点 - **异步支持**:利用Python的async特性,实现高效的异步通信和任务处理。 - **模块化设计**:项目分为多个模块,包括配置管理、状态监控、MQTT客户端、无人机控制器、消息处理和工具模块。 - **可扩展性**:通过`TopicHandler`和`TopicDispatcher`机制,可轻松扩展支持更多的消息主题和处理逻辑。 - **支持主流飞控系统**:基于PX4协议,适用于多种无人机飞控系统。 ## 目录结构 - `config.py`:配置管理模块。 - `main.py`:项目主程序入口。 - `monitor/status_monitor.py`:无人机状态监控模块,包括GPS、电池、飞行模式、速度、姿态等信息的监控。 - `mqtt_client.py`:MQTT客户端模块,用于与无人机进行通信。 - `px4/drone_controller.py`:无人机控制模块,提供连接、起飞、降落、返航、进入/退出Offboard模式等操作。 - `receiver/handler/basic_aircraft_topic_handler.py`:基础消息主题处理模块。 - `receiver/handler/drone_control_topic_handler.py`:无人机控制消息处理模块。 - `receiver/topic_dispatcher.py`:消息主题分发模块,根据消息主题分发到对应的消息处理类。 - `receiver/topic_handler.py`:通用消息处理基类。 - `utils/common_utils.py`:提供常用的工具函数。 - `utils/logger.py`:日志管理模块。 ## 功能模块说明 ### StatusMonitor `StatusMonitor`类用于监控无人机的多种状态信息,包括GPS、电池状态、飞行模式、速度、姿态等。每个监控方法通过订阅相关传感器或状态信息,实现对无人机运行状态的实时跟踪。 ### MQTTClient `MQTTClient`类负责与MQTT Broker建立连接,并处理消息的发布与订阅。它提供了连接、消息回调、状态发布等基础功能,是与无人机通信的核心模块。 ### DroneController `DroneController`类提供对无人机的远程控制功能,包括连接、起飞、降落、返航、进入/退出Offboard模式等操作。它与飞控系统(如PX4)进行通信,实现对无人机的精确控制。 ### TopicHandler `TopicHandler`是消息处理的基类,定义了消息处理的通用接口。所有具体的消息处理类都需要继承该类,并实现`handle`和`enable_handle`方法。 ### TopicDispatcher `TopicDispatcher`类根据消息主题动态选择合适的消息处理类进行处理,实现消息的智能路由。 ## 使用说明 ### 安装依赖 请确保安装以下依赖: - Python 3.8+ - asyncio - paho-mqtt ### 运行步骤 1. 修改`config.py`中的配置信息,包括MQTT Broker的地址、端口、无人机连接参数等。 2. 启动`main.py`,程序将自动连接无人机并开始监听MQTT消息。 ```bash python main.py ``` ### 配置说明 `config.py`中包含MQTT服务器地址、端口号、无人机连接参数等配置项,用户可根据实际环境修改。 ## 贡献者指南 欢迎贡献代码和改进!请遵循以下步骤: 1. Fork本仓库。 2. 创建新分支(`git checkout -b feature/new-feature`)。 3. 提交代码(`git commit -am 'Add some feature'`)。 4. 推送分支(`git push origin feature/new-feature`)。 5. 提交Pull Request。 ## 许可证 本项目使用MIT许可证,请查看`LICENSE`文件以了解详细信息。