开源飞控初探(六):地面站和SDK

OLDX-FC开源飞控 1 OLDX-开源多旋翼开发平台项目 OLDX多旋翼开发平台(OLDX-FC)是由北京理工大学自动化学院所属《北理云逸科技》团队开发的一个目前国内最完整的免费开源飞控项目,随着国内开源飞控的逐步发展如匿名、 INF、无名和ACFly飞控的陆续推出,如光流、气压计和GPS等相关算法已经逐步完善,但是相比Pixhawk等国外开源飞控平台的发展和定位仍然有发展空间。OLDX-FC于14年开始对多... 阅读详情
AI摘要

文章介绍了无人机控制系统中的地面站软件,如MissionPlanner和QGroundControl,它们支持Windows和多平台,提供SDK供开发者使用。同时提到了PX4飞行控制器和相关的开源项目,以及Python的MAVLink库用于处理MAVLink消息。此外,还提及了Android的DroneKit-AndroidSDK,但现在已停止更新,而其他如MAVSDK-Java等项目仍在活跃发展中。

按照原意,不会带上天,在地面上能控制飞机的系统,都叫地面站,包括PC软件、手机App等。地面站可通过串口、TCP、UDP等多种连接,以MAVLink数据协议向飞控发命令。

载人飞机上的触控屏也会集成SDK具有控制功能,这是特例,在飞控端来看触控屏仍是一种“地面站”。

MissionPlanner

仅支持Windows。

官网地址:https://ardupilot.org/planner/

源码地址:https://github.com/ArduPilot/MissionPlanner/

编译

