新闻详情

新闻详情

首页 / 资讯中心 / 详情

用WiFi搭起PX4机载电脑与QGC的无线MAVLink链路

发布时间:2026/9/28 3:34:38来源:尧图网络
用WiFi搭起PX4机载电脑与QGC的无线MAVLink链路
干无人机调试的兄弟应该都有过这种经历飞控和地面站之间拖着一根USB线调试的时候人得蹲在机架旁边想站远一点观察就束手束脚。后来换数传电台距离是远了但一对电台几百上千不同协议还有兼容性坑。其实大多数实验室和室内调试场景根本用不到电台——机载电脑和地面站电脑之间用现成的WiFi就能把MAVLink数据传得稳稳当当。下面这套配置就是把PX4机载电脑和QGC地面站通过WiFi搭成无线链路。核心思路不复杂机载端把飞控的串口数据转发进局域网地面站QGC通过UDP或TCP去接收。适合正在做PX4二次开发、经常在实验场地来回跑、或者单纯想摆脱USB线束缚的开发者。只要你的机载电脑能连WiFi这套配置基本都能照搬。1. 无线连接的原理与方案选型1.1 MAVLink数据链路的核心概念MAVLink是PX4与地面站之间通信的基础协议。飞控通过串口或USB口把姿态、位置、遥控信号、任务信息等封装成MAVLink消息发出来地面站收到后解析成可视化界面上的数据和指令。这个链路在传统调试里就是一根USB线在机载方案里则需要一个中间进程帮你把飞控口的数据“搬”到WiFi网络上。机载端承担这个搬运任务的常用工具有两个mavlink-router和MAVProxy。mavlink-router是PX4社区推荐的轻量级路由启动后监听飞控串口再根据配置把数据复制转发到多个UDP或TCP端点。MAVProxy是老牌地面通信组件功能更多但配置略重调试期好用长期跑任务我反而更倾向于mavlink-router原因后面细说。理解这个数据链路是排查一切问题的前提。飞机端的飞控只是老老实实把MAVLink消息发到串口机载电脑上的路由进程负责转发地面站QGC负责接收和展示。任何一段出问题表现都是“连不上飞机”但排查路径完全不同。所以我习惯把链路拆成三段去看飞控到机载电脑的串口段、机载电脑内部的路由转发段、WiFi网络到QGC的接收段。1.2 三种WiFi组网方式怎么选无线方案先要确定网络拓扑。最省事的是AP模式机载电脑和地面站一起连同一个无线路由器两台设备IP在同一个子网内互相能直接ping通。这是大多数实验室和室内场地的标准做法路由器固定放在场地一角即可配置最透明出问题也好定位。第二种是机载端自建热点。树莓派或NUC上把无线网卡切成AP模式地面站笔记本去连这个热点。好处是不需要额外路由器适合没有固定网络的野外空地缺点是热点一般都带NAT转发机载端和地面站虽然还在同一个局域网但如果地面站同时还想着上互联网就需要机载端做IP转发配置多一层调试时容易分心。第三种是机载端连接已有的园区WiFi地面站也连同一个WiFi。这种方案一般在半室外场景用但园区WiFi的AP部署、频段选择、IP分配策略都不可控调试时经常出现信号抖动。我的建议是除非环境特别简单否则别选这条路。自己带一个双频路由器比什么都稳。1.3 UDP与TCP调试场景下的取舍MAVLink数据的传输协议不外乎UDP和TCP。QGC默认在UDP 14550端口上监听机载端把数据发到这个端口QGC收到就能解析。UDP的特点是只管发和收丢包不重传对于遥测类数据姿态、电量、GPS来说非常合适实时性优先偶尔丢几个包影响不大下一帧数据很快就补上来了。TCP则强调可靠性数据包丢了会重传代价是延迟会跳动在WiFi信号弱的场景下甚至会出现明显的滞后。但TCP有个好处连接关系明确QGC作为客户端主动去连机载端的TCP端口机载端不用关心QGC的IP只要QGC知道机载端IP就能建立链路。所以我的建议是默认用UDP广播方式调试信号差、需要稳定传输完整日志时再切TCP。MAVLink生态对端口有一个约定俗成的用法14550是QGC监听的UDP端口5760是mavlink-router默认的TCP端口。这两个数字会贯穿整篇配置建议直接记在笔记里。2. 环境准备与通信参数规划2.1 硬件与软件版本清单以我手头这套典型配置为例飞控是Pixhawk 6C机载电脑是树莓派4B地面站是一台Windows 11笔记本路由器是支持5GHz的双频设备。这套组合在社区里覆盖度很高你手里的硬件即使型号不同配置逻辑也完全一样。软件方面机载端我用Ubuntu 22.04mavlink-router用最新release版本PX4固件1.14.x以上都行QGC用4.x。有一点需要提醒mavlink-router的编译依赖会随版本更新如果你拉的是老版本代码在Ubuntu 22.04上可能会遇到个别依赖缺失按照报错提示装齐就行不是大问题。2.2 IP、端口与串口规划统一IP规划很重要。我习惯把机载电脑固定成静态IP地面站保持DHCP或也固定一个。比如下面这个例子设备IP地址说明机载电脑192.168.1.100静态配置DHCP保留地面站192.168.1.50静态或DHCP均可路由器192.168.1.1默认网关端口方面前面提到的14550和5760是核心。如果你有多个飞控或者多台地面站同时接端口需要错开否则数据会串。一般情况下一套飞控对应一台地面站这两个端口就够了。串口规划容易被忽略。飞控通过USB接到树莓派Linux下设备节点通常是/dev/ttyACM0。如果走的是飞控的TELEM口那就是/dev/ttyUSB0或/dev/ttyUSB1。一定要先搞清楚飞控对应的设备节点是哪个后面所有配置都依赖这个路径。2.3 串口联调WiFi之前必须做的一步在配置WiFi之前先确认机载电脑能正常读取飞控数据。飞控通过USB接到树莓派后执行ls /dev/ttyACM*大概率看到/dev/ttyACM0。如果什么都没有检查USB线是不是只能充电不能传数据这种线在调试现场太常见了我至少有两次卡在这上面换了根数据线立刻就好。然后看权限。如果设备节点的属主是root当前用户打开会有Permission denied问题。把当前用户加入dialout组sudo usermod -a -G dialout $USER重新登录后生效。不然后面mavlink-router每次启动都要sudo做开机自启时更是麻烦。接下来验证串口数据是否正常。最简单的办法是用QGC通过USB先连一次确认姿态数据能刷新。这一步别省串口联不通后面WiFi链路全白搭。如果你手头有分线板或者逻辑分析仪也可以直接抓串口波形但对大多数人来说QGC能看到飞机姿态就是串口没问题的铁证。3. 机载端mavlink-router配置3.1 编译安装树莓派上可以直接用apt装mavlink-router但版本可能偏老我建议源码编译过程不复杂。先装依赖sudo apt update sudo apt install -y git cmake g ninja-build拉代码git clone https://github.com/mavlink/mavlink-router.git cd mavlink-router git submodule update --init --recursive编译安装mkdir build cd build cmake .. make -j4 sudo make install编译时间在树莓派4B上大概几分钟如果用的树莓派5会更快。装完后验证一下mavlink-routerd --version能输出版本号就没问题。有一个小坑某些版本安装后二进制名带d叫mavlink-routerd有些版本则叫mavlink-router写systemd服务时留意一下。3.2 主配置文件详解mavlink-router的主配置文件默认路径是/etc/mavlink-router/main.conf。我推荐的最小配置如下[General] DebugLogLevel1 TcpPort5760 ReportStatsfalse [UdpEndpoint broadcast] Address255.255.255.255 Port14550 [UdpEndpoint localhost] Address127.0.0.1 Port14550 [SerialEndpoint PX4] Device/dev/ttyACM0 Baudrate115200几个关键点拆开讲。Address设置为255.255.255.255是广播地址mavlink-router会把MAVLink数据包发给整个局域网。这样QGC端不需要知道机载电脑的IP只要在同一个WiFi下、监听14550端口就能自动收到心跳包。省去了换网络就要改IP的麻烦。Baudrate这一项如果飞控是USB连接到机载电脑的其实不生效因为USB虚拟串口没有真正的波特率概念但mavlink-router要求必须填填115200即可。如果走TELEM口接波特率必须和PX4里设置的一致TX1/TX2口默认值不一样去QGC的参数列表里看MAV_1_CONFIG或MAV_2_CONFIG对应的波特率就对了。如果你不想让数据满局域网广播可以把UdpEndpoint的Address改成特定IP[UdpEndpoint GroundStation] Address192.168.1.50 Port14550广播和定点两种方式各有利弊。定点发送流量干净不打扰其他设备但每次换网络都要改配置广播省心QGC开机就能识别代价是每个连到同一个WiFi的设备都能收到MAVLink包。调试阶段我几乎都开广播省下来的时间比什么都值。还有个细节文件里我加了localhost的UdpEndpoint意思是同时向本机的14550端口发一份。这个有时候调试有用比如机载电脑上本地跑MAVSDK或者MAVProxy去读数据时能直接用。如果你不需要删掉这节不影响正常连接。3.3 系统服务与开机自启配置写好后启动mavlink-router服务sudo systemctl enable mavlink-router sudo systemctl start mavlink-router如果是编译安装mavlink-router大概率已经自带systemd service文件如果没有手动创建一个sudo nano /etc/systemd/system/mavlink-router.service内容[Unit] DescriptionMAVLink Router Afternetwork.target [Service] ExecStart/usr/bin/mavlink-routerd -c /etc/mavlink-router/main.conf Restarton-failure Useryour_username [Install] WantedBymulti-user.target注意把ExecStart的路径换成你实际的二进制路径用which mavlink-routerd查一下。如果不用User指定用户服务会以root跑串口权限没问题但安全上不太优雅。启动后看日志确认journalctl -u mavlink-router -f看到类似“Serial connection on /dev/ttyACM0”和“UDP endpoint created”的信息说明串口和网络端点都正常了。这里要分享一个真实踩过的坑树莓派上如果同时插了USB转串口和测距仪/dev/ttyACM*的顺序可能不固定这次是/dev/ttyACM0那次是/dev/ttyACM1。稳妥做法是写udev规则按设备序列号把飞控固定成软链接/dev/ttyACM_px4。操作方法是udevadm info -a -n /dev/ttyACM0在输出里找到ATTRS{serial}的值然后创建规则文件把设备固定下来。这个技巧可以彻底避免开机后识别错设备多飞控调试时尤其有用。3.4 MAVProxy替代方案有朋友习惯用MAVProxy做机载路由也行。一条命令搞定mavproxy.py --master/dev/ttyACM0,115200 --outudp:192.168.1.50:14550或者广播形式mavproxy.py --master/dev/ttyACM0,115200 --outudpbcast:14550MAVProxy可以随时在终端里用命令行操作MAVLink消息调试期确实方便比如直接发指令切换飞行模式。但长期运行时它的日志输出比mavlink-router多出错时关键信息容易被刷屏。我的习惯是调试抓包用MAVProxy稳定飞行任务跑mavlink-router各管一段。4. QGC地面站连接配置4.1 UDP模式一把梭连上打开QGC点击左上角的“Q”图标进入Application Settings再进Comm Links。点Add添加一个链路Type选择UDP端口填14550。这个链路本质上是让QGC在14550端口上默默监听一旦收到MAVLink包就会自动连接。如果机载端用的广播模式地面站这边什么都不用多改。QGC开在那里飞控加电、mavlink-router启动之后最多几秒钟右上角就会从Disconnected变成你的飞机型号和固件版本。我实际使用中UDP方式的自动发现基本是秒连这也是我推荐UDP广播作为首选的原因。4.2 TCP模式主动连接更可控如果你在mavlink-router里开了TcpPort5760QGC也可以走TCP。添加Link时Type选择TCPServer Address填机载电脑的IP比如192.168.1.100Server Port填5760点Connect即可。TCP的优点前面说过QGC是主动连接方哪怕机载端广播链路关了只要TCP端口开着QGC一直重试也能连上。缺点同样明显每次开机机载电脑的IP一变QGC这边就再也连不上了。所以选TCP方案的前提是先给机载电脑配好静态IP不然每次重启都像开盲盒。4.3 连接成功后的三步验证连上之后先别急着解锁起飞。在QGC里做三件事第一看主界面右上角的连接状态和飞机型号确认固件版本被正确识别。第二打开MAVLink Inspector路径在Analyze工具里确认消息流里有HEARTBEAT、GPS_RAW_INT、ATTITUDE等常见消息。如果消息频率特别低八成是无线链路不稳去查信号。第三切到Fly页面把飞机放在桌上手动轻轻晃动飞控看姿态是否跟着动。这一步能确认遥测数据是实时通着的不是只有心跳包。如果发现MAVLink消息频率很低优先排查WiFi信号其次检查mavlink-router日志。具体排查方法看下一节。5. 高频问题排查与避坑实录5.1 高频问题速查表我整理了一份问题对照表基本覆盖了WiFi连接配置中八成的情况现象可能原因处理方法QGC一直显示Waiting for vehicle机载端没发心跳包查mavlink-router日志确认/dev/ttyACM存在机载和地面站能互相ping通但QGC连不上UDP端口被防火墙拦截放行14550/5760端口或临时关闭ufw连上后数据刷新很慢WiFi信号差或频段拥挤近距离测试或换5GHz频段重启机载电脑后连接失效静态IP没配、串口设备名变了配静态IP用udev固定串口mavlink-router启动报Permission denied当前用户不在dialout组usermod -a -G dialout并重新登录广播模式下QGC还是收不到路由器开了AP隔离进路由器后台关闭客户端隔离防火墙这里多说一句。Ubuntu的ufw默认一般没开但如果你曾经配过防火墙记得加规则sudo ufw allow 14550/udp sudo ufw allow 5760/tcp sudo ufw allow 5760/udp很多人在Windows笔记本上折腾半天结果问题是机载端Linux防火墙把UDP广播挡了这类问题最费时间。5.2 无线信号与延迟优化我实际调试中最常见的问题不是配置而是信号干扰。实验室WiFi环境特别拥挤2.4GHz频段经常有几十个热点蓝牙鼠标、无线键鼠也都在这个频段附近凑热闹。第一次测试的时候飞机在地面站旁边不到三米数据却一波一波地卡顿最后发现是2.4GHz被干扰得厉害。处理办法是近场用5GHz远场降到2.4GHz。5GHz近距离延迟低、吞吐高但穿墙衰减明显2.4GHz覆盖远但干扰源多。如果你不确定当前信号质量在QGC的MAVLink Inspector里看消息频率正常连接下消息刷新应该是每秒十几到几十条明显低于这个数值就要处理信号了。还有一个容易被忽略的点是天线方向。笔记本天线通常集成在屏幕边框树莓派小铁盒里的天线位置又朝向另一边。调试时把双方的天线方位大致对齐信号质量能改善不少。另外路由器尽量放在场地中间偏高的位置不要放在金属桌面或机架旁边金属对WiFi信号的衰减比你想象中大得多。5.3 无路由器场景的AP热点应急方案如果外出场地没有路由器机载电脑开热点是最后的兜底方案。树莓派上NetworkManager切AP模式很容易先查看无线网卡名称nmcli device status创建热点假设网卡是wlan0nmcli device wifi hotspot ifname wlan0 ssid px4-link password 12345678创建完查看热点的IP段nmcli connection show Hotspot | grep IP4.ADDRESS一般是192.168.2.1/24这类网段。此时mavlink-router不用大改还是广播模式地面站笔记本连上这个热点后IP会自动从热点网段拿一个QGC监听14550自动就能收到广播数据包。有两点提醒一是热点名称别太复杂个别老式网卡对特殊字符的SSID支持有问题二是机载电脑开了热点多半就没法同时上外网了如果还需要远程SSH或者其他联网服务建议准备第二块USB无线网卡一块做热点一块上网互不干扰。跑这套配置踩过不少坑最大的体会是“先有线再无线”这个顺序千万不能乱。很多人一上来就急着配mavlink-router和WiFi链路结果串口那头根本没数据后面排查全是白费功夫。从飞控到机载电脑再经WiFi到QGC链路一段一段通任何一步出问题都容易定位。最后分享一个小技巧如果调试时不方便带路由器又想让地面站和机载端同时上网可以在机上把USB tethering和WiFi热点配合使用。手机USB共享网络给树莓派树莓派再开热点给地面站这样地面站既能看到飞机又能正常上云台控制和其他网络服务。这套组合在户外实测过很多次稳定性非常不错。WiFi链路本身做室内调试和集群测试已经很够用了实在要飞远再上数传电台也不迟。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

