1. 硬件连接与端口配置:给PX4飞控“接对线”

刚拿到Pixhawk飞控,看着上面一排排的接口,是不是有点懵?GPS、激光雷达、机载电脑、数传……这么多设备,到底该插哪个口?接错了线,轻则设备没反应,重则可能直接导致飞行事故。别担心,这部分我就带你像拼乐高一样,把各个传感器稳稳当当地接到正确的位置上。

首先,你得把Pixhawk飞控想象成一个家庭的信息中心。GPS是告诉你“家门牌号”的邮差,激光雷达是测量“天花板高度”的尺子,机载电脑是负责思考决策的“大脑”,而数传和遥控器则是你和这个“信息中心”对话的“电话”。每个“家庭成员”都有自己固定的“座位”(端口),乱坐可就听不到彼此说话了。

以最常见的Pixhawk 4为例,我们来看看这些关键接口都在哪:

  • GPS/RTK端口:这个最简单。飞控上通常会有一个标着“GPS”的专用接口,一般是6针的DF13接头。你的GPS模块,或者更高精度的RTK模块,直接插这里就行。PX4固件默认就认识这个口,插上之后,在QGroundControl(后面简称QGC)里通常不需要额外设置参数,就能看到卫星颗数和定位状态。这是无人机知道自己在地球上哪个位置的基础。
  • 串口(TELEM1, TELEM2, UART):这是最容易搞混,也最重要的部分。飞控一般至少有3个硬件串口,名字通常是TELEM1、TELEM2和一个额外的UART(在Pixhawk4上叫UART&I2C,在其他飞控上可能叫TELEM4)。它们的作用是:
    • TELEM1:传统上默认给数传电台使用。无论是915MHz、433MHz的电台,还是WiFi数传,优先插这里,波特率默认57600。这样你才能在地面站上远程看到飞机的状态。
    • TELEM2:强烈推荐给机载电脑(如Jetson Nano, Raspberry Pi, NUC)。为什么?因为机载电脑和飞控需要高速、稳定地交换大量数据(比如视觉定位信息、控制指令),TELEM2的默认高波特率(921600)非常适合这个任务。如果你把它和数传共用,低波特率可能会成为数据瓶颈。
    • UART / TELEM4:这是一个灵活的备用口。我经常用它来接激光定高雷达(比如北醒的TF系列)或者第二个GPS。当TELEM1和TELEM2都被占用时,它就是个很好的补充。
  • I2C端口:这是一个可以“一拖多”的通信总线。某些型号的激光雷达(如Lidar Lite V3)和超声波模块(如乐迪) 喜欢用这个接口。它只需要接4根线(VCC, GND, SDA, SCL),就可以挂多个传感器。接线时记住SDA对SDA,SCL对SCL,直连即可。
  • 遥控器接收机端口(RC IN):你的遥控器接收机(如Futaba S.Bus, FrSky)就接在这里。这是手动控制飞机的生命线,务必确保连接牢靠。

一个我踩过的坑:早期我把机载电脑接到了TELEM1,数传接到了TELEM2。结果在Offboard模式下,时不时会出现机载电脑指令延迟,飞机反应“迟钝”。后来才发现,是数传通信占用了串口资源,影响了机载电脑指令的实时性。调换之后,问题立刻消失。所以,“数传用TELEM1,机载电脑用TELEM2”,请把它当作一个黄金法则记下来。

1.1 机载电脑与飞控的两种接线方案

机载电脑和飞控通信,核心就是串口通信。这里给你两种最可靠的接线方案,你可以根据手头的硬件选择。

方案一:使用USB转TTL模块(最省心) 这是我最推荐新手使用的方法。你只需要一个几块钱的USB转TTL模块(常用芯片如CP2102、FT232)。

  1. 将模块的TX引脚接到飞控TELEM2端口的RX线。
  2. 将模块的RX引脚接到飞控TELEM2端口的TX线。
  3. 将模块的GND接到飞控的GND。
  4. 将模块的USB口插入机载电脑。 这样,机载电脑上就会多出一个USB串口设备(例如/dev/ttyUSB0)。你只需要在机载电脑的软件(如MAVROS)中指定这个设备名和波特率(921600)即可。优点是不用给飞控额外供电,即插即用。