安装Visual Studio 2022 社区版。安装过程中,选择组件时,点击更多,导入配置"vs2022.vsconfig" (从https://raw.githubusercontent.com/ArduPilot/MissionPlanner/master/vs2022.vsconfig下载)。

clone仓库后,

git submodule update --init --recursive

用VS打开项目工程,直接编译即可。

如果报错某个类在net461找不到,可以修改对应工程的目标target。ExtLibs/BSE.Windows.Forms/BSE.Windows.Forms.csproj和ExtLibs/BaseClasses/BaseClasses.csproj,net461;netstandard2.0改为netstandard2.0

编译release版,debug版不通过。

使用说明

请参考百度出来的中文文章。MissionPlanner使用说明(持续更新) - 怒飞垂云 | 无人机知识库

源码分析

没有官方的说明文档。组织得不算好,暂略。

QGroundControl

跨所有平台。

官网地址:http://qgroundcontrol.com/

源码仓库地址:https://github.com/mavlink/qgroundcontrol。一个仓库可编译出所有平台的包。

开发者帮助文档(中文):https://dev.qgroundcontrol.com/master/zh/

安装包下载地址:https://github.com/mavlink/qgroundcontrol/releases

用户帮助文档:https://docs.qgroundcontrol.com/master/en/

文档非常完善,没必要搬运,请直接看官方信息。基于Qt开发,工程架构非常清晰。

Pixhawk

官网:https://pixhawk.org/

产品列表:https://pixhawk.org/products/

硬件标准开源地址:https://github.com/pixhawk/Pixhawk-Standards

硬件介绍请参考:Pixhawk系统架构介绍_dayL_W的博客-优快云博客_pixhawk

PX4

官网地址:https://px4.io/

源码仓库地址:https://github.com/PX4/PX4-Autopilot

开发者指南(中文):https://docs.px4.io/master/zh/development/development.html

用户指南(中文):https://docs.px4.io/master/zh/

完档很完善,没必要搬运了。

pymavlink

MAVLink基础库的python生成脚本项目,本身也是一个工具库,可以用pip install pymavlink安装,支持python3.7或以下。提供了一些工具类,可以在python环境收发解析MAVLink消息。请参考 https://mavlink.io/en/mavgen_python/

Telemetry Log(.tlog)

地面站和SDK都会记录从连接上飞控起收发MAVLink消息的日志,文件后缀名为.tlog。每次连接上就有一个文件,文件名是时间。

用Mission Planner可以把tlog转成txt或csv。下面是一段txt的示例,每行就是一条MAVLink消息,跟帧格式是对应的。请参考Serialization · MAVLink Developer Guide

2022/6/6 9:44:44 FD  5  0  0  0  0  0      0 mavlink_heartbeat_t custom_mode 0 type 6 autopilot 0 base_mode 0 system_status 0 mavlink_version 0  sig  Len 17 crc16 58784
2022/6/6 9:44:44 FD 1C  0  0 FE 22  1     1E mavlink_attitude_t time_boot_ms 3759481 roll 0.002049405 pitch 0.00155601 yaw -1.098183 rollspeed 0.0002265193 pitchspeed 0.0003532104 yawspeed 0.0008397771  sig  Len 40 crc16 52130

也可以用下面自己写的脚本,基于pymavlink开发。

#!/usr/bin/env python
from pymavlink import mavutil
import time
import sys

raw_path=sys.argv[1]
logfile = mavutil.mavlogfile(raw_path)
content = "time,vesion,len,seq,sid,cid,msg,field1,field2,field3,field4,field5,field6,field7,field8,field9,field10\n"
count = 0
while True:
    msg = logfile.recv_msg()
    count += 1
    if count == 70:
        pass
    if msg == None:
        break
    if hasattr(msg, "reason") and msg.reason == "Bad prefix":
        continue
    num_time = msg._timestamp
    frame_time = time.strftime("%Y-%m-%dT%H:%M:%S", time.localtime(num_time))
    frame_time += ".{0:03d}".format(int(num_time * 1000 % 1000))
    version = msg.get_msgbuf()[0]
    if version == 254:
        mavver = "v1"
    elif version == 253:
        mavver = "v2"
    else:
        continue
    header = msg.get_header()
    # print(frame_time, mavver, "," + str(header.mlen), "seq=" + str(msg.get_seq()),"sid=" + str(msg.get_srcSystem()), "cid=" + str(msg.get_srcComponent()))
    if msg.get_srcSystem() == 0 or msg.get_srcComponent() == 0:
        continue
    content += frame_time + "," + mavver + "," + str(header.mlen) + "," + str(msg.get_seq()) + "," + str(msg.get_srcSystem()) + "," + str(msg.get_srcComponent())
    for (k,v) in msg.to_dict().items():
        if k == "mavpackettype":
            content += "," + str(msg.get_msgId()) + "/" + v
        else:
            content += "," + k + "="
            if k == "command":
                try:
                    content += str(v) + "/" + mavutil.mavlink.enums['MAV_CMD'][v].name
                except:
                    content += str(v)
            else:
                content += str(v)
    content += "\n"
logfile.close()
filepath = raw_path[:-4] + "csv"
csv = open(filepath, "w")
csv.write(content)
csv.close()

需要安装python3.7以及pip install pymavlink。给脚本传入tlog的路径即会在tlog所在目录生成csv文件。

Android DroneKit

DroneKit-Android是3DR公司为Android应用程序开发的地面站开源SDK,支持控制ArduPilot的所有车机类型。因为基于MAVLink,所以也兼容应用了MAVLink的所有飞行器。

源码仓库地址:https://github.com/dronekit/dronekit-android。

2017年已停止更新。官网android.dronekit.io/也打不开,DNS错误。

DroneKit在MAVLink Java库的基础上,实现了连接功能,且用android background service来解耦出连接端和控制端。在service中运行的连接端自动实现了心跳、查询类型/能力/参数列表等地面站的必要操作,连接方式可支持TCP、UDP、USB、蓝牙、点对点WiFi。控制端封装了service的通信和底层MAVLink消息的收发,可通过函数进行mission航线规划、实时查看摄像头画面、校准磁力计等高级操作。

其它Android SDK

  1. 赞助PX4的DroneCode基金会的旗下项目:https://github.com/mavlink/MAVSDK-Java。提供了高层API,仍在更新。

  1. 爱好者的MAVLink实现:https://github.com/dronefleet/mavlink。已停止更新。

无人机开源地面站全面对比分析:功能、性能、兼容性及核心功能详解 开源地面站核心工具对比分析 当前主流开源地面站包括QGroundControl、MissionPlanner、APMPlanner、MAVROS、DroneCodeSDK和UgCS开源版,各具特色。功能方面,QGroundControl支持全场景通信和多机控制,MissionPlanner专精ArduPilot生态,MAVROS则是ROS与飞控的桥梁。性能上,QGroundControl数据刷新率最高达50Hz,MAVROS延迟最低(<50ms),UgCS支持50台集群控制。兼容性方面,QGround 阅读详情

相关推荐

Telemetry 标准日志接口如何提升运维效率?

Telemetry标准日志接口如何提升运维效率? 企业级SSD在存储系统的部署运维过程中,有时会需要收集日志信息做进一步问题调试分析,传统的做法是一些SSD厂商会自定义命令和工具进行收集,但不同SSD厂商工具和命令格式不尽相同,这就为存储系统的运维带来很高的运维成本。有些存储系统对SSD要求十分严格,不允许发一些自定义的命令,也会给日志收集工作带来很大的挑战。因此,Telemetry标准化日志收集接口应运而生。 Telemetry 是什么? Telemetry是 NVM Express Base Speci

Memblaze 2232

QGC地面站二次开发 :(一) 地面站介绍与软件架构概览

开源无人机控制中枢 作为一款强大的地面站软件,QGC(QGroundControl)专为无人机操作员打造,集成了实时飞行监控、精准任务规划、深度数据分析以及与无人机系统其他组件的无缝互动。在无人机操作中,它犹如核心纽带,不仅连接着飞行员与飞行器,更是决定任务执行成效的关键要素。其全面的功能和开放源代码的特性,使之在无人机领域中占据举足轻重的地位。

qq_48597462的博客 7338

开源无人机项目全解析:从飞控到SDK的开发者指南

本文为开发者提供了开源无人机项目的全面解析,涵盖从核心飞控系统(PX4与ArduPilot)到地面站软件、MAVLink通信协议以及MAVSDK开发库的完整技术栈。文章详细对比了主流开源项目的特性与适用场景,并给出了硬件选型、开发环境搭建及从仿真到真机的实践路径,旨在帮助开发者快速掌握无人机开发技能,实现自主飞行与控制。

keras9composer的博客 623

TinyGS: 开源地面站网络项目

TinyGS 是一个开源项目,旨在构建一个分布在全球的地面站网络,用于接收和操作 LoRa 卫星、气象探测器以及其他飞行物体。该项目基于 ESP32 开发板,并兼容 sx126x 和 sx127x LoRa 模块。TinyGS 的主要编程语言为 C++,同时也使用了 C、HTML、CMake、Python、Shell 和 Makefile 等语言。 ## 核心功能 - **地面站网络**:通过

gitblog_00778的博客 789

MP地面站二次开发教程(一)开发环境搭建和编译

MP地面站二次开发(一)开发环境搭建和编译

Neil_Chris的博客 9394

ardupilot开发 --- 地面站 篇

ardupilot开发 --- mission planner 篇

记录老板的每次pua,分享领导每天的毒鸡汤... 3767

(最新)ubuntu搭建PX4无人机仿真环境(3) —— ubuntu安装QGC地面站

QGC ( QGroundControl) 是一个开源地面站,基于QT开发的,有跨平台的功能。这次安装是基于Ubuntu 18.04,但也适用于其他ubuntu发行版。

weixin_55944949的博客 1万+

飞控地面站深度解剖:从MAVLink协议到实时通信架构

飞控地面站是无人机系统的神经中枢,其本质远超遥控器替代品,而是融合GIS坐标转换、MAVLink私有扩展协议与多模态通信(串口/UDP/TCP)的决策增强系统。理解其工作原理需掌握飞控与地面站间的双向闭环控制逻辑、心跳包语义复用、坐标系动态校正等关键技术。在农业植保、电力巡检等垂直场景中,地面站直接决定作业精度与系统可靠性。本文以真实工程代码为蓝本,解析协议分层设计、信号完整性验证及日志驱动调试等实践要点,聚焦飞控、地面站两大核心热词,为嵌入式开发者与无人机系统工程师提供可落地的技术参照。

weixin_33925615的博客 290

开源飞控实战指南:地面站与SDK深度解析

本文深入解析开源飞控生态中的地面站与SDK开发。详细介绍了Mission Planner和QGroundControl两大主流地面站的实战安装、核心功能与选型对比,并阐述了如何通过pymavlink等SDK用代码控制飞行器,涵盖连接、日志分析及高级调试技巧,是开发者从使用到驾驭开源飞控的实用指南。

gitlab7runner的博客 867

利用 Docker Distribution 搭建私有的 Docker Registry

1、拓扑

weixin_44983653的博客 1067

SAP BTP开发入门:从PaaS到CAP/UI5的30天学习路线

在云计算与数字化转型的大背景下,企业系统集成与云端扩展需求激增,传统的单点开发模式正面临深刻变革。PaaS(平台即服务)作为云原生的核心概念,将基础设施、开发环境与应用服务统一封装,为企业提供了灵活的扩展能力。SAP BTP正是SAP生态中的PaaS平台,它承载着系统集成、低代码开发、AI服务与数据管理,成为连接S/4HANA等核心业务系统与创新应用的桥梁。对于ABAP开发者而言,掌握BTP不仅是技能升级,更是应对从传统部署向云端订阅模式转型的必由之路。本文从平台基础出发,梳理BTP的核心服务与开发模型(如

weixin_31766003的博客 285

开源飞控实战指南:地面站与SDK深度集成方案

本文详细介绍了开源飞控与地面站的深度集成方案,涵盖开发环境搭建、MAVLink协议解析、核心功能开发及SDK高级功能集成。通过实战案例和调试技巧,帮助开发者快速掌握无人机控制系统开发,提升农业无人机等应用场景的集成效率。

weixin_33738982的博客 306

Altium Designer学习---如何进行SI仿真

Altium designer 如何进行SI仿真。         1、仿真电路中需要至少一块集成电路;             2、器件的IBIS模型;              3、在规则中必须设定电源网络和地网络;              4、建立SI规则约束;              5、层堆栈必须设置正确,电源平面必须连续;     建立的文件必须是一个工程,并把相应的文件放在工程目...

weixin_34050519的博客 4902

笔记:初识开源飞控,有哪些选择

以上内容属于笔者的学习笔记,是经过网络搜集资料后的个人总结,仅供参考。

qq_43367928的博客 8198

使用STC15F104W产生PWM脉冲

最近的小项目中使用到了STC15F104W产生PWM脉冲

yeats1989的专栏 1万+

Roboflow 与 YOLOv11 数据集全流程:从获取到训练,让你数据无忧

上传图像:点击“Upload”按钮,批量上传本地图像(支持 JPG、PNG 格式,单张最大 10MB)。智能标注:利用 Roboflow 的“Auto-Annotate”功能,基于预训练模型自动生成标注,再手动微调,标注效率提升 70%。格式导出:标注完成后,同样选择“YOLOv11”格式导出,流程与公开数据集一致。

m0_71589036的博客 272

如何学习开源飞控

前言 有一段时间没有更新文章了。新的一年新气象,因此还是要抽出时间,写点总结与思考,对自己的成长也是很有帮助。今天主要想聊一下开源飞控的学习。本人在5年前,在知乎下写过一篇回答,如何用开源飞控PIXHAWK进行二次开发? https://www.zhihu.com/question/38874663/answer/84239995 现如今,开源飞控也已经发展的相对成熟很多,所以今天重新整理一下这个问题。 为什么要学? 首先还是要搞清楚自己为什么要学开源飞控?要根据自己的需求来,比如你是要做一.

across的博客 2143

数仓建模—维度建模之维度表

首先要学会识别维度,维度是相对稳定的、可抽象具有共性的、固有的(天然的)描述度量或事实的上下文属性信息,失去维度信息的度量信息是没有意义的或者说是失去维度信息的事实表是没有意义的。其次要掌握维度表的设计原则和设计流程,从而更加科学的设计维度表,其实这些东西都是术,我们一直都说一句话大道至简,其实如果你掌握了精髓,抛开这些术也可以做到得心应手,这就像张无忌练太极剑一样,忘记了才能达到道的境界,也就是无我,如果做不到就记住这些原则加以应用从而达到术的境界。

2401_84052244的博客 4363

OpenPilot地面站GCS安装与连接教程:3步完成首次飞控配置

OpenPilot 是一个开源无人机飞控平台,而它的核心控制软件——**OpenPilot 地面站(Ground Control Station,简称 GCS)**,就是你与飞控对话的"驾驶舱"。本教程面向新手,用 3 个步骤带你完成 OpenPilot GCS 地面站的安装、飞控连接与首次配置,让你快速上手无人机地面站软件,无需任何编程基础。 [![OpenPilot地面站GCS启动画面](h

gitblog_01023的博客 989

IP-Guard安全网关实例

企业相关情况: 1.OA系统,主要为日常工作使用,该系统IP为192.168.1.2,端口为8080; 2.文件共享服务器,用于存放日常工作资料和文档,该文件共享服务器的IP为192.168.1.1,其中\\192.168.1.1\private 目录中的存放着公司重要文档,不能随意外传; 3.安全网关已采用串联的方式联入网络,IP为192.168.2.6,所有机器访问OA系统和文件共享服务...

IP-Guard专栏 707

4.Simulink基础建模操作——加减乘除运算

加减乘除运算

FPGA/MATLAB学习教程/源码/项目合作开发 9550

开源飞控初探(二):无人机技术栈

自动驾驶能让人不操控的情况下,保持经纬度和高度不变,也就是通过控制自身姿态和电机转速,抵消重力和风力的影响。如果单对抗重力,想人工控制螺旋桨转速来保持高度不变,还是有可能的,但面对不断变换速度和方向的风而言,人的反应速度不足以让经纬度变化幅度保持很小。由于地球是个球体,当两个地球表面的点足够远时,例如广州和纽约,我们难以应用“两点之间直线最短”的方案来直接过去,因为不可能穿过地底。它配有摄像头,通过对比运动过程中的图像变化,得到不同方向的位移速度,再通过一定算法得到粗略的位移量。这些点是三维的,即经纬度+

小蒙面侠的博客 3163

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

QT无人机飞控地面站软件开发

无人机地面站软件开发,QT,Mysql数据库,Qt WebEngine,com串口通信技术

2180

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ArduPilot开源飞控之硬件SBC分析

随着当下的技术发展,开源无人机的技术日趋成熟! 因此,如何来完成一架DIY的开源无人机,相信一定是大家感兴趣的。 整理、汇总、分析SBC的硬件形态,以便提供普适性更好的基础硬件环境,用于后续的研究、开发、适飞。

lida2003的专栏 2772

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: 开源飞控初探(四)ArduPilot::Copter固件源码分析
下一篇: 飞控的职责和实现原理简述
小蒙面侠
小蒙面侠 领域专家: 操作系统技术领域 领域专家: 操作系统技术领域
博客等级 码龄18年 3122粉丝 190原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小蒙面侠

来一个五羊香芋甜筒~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值