PseKNC编码与ac4C位点预测:从RNA序列到机器学习模型的完整实践 2026/9/28 4:34:51

PseKNC编码与ac4C位点预测:从RNA序列到机器学习模型的完整实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
从零搭建网站推广方案策划:5种技术选型对比,避开建站高价坑 2026/9/28 4:34:51

从零搭建网站推广方案策划:5种技术选型对比,避开建站高价坑

从零搭建网站推广方案策划:5种技术选型对比,避开建站高价坑 找建站公司最怕什么?不是功能少,是报价单里藏着无数“隐形高价”。很多老板一听“网站推广方案策划”就觉得是虚的,其实这玩意儿直接决定了你后续是从零搭建一个能用三年的站,还是买一个半年…

阅读更多 →
Bao微内核在RISC-V商用SoC BPI-SM10上的移植实践 2026/9/28 4:34:51

Bao微内核在RISC-V商用SoC BPI-SM10上的移植实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
解决 Cursor 更新后连接远程服务器失败:cursor-server 手动安装适配方案(TaoToken 配置骨架) 2026/9/28 4:34:44

解决 Cursor 更新后连接远程服务器失败:cursor-server 手动安装适配方案(TaoToken 配置骨架)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
编程小白用AI编程工具做软件:TaoToken统一Key接入Cline的settings.json配置与验证 2026/9/28 4:34:44

编程小白用AI编程工具做软件:TaoToken统一Key接入Cline的settings.json配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
ClickUp MCP Server 服务说明文档:用 npx 与 API Key 打通任务流 2026/9/28 4:34:44

ClickUp MCP Server 服务说明文档:用 npx 与 API Key 打通任务流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