方案二:直连飞控的串口引脚(最稳定) 如果你追求极致的稳定性和最低延迟,或者飞控板载的USB口不够用,可以采用这个方案。这需要你的机载电脑拥有一个硬件串口(如树莓派的GPIO串口)。

  1. 找到机载电脑的硬件串口TX引脚(如树莓派GPIO14)。
  2. 将其连接到飞控TELEM2的RX引脚。
  3. 找到机载电脑的硬件串口RX引脚(如树莓派GPIO15)。
  4. 将其连接到飞控TELEM2的TX引脚。
  5. 务必将两者的GND连接在一起。 这种方法完全避免了USB协议转换可能带来的不稳定,是长期稳定飞行的首选。但需要注意,机载电脑的串口可能需要先禁用控制台功能才能用于通信。

无论用哪种方案,接好线后,你都可以在QGC的“MAVLink Inspector”工具里,查看“SERIAL2”的流量速率,来确认通信是否正常建立。

2. 传感器参数配置:让飞控“看得见,摸得着”

硬件连接好比搭好了舞台,参数配置就是给演员们分配角色和台词。这一步是让飞控真正理解并信任各个传感器数据的关键。如果配置错了,飞控可能会“不相信”激光雷达的高度,或者“无视”机载电脑提供的定位,后果就是飞机要么飘忽不定,要么拒绝执行指令。

2.1 激光/超声波定高雷达配置

定高雷达是无人机在室内或无GPS环境下稳定悬停的“眼睛”。它的配置核心就两步:告诉飞控雷达接在哪,以及告诉飞控如何信任和使用雷达数据。

第一步:指定雷达接口 在QGC的参数设置界面,搜索以下关键词,根据你的雷达型号进行设置:

  • Lidar Lite V3 (I2C接口):

    • 找到参数 SENS_EN_LL40LS,将其设置为 I2C。
    • 这意味着你告诉飞控:“嘿,有一个Lidar Lite雷达通过I2C总线连接上了,请去读取它的数据。”
  • 北醒TF系列 (UART接口,如TFmini, TF02):

    • 找到参数 SENS_TFMINI_CFG。
    • 如果你把雷达接在了我们之前说的UART/TELEM4口,就将其设置为 TELEM4。在旧版固件(v1.13.3)中,这个选项可能显示为GPS2。
    • 这里有个细节:北醒雷达出厂可能有不同协议,确保在购买时选择了UART输出协议给PX4使用。
  • 乐迪超声波模块 (I2C接口):

    • 找到参数 SENS_EN_MB12XX,将其设置为 Enabled。

设置完成后,重启飞控。然后立刻进入QGC的“Analyze Tools” -> “MAVLink Inspector”。在消息列表里找到DISTANCE_SENSOR,如果能看到持续变化的current_distance数据(单位通常是厘米),并且signal_quality不为0,恭喜你,硬件连接和基础驱动成功了!

第二步:设置传感器融合(EKF2) 飞控拿到原始距离数据后,并不会直接用它来控制高度。它会用扩展卡尔曼滤波器(EKF2)这个“大脑”,把激光雷达数据、气压计数据、加速度计数据等融合在一起,估算出一个更可靠的高度。

  • 关键参数是 EKF2_HGT_MODE。这个参数决定了高度估计的主要参考源。
  • 对于室内飞行或精准定高,你应该将其设置为 Vision 或 Range sensor。设置为Range sensor就是告诉飞控,主要相信激光/超声波雷达的数据。设置为Vision则是优先使用视觉定位系统提供的高度(如果有的话)。
  • 重要提示:EKF2_HGT_MODE是一个“主用”选择。即使你选了Range sensor,气压计仍然作为备份和辅助。当雷达数据突然跳变或丢失时,EKF2会平滑地过渡到使用气压计数据,避免飞机剧烈掉高或爬升。

我刚开始玩室内飞行时,只接了雷达但没改EKF2_HGT_MODE,飞机高度总是慢慢漂移。后来才明白,飞控默认主要相信气压计,而室内气流不稳定,气压波动导致高度估计漂移。改为Range sensor为主后,飞机立刻就像被一根无形的绳子拴住一样,悬停得稳稳当当。

