让QGroundControl (QGC) 和 PX4 连接起来有几种方式,具体取决于您的运行环境。以下是完整的连接方法:

1. 软件在环 (SITL) 模拟连接

方法1:使用默认设置(自动连接)

 
# 启动PX4 SITL(在终端1)
cd /path/to/PX4-Autopilot
make px4_sitl_default jmavsim

# 启动QGroundControl(在终端2)
./QGroundControl.AppImage  # Linux
# 或直接双击QGC可执行文件
 
 
QGC会自动检测并连接到localhost:14550

方法2:手动指定连接

 
# 启动PX4 SITL,指定UDP端口
cd /path/to/PX4-Autopilot
make px4_sitl_default jmavsim

# 在QGC中手动添加连接:
# 1. 打开QGC
# 2. 点击左上角"Q"图标 → 应用设置 → 通讯链接
# 3. 点击"添加"
# 4. 选择"UDP"
# 5. 端口: 14550
# 6. 地址: 127.0.0.1
 
 

2. 使用MAVLink协议连接

检查PX4 SITL状态

 
# 查看PX4是否在监听正确端口
netstat -tulpn | grep 14550
# 应该看到: udp 0 0 0.0.0.0:14550 0.0.0.0:*
 
 

验证MAVLink通信

 
# 使用mavlink工具测试连接
mavlink_status
# 或使用mavproxy
mavproxy.py --master=127.0.0.1:14550 --out=127.0.0.1:14551
 
 

3. 常见问题排查

检查PX4启动日志

启动PX4 SITL时,应该看到类似输出:
 
INFO  [simulator] Got initial simulation data, running sim..
INFO  [mavlink] mode: Normal, data rate: 4000000 B/s on udp port 14550 remote port 14540
INFO  [mavlink] mode: Onboard, data rate: 4000000 B/s on udp port 14550 remote port 14540
INFO  [mavlink] mode: Onboard, data rate: 4000 B/s on udp port 18570 remote port 14560
INFO  [mavlink] mode: Gimbal, data rate: 400000 B/s on udp port 13030 remote port 14540
INFO  [mavlink] mode: Config, data rate: 400000 B/s on udp port 14550 remote port 14540
INFO  [mavlink] mode: Vision, data rate: 400000 B/s on udp port 14550 remote port 14540
 
 

检查QGC连接状态

在QGC中:
  1. 查看顶部状态栏:应该显示"已连接"
  2. 查看"飞行视图":应该有姿态指示器和HUD
  3. 查看"设置" → "摘要":应该显示硬件信息

4. 高级配置方法

自定义启动脚本

创建启动脚本 start_sitl.sh
 
#!/bin/bash
# 启动PX4 SITL
cd /path/to/PX4-Autopilot
export PX4_HOME_LAT=40.7128
export PX4_HOME_LON=-74.0060
export PX4_HOME_ALT=0

# 启动仿真
make px4_sitl_default jmavsim
 
 

使用不同的仿真器

 
# 使用Gazebo仿真
make px4_sitl_default gazebo

# 使用AirSim仿真(需要额外配置)
make px4_sitl_default none  # 只启动PX4,不启动仿真器
# 然后单独启动AirSim
 
 

5. 网络配置

在同一网络中的多机配置

 
# 启动PX4,绑定到特定IP
make px4_sitl_default jmavsim
# 在启动脚本中设置:
export PX4_SIM_HOST_ADDR=192.168.1.100  # 你的IP地址
 
 

在QGC中配置远程连接

 
协议: UDP
端口: 14550
远程地址: 192.168.1.100  # PX4所在机器的IP
远程端口: 14550
 
 

6. 故障排除指南

步骤1:检查PX4是否正常运行

 
# 在PX4终端中应该看到心跳消息
INFO  [mavlink] partner IP: 127.0.0.1
 
 

步骤2:检查端口监听

 
# Linux/Mac
lsof -i :14550
# 或
netstat -an | grep 14550

# Windows
netstat -an | findstr 14550
 
 

步骤3:检查防火墙设置

 
# Linux 检查防火墙
sudo ufw status
# 如果需要,开放端口
sudo ufw allow 14550/udp

# Windows 检查防火墙
# 控制面板 → Windows Defender防火墙 → 高级设置
 
 

步骤4:验证MAVLink消息

 
# 使用mavlink工具监听
mavlink_receiver 127.0.0.1:14550
# 应该看到心跳消息
 
 

7. 使用脚本自动化连接

Python连接测试脚本

 
#!/usr/bin/env python3
"""
QGC-PX4 连接测试脚本
"""

import socket
import time
from pymavlink import mavutil

def test_px4_connection(host='127.0.0.1', port=14550, timeout=5):
    """测试PX4连接"""
    print(f"🔍 测试PX4连接 {host}:{port}")
    
    # 测试端口连通性
    try:
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        sock.settimeout(timeout)
        sock.connect((host, port))
        print("✅ 端口连接成功")
    except Exception as e:
        print(f"❌ 端口连接失败: {e}")
        return False
    
    # 测试MAVLink连接
    try:
        print("📡 尝试MAVLink连接...")
        master = mavutil.mavlink_connection(f'udp:{host}:{port}')
        master.wait_heartbeat(timeout=timeout)
        print("✅ MAVLink心跳接收成功")
        print(f"  系统ID: {master.target_system}")
        print(f"  组件ID: {master.target_component}")
        return True
    except Exception as e:
        print(f"❌ MAVLink连接失败: {e}")
        return False

def check_qgc_requirements():
    """检查QGC运行要求"""
    requirements = {
        'Python': '3.6+',
        'MAVLink': '1.0+',
        'UDP Port': '14550',
        '仿真器': 'jmavsim/gazebo'
    }
    
    print("📋 QGC-PX4连接要求:")
    for req, value in requirements.items():
        print(f"  {req}: {value}")

if __name__ == "__main__":
    check_qgc_requirements()
    print("\n" + "="*50)
    
    if test_px4_connection():
        print("\n🎉 PX4准备就绪,可以启动QGroundControl")
        print("💡 启动QGC后应该自动连接")
    else:
        print("\n❌ 请先启动PX4 SITL仿真")
        print("💡 运行: make px4_sitl_default jmavsim")
 
 

8. 具体操作步骤

Windows环境

  1. 启动PX4:
     
    cd C:\PX4\PX4-Autopilot
    make px4_sitl_default jmavsim
     
     
  2. 启动QGC:
    • 双击 qgroundcontrol.exe
    • 应该自动连接

Linux环境

  1. 启动PX4:
     
    cd ~/PX4/PX4-Autopilot
    make px4_sitl_default jmavsim
     
     
  2. 启动QGC:
     
    ./QGroundControl.AppImage
     
     

Mac环境

  1. 启动PX4:
     
    cd /PX4/PX4-Autopilot
    make px4_sitl_default jmavsim
     
     
  2. 启动QGC:
    • 双击 QGroundControl.dmg中的应用程序

9. 验证连接成功

连接成功后,您应该在QGC中看到:
  1. 橙色连接状态​ → 绿色连接状态
  2. 飞行视图显示无人机姿态
  3. HUD显示高度、速度等信息
  4. 遥控器输入有响应
  5. 传感器数据正常显示
posted on 2025-12-29 16:33  偷懒的阿贤  阅读(0)  评论(0)    收藏  举报