FEATURED · 精选文章

大疆控制算法笔试复习指南:从PID到MPC核心考点解析

发布时间 / 2026/8/31 3:31:58
来源 / 创域科博编辑部
栏目 / 资讯中心
大疆控制算法笔试复习指南:从PID到MPC核心考点解析 很多同学在准备大疆控制算法相关的笔试和面试时第一反应是“刷题”打开 LeetCode 开始练手写二叉树、动态规划。但在大疆这类以机器人、无人机、自动驾驶为核心的岗位里控制算法工程师的笔试逻辑和纯软件开发岗位有明显差异。它更看重你对控制系统本质的理解、数学推导能力、工程实现素养以及“这套算法放在真实无人机上会不会炸机”的判断力。本文会围绕大疆控制算法笔试的常见考查方向展开从控制理论基础、状态空间方法、PID 与 LQR、MPC 与路径跟踪到手写推导和编程实现的心得整理成一套可复用的复习体系。无论你是准备秋招、社招还是单纯想查漏补缺这篇文章都值得你收藏后慢慢看。1. 先搞清楚大疆控制算法笔试到底考什么1.1 岗位方向决定出题范围大疆的控制算法岗位并不是“一个岗位”它通常分散在多个业务线和团队中飞控系统团队重点关注姿态控制、高度控制、抗风扰动、传感器融合后处理。云台与影像稳定团队重点关注云台增稳、电机控制、摩擦补偿、扰动观测。车载与机器人团队重点关注路径跟踪、轨迹规划、横向/纵向控制。仿真与测试团队重点关注控制算法建模、HIL 仿真、故障注入。不同方向虽然底层数学是一致的但笔试侧重点会有明显差异。比如飞控方向更容易出现“四旋翼动力学模型简化”“PID 控制器设计”“姿态表示与旋转矩阵”这类题目车载方向则更容易出现“Stanley 控制器”“纯追踪模型”“LQR 横向控制”这类题目。所以复习之前先明确你投递的具体岗位不要一套资料从头刷到尾。1.2 笔试常见题型分布根据我自己收集的资料和历届同学反馈大疆控制算法笔试的题型通常分为四类题型常见形式占比感受基础概念题选择、填空、判断20% 左右数学推导题传递函数化简、状态空间推导、稳定性证明30% 左右算法设计题给控制对象设计控制器、调参、分析指标30% 左右编程实现题手写 PID、离散化、简单仿真20% 左右很多同学容易在“数学推导题”上翻车。不是不会算而是写得不够规范或者没有把物理意义讲清楚。大疆的阅卷风格比较看重你“会不会用工程语言表达控制思想”这一点后面会专门展开。1.3 从热词里嗅到的高频考点从最近控制算法相关讨论中可以看到几个高频词PID 控制算法、预测控制算法、Stanley 控制算法、LQR 控制算法、ADRC 控制算法、模糊 PID、神经网络控制。这些词基本覆盖了大疆笔试的算法层级经典控制PID、根轨迹、频域法。现代控制状态空间、LQR、观测器。智能控制模糊 PID、神经网络控制在笔试中较少要求手推但会以判断题或概念题形式出现。路径跟踪Stanley、Pure Pursuit、MPC。本文不追求“全而泛”而是按优先级帮你把最核心的算法逐一拆解。2. 控制理论基石笔试前必须拿下的知识点2.1 传递函数与状态空间的等价转换无论是笔试还是面试传递函数和状态空间之间的转换都是基础中的基础。常见考法有两种给你一个传递函数写出能控标准型或能观标准型。给你状态空间方程求传递函数矩阵。先来看一个最简单的例子。假设系统的微分方程为y 3y 2y u对其进行拉普拉斯变换可以得到传递函数G(s) Y(s) / U(s) 1 / (s^2 3s 2)若将其写成能控标准型状态空间可以选择状态变量x1 y x2 y于是x1 x2 x2 -2x1 - 3x2 u y x1写成矩阵形式x [ 0 1 ] x [ 0 ] u [ -2 -3 ] [ 1 ] y [ 1 0 ] x这里有一个笔试高频细节能控标准型和能观标准型的矩阵排列顺序经常被记混。建议你每次做题都从“定义”出发而不是死记矩阵形态。能控标准型关注的是输入 u 如何影响状态 x所以输入矩阵 B 往往是[0, 0, ..., 1]^T能观标准型关注的是状态如何映射到输出所以输出矩阵 C 往往是[1, 0, ..., 0]。2.2 稳定性判据不只是“闭环极点负实部”稳定性问题几乎是每次笔试的必考点但它的考法非常灵活。常见的考查角度包括劳斯判据给定特征方程判断系统稳定时参数范围。奈奎斯特判据给定开环频率特性判断闭环稳定性。李雅普诺夫方法针对非线性系统或状态空间系统判断稳定性。来看一道经典题型已知闭环特征方程为 s^3 3s^2 2s K 0 求使系统稳定的 K 的取值范围。使用劳斯判据列劳斯表s^3 | 1 2 s^2 | 3 K s^1 | (6-K)/3 s^0 | K系统稳定的条件是第一列元素同号且均大于 0所以6 - K 0 K 0最终得到0 K 6。这道题虽然简单但它代表了大疆笔试中一类典型思路给出控制对象和控制器结构要求你反推控制器参数的稳定范围。这比单纯背劳斯判据条件要更综合。2.3 内模原理与系统型别在涉及无人机定高、云台跟踪这类题目时内模原理是一个容易忽略的考点。它说的是如果参考输入是阶跃信号控制器中需要包含积分环节才能实现无静差跟踪如果参考输入是斜坡信号控制器中需要包含双重积分器。这个原理直接解释了一个工程现象为什么无人机高度控制往往采用 PID 而非纯 PD因为纯 PD 控制对于阶跃输入存在静差只有加入积分项或者采用包含积分作用的状态反馈才能消除稳态误差。3. PID 控制笔试出镜率最高的算法3.1 连续 PID 与离散 PIDPID 在大疆笔试中的地位非常高因为它在飞控、云台、电机控制中无处不在。基础题目通常要求你写出连续 PID 公式u(t) Kp * e(t) Ki * ∫e(τ)dτ Kd * de(t)/dt在数字控制器中需要离散化。常见的位置式 PID 公式为u(k) Kp * e(k) Ki * T * Σe(i) Kd * (e(k) - e(k-1)) / T其中 T 是控制周期。笔试中经常会让你写出“增量式 PID”公式。增量式 PID 输出的是控制量的增量Δu(k) u(k) - u(k-1) Kp * (e(k) - e(k-1)) Ki * T * e(k) Kd * (e(k) - 2e(k-1) e(k-2)) / T从工程角度看增量式 PID 的好处是执行机构本身具有记忆功能即使控制器输出异常也不会导致控制量发生剧烈跳变。这在云台电机和舵机控制中非常重要。3.2 位置式 PID 编程示例大疆笔试的编程题不一定会让你写完整工程但很可能会让你用 C 或 Python 实现一个离散 PID。下面给出一份简洁的位置式 PID 实现你可以作为模板记忆# 文件路径pid_position.py class PositionPID: def __init__(self, kp, ki, kd, dt, max_output, max_integral): self.kp kp self.ki ki self.kd kd self.dt dt self.max_output max_output self.max_integral max_integral self.integral 0.0 self.prev_error 0.0 def reset(self): self.integral 0.0 self.prev_error 0.0 def calculate(self, setpoint, measurement): error setpoint - measurement # 积分分离误差太大时不积分防止积分饱和 if abs(error) 10.0: self.integral error * self.dt self.integral max(min(self.integral, self.max_integral), -self.max_integral) derivative (error - self.prev_error) / self.dt output self.kp * error self.ki * self.integral self.kd * derivative output max(min(output, self.max_output), -self.max_output) self.prev_error error return output这段代码里有两个笔试和面试都爱追问的工程点积分分离。当误差较大时先让比例项快速拉近目标减小超调和积分饱和风险。输出限幅与积分限幅。真实执行机构有输出范围积分项必须单独限幅否则会“积分饱和”导致系统响应迟钝。3.3 PID 参数整定笔试中的分析题大疆笔试很少只让你背公式更多是给出一组响应曲线让你判断 Kp、Ki、Kd 应该如何调整。例如如果系统响应太慢应该增大 Kp。如果超调量过大应该增大 Kd 或适当减小 Kp。如果稳态误差不为零应该增大 Ki。如果系统出现等幅振荡说明 Kp 已经接近临界增益应该回退。工程上常用的整定方法包括 Ziegler-Nichols 法、临界比例度法和工程凑试法。笔试中如果时间紧张优先答出“先比例、后积分、再微分”的工程步骤再结合临界增益的公式补充说明得分会比较完整。4. LQR现代控制理论中的笔试高频题4.1 LQR 的基本原理LQRLinear Quadratic Regulator线性二次型调节器在大疆的车载、机器人以及部分飞控岗位笔试中非常常见。它的核心思想是在状态空间模型下设计状态反馈控制律使得一个二次型性能指标最小。性能指标通常写为J ∫(x^T Q x u^T R u) dt其中 x 为状态向量u 为控制输入Q 为半正定矩阵惩罚状态偏差R 为正定矩阵惩罚控制能量。控制器形式为u -K x其中 K 由代数黎卡提方程求解A^T P P A - P B R^{-1} B^T P Q 0 K R^{-1} B^T P笔试中常见的考点是说明 Q 和 R 的物理含义及选取原则。当 Q 增大时系统响应更快但控制能量更大。当 R 增大时控制动作更平缓系统响应变慢。给定一个简单二阶系统能否写出求解 K 的步骤。4.2 离散 LQR 与工程落点大疆笔试中有时不会直接给你连续系统而是给出离散状态空间模型x(k1) A x(k) B u(k)此时需要采用离散 LQR。离散代数黎卡提方程写起来比连续形式复杂但笔试通常只要求你写出迭代求解步骤或者用 MATLAB 中的dlqr命令求解。% 离散 LQR 增益求解示例 % 状态矩阵 A输入矩阵 B % 权重矩阵 Q, R A [1.0 0.1; 0 1.0]; B [0; 0.1]; Q [1 0; 0 1]; R 1; [K, P, e] dlqr(A, B, Q, R);这段 MATLAB 代码中K 是状态反馈增益P 是黎卡提方程的解e 是闭环极点。笔试如果允许使用工具写出这段代码并解释输出含义就够了。4.3 LQR 笔试答题模板如果笔试遇到“请设计一个 LQR 控制器”你可以按下面的步骤作答写出系统状态空间方程。确定状态变量和控制输入。根据系统响应要求确定 Q 和 R。代入黎卡提方程求解 P。计算 K R^{-1} B^T P。验证闭环系统稳定性即 A - BK 的特征值是否全部在左半平面连续或单位圆内离散。注意第 6 步经常被忽略但它是判断你是否有工程思维的关键。一个不考虑闭环稳定验证的设计在阅卷人眼里只是“套公式”不是真正的控制方案。5. MPC 与路径跟踪无人机和车载方向的重点5.1 从热词看Stanley 和 MPC 为什么会火最近关于“预测控制算法”“Stanley 控制算法”的讨论热度很高这和大疆在车载、机器人、无人机路径跟踪场景的大量应用有很大关系。MPCModel Predictive Control模型预测控制的核心思想可以概括为三步基于当前状态预测未来一段时域内的系统输出。在预测时域内求解一个带约束的优化问题得到最优控制序列。只执行控制序列中的第一个控制量下一时刻重新预测、重新优化。这个过程叫“滚动优化”或“后退时域控制”。MPC 最大的优势是能够显式处理约束比如无人机电机转速限制、舵机角度限制、加速度限制等这些约束在 PID 和 LQR 中很难统一处理。5.2 笔试中的 MPC 考查方式大疆笔试中直接手推 MPC 的概率不高但很可能出现这些题目MPC 与 LQR 的区别是什么MPC 为什么需要“预测模型”模型不准怎么办写出 MPC 优化问题的数学表达。为什么 MPC 要滚动优化基础回答可以参考下面的公式。假设预测模型为线性时不变系统x(ki1|k) A x(ki|k) B u(ki|k)目标函数为min Σ (x^T Q x u^T R u) 终点惩罚项 s.t. x_min ≤ x ≤ x_max u_min ≤ u ≤ u_max面试追问“模型不准怎么办”时可以从两个角度回答一是加入反馈校正用当前实测输出修正预测误差二是采用鲁棒 MPC 或 tube MPC 保证约束不被破坏。5.3 Stanley 与 Pure Pursuit 横向控制“Stanley 控制算法”也是热词它对标的是无人车或机器人路径跟踪中的横向控制。Stanley 控制器的核心思想是以前轴中心为参考点根据车辆航向误差和横向位置误差计算前轮转角。δ ψ_e arctan(k * e / v)其中ψ_e 为航向角误差即车辆航向与最近路径点切线方向之间的夹角。e 为横向位置误差即前轴中心到最近路径点的垂直距离。v 为纵向速度。k 为增益系数。这个公式非常好记笔试中常让你分析当横向误差 e 很大时arctan 项趋近于 ±π/2前轮转角会接近极限保证快速回归路径。当 v 增大时arctan 项对 e 的敏感性降低避免高速时转向过于激进。6. 笔试中的手写推导如何拿稳过程分6.1 规范书写比最终结果更重要大疆笔试阅卷通常按步骤给分。即使最终数值算错了只要关键方程、判断条件、推导方向正确仍然能拿到大部分分数。反过来只写一个答案、没有过程基本拿不到分。建议每一道推导题都按以下结构书写写清已知条件和待求解目标。写出核心方程或定义。逐步化简不要跳步。关键步骤用文字标注依据例如“根据劳斯判据”“根据李雅普诺夫第二法”。得到结论后用一两句话说明物理意义。6.2 一个完整的推导示例来看一道常见的笔试基础题已知系统状态空间方程 x A x B u 其中 A [0 1; -2 -3]B [0; 1] 设计状态反馈 u -K x使闭环极点为 -1 ± j解题步骤如下设K [k1, k2]则A - BK [ 0 1 ] [ -2-k1 -3-k2 ]闭环特征多项式为|sI - (A-BK)| s^2 (3k2)s (2k1)期望极点 -1 j 和 -1 - j 对应的期望特征多项式为(s 1 - j)(s 1 j) s^2 2s 2对比系数3 k2 2 k2 -1 2 k1 2 k1 0所以K [0, -1]。这个例子虽然简单但它展示了笔试答题的标准姿势先设控制器结构再写闭环系统最后对比特征多项式系数。每一步都有明确依据。6.3 不要把“极点配置”和“LQR 优化”混为一谈不少同学在答题时会把极点配置与 LQR 混淆。极点配置是直接指定闭环极点位置而 LQR 是通过优化性能指标间接确定极点位置。前者需要给出期望极点并反推 K后者需要给定 Q 和 R 并求解黎卡提方程。笔试中如果题目说“设计状态反馈使闭环极点位于……”就用极点配置如果说“设计 LQR 控制器最小化性能指标”就用 LQR。答题时要先判断题型再选择工具。7. 编程实现题从会算到会写7.1 手写 PID 的现场心态大疆笔试中的编程题通常不会太难但也绝不仅是“默写公式”。常见考法包括实现一个 PID 类要求支持输出限幅、积分限幅。给定一组传感器数据和目标值用你实现的 PID 输出控制序列。扩展实现抗积分饱和、微分先行或低通滤波。一个容易被忽略的点是“微分项的噪声问题”。真实传感器数据存在噪声直接对误差求微分会导致控制量毛糙。工程上常用一阶低通滤波代替纯微分D(s) ≈ Kd * s / (Tf * s 1)笔试中如果时间允许可以在代码里加入这个细节并说明这是“为了抑制测量噪声”。7.2 Python 仿真一个简单的 LQR 闭环下面是一段用 Python 实现离散 LQR 闭环仿真的示例适合作为笔试后的验证思路# 文件路径lqr_simulation.py import numpy as np import matplotlib.pyplot as plt # 离散系统模型 A np.array([[1.0, 0.1], [0.0, 1.0]]) B np.array([[0.0], [0.1]]) Q np.array([[1.0, 0.0], [0.0, 1.0]]) R np.array([[1.0]]) # 手动求解离散代数黎卡提方程简单迭代法 def solve_dare(A, B, Q, R, max_iter1000, tol1e-6): P np.copy(Q) for _ in range(max_iter): P_next A.T P A - A.T P B np.linalg.inv(R B.T P B) B.T P A Q if np.max(np.abs(P_next - P)) tol: return P_next P P_next return P P solve_dare(A, B, Q, R) K np.linalg.inv(R B.T P B) B.T P A x np.array([[1.0], [0.0]]) x_history [] for _ in range(50): u -K x x A x B u x_history.append(x.flatten()) x_history np.array(x_history) plt.plot(x_history[:, 0], labelposition) plt.plot(x_history[:, 1], labelvelocity) plt.legend() plt.grid(True) plt.show()这段代码演示了离散黎卡提方程的迭代求解过程。虽然工程中可以直接调用 MATLAB 或 Python 控制库但笔试现场如果要求写出思路手写迭代比只写一行命令更有说服力。7.3 编程题的边界条件大疆笔试编程题经常会在边界条件下埋坑。比如控制周期 dt 是否为 0。状态维度是否与矩阵维度匹配。积分器是否初始化。输出限幅是不是对称的。传感器测量出现 NaN 或异常值怎么处理。写代码时至少要在核心函数入口处检查输入维度避免矩阵运算报错。笔试现场如果能提前考虑到这些会给阅卷人留下较好的工程素养印象。8. 常见问题与复习避坑清单8.1 复习中的常见误区误区正确思路只刷代码题忽视数学推导控制算法笔试更看重推导与物理直觉死记 LQR 公式不理解 Q/R 含义务必掌握 Q/R 对系统响应的影响规律把离散和连续混为一谈先判断系统是连续还是离散再选公式不关注执行机构约束PID、LQR 都要考虑输出限幅、积分饱和不知道 PID 在无人机中具体控制什么至少说清内环角速度、外环姿态、位置环的级联关系8.2 常见笔试追问问为什么无人机高度控制用串级 PID而不是单级 PID答单级 PID 直接根据高度误差生成油门动态响应慢且抗扰能力差。串级 PID 将控制拆成外环位置/高度环和内环垂直速度环内环带宽高能够更快抑制风等扰动外环负责稳定跟踪高度指令。两级环路配合控制品质更高。问LQR 和 PID 都能用为什么选 LQR答LQR 可以统一处理多输入多输出系统通过权重矩阵 Q/R 明确表达控制性能与控制能量之间的权衡。当系统状态强耦合时LQR 能自动协调各状态而 PID 通常需要逐通道调节整定难度更大。问MPC 的最大限制是什么答在线优化计算量大对实时性要求高的场景需要较高算力支持。大疆无人机飞控若是机载 MCU跑完整 MPC 可能吃力通常需要简化模型或借助机载高性能计算平台。问ADRC 在大疆笔试中会出现吗答大概率以概念题出现。ADRC 的核心思想是把系统内部不确定性和外部扰动统一视为“总扰动”用扩张状态观测器ESO估计并补偿然后在补偿后的积分串联型系统上设计控制器。掌握它的基本框架即可不需要太深推导。8.3 避坑清单不要忽略单位。角度用弧度还是角度长度用米还是厘米在控制算法中都会导致系数数量级偏差。不要忽略控制周期。离散化公式里的 T 和实际代码中的循环周期必须一致。不要忽略仿真步长。仿真步长与控制周期不是一回事混用会导致预测失真。不要只记公式不记条件。比如劳斯判据要求首列元素不为零李雅普诺夫函数要求正定、导数为负定这些前置条件往往就是笔试扣分点。9. 大疆控制算法笔试的准备路线9.1 基础阶段两周理论补全第一周重点放在经典控制理论把拉普拉斯变换、传递函数、稳定性判据、稳态误差、根轨迹、频域响应过一遍。第二周重点放在现代控制理论把状态空间、能控能观、极点配置、LQR、观测器设计过一遍。这一阶段不追求做难题而是把每个概念对应的标准题型吃透。能够做到“看到一个模型马上知道该用什么方法分析”就算合格。9.2 进阶阶段结合无人机/机器人模型刷题有了基础后要把通用控制算法往大疆的实际场景上靠。比如四旋翼垂直运动简化模型如何推导。云台俯仰轴的电机模型如何简化成二阶系统。小车路径跟踪中如何选择横向误差和航向误差。无人机抗风扰测试中如何设计扰动观测器。这一阶段要训练“把笔试题目翻译成控制对象模型”的能力。很多题目看起来复杂实际化简后就是一个二阶积分器或一阶惯性环节加延迟。9.3 冲刺阶段模拟笔试与错题整理冲刺阶段建议自己计时做模拟题重点检查推导过程是否完整。是否写了关键物理意义。编程题是否考虑了边界条件。是否有因为粗心导致的符号错误。错题整理时不要只抄正确答案要在旁边写下“我当时为什么没想到这一步”。比如题目给你一个根轨迹图让你判断稳定性区间你需要同步回顾根轨迹的起点、终点、渐近线与实轴交点等概念。控制算法笔试的难点往往不是单点知识而是多个模块的综合调用。10. 写给正在准备大疆控制算法的你大疆控制算法笔试和互联网后端笔试的复习节奏差异很大。后端笔试刷题以代码量取胜而控制算法笔试的关键在于“你能不能把一个控制问题描述清楚、推导完整、实现可跑”。建议你把复习重心放在以下几点吃透 PID 的离散化与工程实现细节。吃透 LQR 从建模到求解的完整流程。理解 MPC 的问题形式与滚动优化思想。熟练进行传递函数与状态空间的互转。能够手写一段控制器代码并解释限幅和抗饱和的作用。祝你在笔试中稳定发挥拿到心仪的 offer。如果本文对你有帮助欢迎收藏备用也欢迎在评论区交流你遇到的笔试真题和复习疑问。
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