2.2 视觉定位数据融合配置

视觉定位(如Intel T265追踪相机、ORB-SLAM)能让无人机在无GPS环境下获得厘米级的位置和姿态估计。将机载电脑计算出的视觉里程计数据传给PX4,并让其融合进导航系统,是实现高级自主飞行的核心。

首先,确保数据流送过来了。在机载电脑上,你通常使用MAVROS的vision_pose或odometry话题来发布视觉数据。在QGC的“MAVLink Inspector”里,检查是否有VISION_POSITION_ESTIMATE或ODOMETRY消息在持续更新。这是第一步,证明“路”通了。

然后,配置EKF2接受并信任视觉数据。这需要修改一组参数:

  • EKF2_AID_MASK:这是一个位掩码参数,用于启用各种外部辅助信息。你需要勾选其中的 vision position fusion 和 vision yaw fusion(如果视觉系统能提供可靠的朝向信息)。这相当于打开了视觉数据输入的大门。
  • EKF2_HGT_MODE:如前所述,如果你希望视觉数据也提供高度参考,可以将其设置为 Vision。
  • EKF2_EV_DELAY:这是视觉数据延迟补偿,极其重要!机载电脑处理图像、计算位姿、再通过串口发送到飞控,这一系列操作会产生几十毫秒的延迟。这个参数就是告诉EKF2:“你收到的视觉数据是XX毫秒之前的,请在做融合时把这个时间差考虑进去。”这个值需要实测。一个粗略的方法是,记录发送和接收的时间戳计算差值。更简单的方法是,如果融合后飞机飞行起来有“滞后感”或振荡,可以尝试以5ms为步长微调这个值(典型值在20-100ms之间)。

融合效果验证:在QGC的飞行视图上,当你把飞机拿在手里缓慢移动时,观察地图上的飞机图标是否平滑地跟随你的移动。同时,查看“MAVLink Inspector”中ESTIMATOR_STATUS消息的pos_horiz_accuracy和pos_vert_accuracy字段,数值越小(例如0.1以下),说明融合后的位置估计越置信。一个常见的误区是,以为开了融合就万事大吉。实际上,如果EKF2_EV_DELAY没设对,视觉数据反而会成为干扰源,导致EKF估计误差增大,飞机可能剧烈抖动甚至失控。我建议在第一次整合视觉时,先在安全环境下(如调试架)仔细调整这个延迟参数。

3. Offboard模式下的安全飞行参数配置

Offboard模式是无人机自主飞行的“执行阶段”,机载电脑通过MAVLink指令直接控制飞机。这个模式功能强大,但也风险最高。如果参数配置不当,飞机可能会以不可控的速度飞走。下面这些参数,就是给你的自主飞行套上“缰绳”和“安全绳”。

3.1 飞行速度与加速度限制

在Offboard模式下,你通过机载电脑发送位置、速度或姿态指令。但你必须为飞控设置一个“物理极限”,防止因为机载电脑程序错误(比如算出一个极大的速度值)而导致飞机失控。

这些限制参数主要在**“Offboard”参数组和“MPC”参数组**里:

  • 水平速度限制:

    • MPC_XY_VEL_MAX:这是所有飞行模式下水平方向的最大速度。务必设置。即使你的Offboard指令要求飞10m/s,飞控也会把它限制在这个值以内。根据你的飞机尺寸和动力,室内可以设为1.5-2.0 m/s,室外开阔地可以设为3-5 m/s。
    • MPC_XY_CRUISE:巡航速度,影响自动模式下的效率,Offboard模式下作用不大,但可以设为MPC_XY_VEL_MAX的70%左右。
  • 垂直速度限制:

    • MPC_Z_VEL_MAX_UP:最大上升速度。防止上升过快,动力饱和。通常2-3 m/s足够。
    • MPC_Z_VEL_MAX_DN:最大下降速度。这个尤其重要! 下降太快容易进入“涡环状态”,导致飞机失速下坠。安全起见,我强烈建议设为不超过1.5 m/s。
  • 加速度限制:

    • MPC_ACC_HOR_MAX:水平最大加速度。限制加减速的剧烈程度,让飞行更平滑,也能减少跟踪误差。一般设为MPC_XY_VEL_MAX的1.5到2倍。
    • MPC_ACC_UP_MAX 和 MPC_ACC_DOWN_MAX:垂直方向最大加速度。通常可以设为5-7 m/s²。
  • Offboard特定限制:

    • COM_OF_LOSS_T:Offboard指令超时时间。如果飞控在这个时间内(单位:秒)没有收到新的Offboard指令,它会触发失控保护。默认是0.5秒,对于大多数应用足够了。如果你的机载电脑控制循环较慢,可以适当延长,但不要超过1-2秒。

我自己的血泪教训:有一次测试Offboard定点,机载电脑的程序里有个bug,在某个条件下会发送一个巨大的速度指令。幸好我提前设好了MPC_XY_VEL_MAX=3,飞机只是猛地一窜然后就被飞控限制住了,没有造成事故。从那以后,我在任何Offboard测试前,第一件事就是检查这几个速度限制参数。

3.2 遥控器失效保护与模式切换安全

“Offboard模式下必须开着遥控器吗?”,“飞机失控时怎么快速夺回控制权?”,这是关乎人身和设备安全的核心问题。PX4提供了一套非常灵活的遥控器失效保护机制。

首先,关于遥控器开关: 默认情况下,从其他模式(如Position模式)切入Offboard模式,有一个前提条件:遥控器开关必须在“非失控”位置(即信号有效)。这是为了防止在遥控器信号丢失时意外进入Offboard。如果你想取消这个限制(例如,用于完全自主的无人值守任务),可以修改参数:

  • COM_RC_OVERRIDE:将其设置为 Disabled。 但是! 我极度不推荐在测试和开发阶段禁用这个功能。遥控器是你最后的安全保障。

更聪明的做法:配置智能的失控保护与自动切换。这才是高级玩法。我们希望的是:平时用Offboard自主飞行,一旦我动一下遥控器摇杆,飞机能立刻切回手动模式(如Stabilized或Position),让我接管。

  • COM_RC_LOSS_T:遥控器信号丢失判定时间。默认0.5秒,一般不用改。
  • 实现“摇杆一动,立即接管”:这需要配置遥控器输入动作触发模式切换。在QGC的“飞行模式”设置界面,你可以为你的模式切换通道(通常是一个两段或三段开关)分配不同的模式。但这里有个技巧:你还可以为遥控器摇杆的移动分配一个模式切换动作。例如,你可以设置“如果油门摇杆偏离中位超过10%,则自动从Offboard切换回Position模式”。这需要通过设置RC_MAP_FLTMODE通道的阈值和模式映射来实现更复杂的逻辑,或者直接在机载电脑的MAVROS代码中监听遥控器通道值,一旦变化就发送模式切换命令。虽然这需要一些额外的配置或编程,但它提供了无缝的人机协作体验。

最后一道防线:紧急锁定(Kill Switch)。务必在遥控器上设置一个独立的紧急锁定开关,并在地面站中正确配置。在QGC的“安全”设置页,将遥控器的一个通道(通常是两位开关)映射到“紧急锁定”功能。一旦触发,所有电机将立即停止。这是应对一切无法挽回的异常情况的终极手段。每次起飞前,养成习惯测试一下这个开关是否有效。

4. PID调参与自动调参:让飞行控制“稳如老狗”

PID控制器是飞控的“肌肉神经”,它负责将期望的姿态/位置转化为电机的转速。出厂默认的PID参数适用于大多数机型,但如果你换了不同尺寸的桨叶、改变了机架重量分布、或者挂载了晃动的负载,就可能需要调整PID,否则飞机可能会抖动(过冲)或者反应迟钝(欠调)。

4.1 理解PID参数:P、I、D各管什么?

你可以把飞机想象成一辆需要稳定在车道中央行驶的汽车。

  • 比例(P)项:立即反应。比如汽车偏右了,P项会立即产生一个向左打的力,偏差越大,打的力越大。P值太小,飞机纠正偏差慢,感觉“软绵绵”;P值太大,飞机会在目标位置来回振荡,甚至发散。
  • 积分(I)项:消除稳态误差。如果路面有持续的左风(持续干扰),光靠P项,汽车可能会一直保持一个微小的向右的偏差才能对抗风。I项会累积这个持续的偏差,并逐渐增加一个向左的力,最终把汽车完全拉回车道中央。I值太小,抗干扰能力弱;I值太大,容易产生低频振荡。
  • 微分(D)项:抑制变化。当汽车快速接近车道中心时,D项会感知到这个快速靠近的速度,并施加一个反向的“刹车”力,防止它冲过头。D项能有效抑制P项引起的振荡,让控制更平滑。但D值对传感器噪声非常敏感,太高会放大噪声,导致电机高频啸叫。

在PX4中,主要的PID环有三层:角度环(Rate Controller)、角速度环(Attitude Controller)和位置环(Position Controller)。我们通常调整的是内环——角度环和角速度环的参数,它们位于“MC”参数组中。

  • MC_ROLLRATE_P, MC_ROLLRATE_I, MC_ROLLRATE_D:横滚角速度环PID。
  • MC_PITCHRATE_P, MC_PITCHRATE_I, MC_PITCHRATE_D:俯仰角速度环PID。
  • MC_YAWRATE_P, MC_YAWRATE_I, MC_YAWRATE_D:偏航角速度环PID。
  • MC_ROLL_P, MC_PITCH_P:横滚/俯仰角度环P(角度环通常只有P值,I和D很少需要动)。

调整顺序:先调角速度环(Rate),再调角度环(Angle)。因为内环(角速度)是外环(角度)的基础。

4.2 手动调参与自动调参(Auto-Tune)实战

手动调参是一个需要耐心和观察的过程。安全起见,请将飞机放在调试架上或系上安全绳。

  1. 基础测试:在手动模式(Manual/Stabilized)下轻推摇杆然后回中,观察飞机响应。
  2. 调高P值:如果飞机反应迟钝,缓慢增加MC_ROLLRATE_P(例如每次增加0.05)。直到轻推摇杆时,飞机能快速响应,但松开后会有1-2次轻微的来回摆动。
  3. 增加D值:出现摆动后,开始缓慢增加MC_ROLLRATE_D(例如每次增加0.001)。目标是消除摆动,让飞机在摇杆回中后能迅速且平稳地停住,没有振荡。注意:D值增加时,仔细听电机声音,如果出现高频“滋滋”声,说明D值太高引入了噪声,需要降低。
  4. 调整I值:在调试架上,给飞机一个持续的微小干扰(比如用手指轻轻持续推一个方向)。观察飞机是否能抵抗这个力,保持姿态。如果不能,缓慢增加MC_ROLLRATE_I。
  5. 重复:对俯仰轴(Pitch)重复步骤2-4。偏航轴(Yaw)通常比较稳定,除非有明显问题,否则不建议新手调整。

自动调参(Auto-Tune):这是PX4提供的一个强大工具,可以自动为你整定角速度环的PID参数。

  1. 前提条件:确保GPS信号良好,或在光流/视觉定位稳定的室内。电量充足,飞行环境开阔无风。
  2. 参数准备:将 MC_AT_START 设置为 1,启用自动调参。你可以设置 MC_AT_APPLY 为 1,这样调参结果会自动应用并保存。
  3. 执行:切换到位置保持模式(Position),解锁起飞,让飞机稳定悬停。然后,通过地面站或遥控器上的辅助开关触发自动调参。飞机会开始进行一系列剧烈的横滚、俯仰摆动(这是它在“激励”系统,收集数据),整个过程大约持续几十秒到一分钟。
  4. 结果:完成后,飞控会提示“Auto-tuning completed”。降落、上锁。新的PID参数会自动生效或需要你确认保存。

我的经验:自动调参在飞机基本框架正常时效果很好,能快速得到一个可用的参数集。但它毕竟是一个自动化过程,对于特殊机型或异常负载,可能不是最优。我通常的做法是:先用自动调参得到一个基础参数,然后在这个基础上,根据实际飞行的手感和需求,进行细微的手动优化。记住,调参的黄金法则是:每次只改变一个参数,小步慢跑,仔细观察,安全第一。调参前后的飞行手感差异是巨大的,一架调好的飞机,飞起来指哪打哪,丝般顺滑,那种成就感是实实在在的。

更多推荐