第176篇 控制理论概览——经典控制vs现代控制vs智能控制
上篇讲完传感器选型,传感器与数据处理系列算是告一段落了。从这篇开始,我们进入一个全新的阶段——控制理论。
为什么传感器讲完了紧接着讲控制?因为传感器是"感知",控制是"决策和执行"。你感知到了障碍物的距离、关节的角度、机器人的位姿,然后呢?你得让机器人做出反应——停下来、转弯、调整姿态。这个"做出反应"的过程,就是控制。
讲真,控制理论是机器人软件工程师面试中区分度最高的模块。C++你写得好,说明编程功底扎实。ROS2你熟悉,说明工程能力强。但控制理论你能讲清楚,说明你懂机器人的"灵魂"。面试官对控制理论聊得深的人,通常会高看一眼。
这篇先不急着推公式,我们从宏观上把控制理论的版图看清楚——经典控制、现代控制、智能控制,这三大流派到底在干嘛,有什么区别,面试中怎么聊。
经典控制:一个输入一个输出的艺术
经典控制理论,说白了就是围绕传递函数和频域分析建立起来的一套方法论。它的黄金时代是上世纪四五十年代,那时候航空航天工业刚起步,工程师需要一种实用的方法来设计控制器。
经典控制的核心工具是传递函数。你把系统的微分方程做拉普拉斯变换,得到一个关于s的有理分式,然后分析这个分式的零极点分布,就能判断系统稳不稳定、响应快不快、超调大不大。
经典控制最常用的控制器就是PID——比例、积分、微分三项的组合。你别看它结构简单,工业界90%以上的控制回路用的还是PID。为什么?因为好用、好调、好理解。
面试的时候,如果面试官问"你对经典控制理论了解多少",你至少要能聊这几个点:传递函数的定义和物理意义、零极点对系统响应的影响、稳定性的频域判据(奈奎斯特稳定判据、伯德图)、PID三项各自的物理意义。
经典控制的局限性也很明显——它只能处理单输入单输出(SISO)系统。你的机器人有6个关节、12个电机,每个关节都要控制,这些关节之间还有耦合。经典控制处理这种多输入多输出(MIMO)系统就很吃力了。
现代控制:状态空间里的矩阵运算
现代控制理论从上世纪六十年代开始发展,核心工具是状态空间法。
跟经典控制用传递函数描述系统不同,现代控制用一组一阶微分方程(状态方程)来描述系统。这些方程写成矩阵形式,非常适合计算机求解。
import numpy as np
# 状态空间模型
# dx/dt = A*x + B*u
# y = C*x + D*u
A = np.array([[0, 1], [-2, -3]]) # 系统矩阵
B = np.array([[0], [1]]) # 输入矩阵
C = np.array([[1, 0]]) # 输出矩阵
D = np.array([[0]]) # 直通矩阵
# 状态向量
x = np.array([0, 0])
u = 1.0 # 阶跃输入
# 仿真一步
dt = 0.01
x_dot = A @ x + B * u
x_next = x + x_dot * dt
y = C @ x_next + D * u
print(f"状态: {x_next}, 输出: {y}")
状态空间法最大的优势是能处理多输入多输出系统。你的机器人有n个关节,状态向量就是n维的,状态方程就是n×n的矩阵运算,天然支持MIMO。
现代控制的另一个核心概念是可控性和可观性。可控性说的是"我能不能通过输入把系统从任意状态驱动到任意另一个状态",可观性说的是"我能不能通过输出推断出系统的内部状态"。这两个概念在面试中出现的频率非常高。
之前面试一个做人形机器人的团队,面试官问了一个很经典的问题:"你的系统可观吗?如果不可观会怎样?"这个问题其实是在问你——你的传感器信息够不够用?如果你需要估计某个状态量,但现有的传感器组合无法提供足够的信息来推断它,那系统就是不可观的,你根本估不出来。
现代控制还引出了最优控制的概念——LQR(线性二次调节器)。它通过最小化一个代价函数来求解最优反馈增益。这个在面试中也是加分项,后面会专门讲。
智能控制:当传统方法搞不定的时候
智能控制是个比较宽泛的概念,泛指那些用人工智能技术来实现控制的方法。
最常见的几种:模糊控制、神经网络控制、强化学习控制。
模糊控制在上世纪九十年代很火,家电里用得特别多——洗衣机、空调、微波炉。它的核心思想是把人的经验规则化——"如果温度比较高,那就加大火力"。这种"比较高""加大"这种模糊的说法,用隶属度函数量化,就能让计算机执行。
神经网络控制是近几年的热点。用一个神经网络去拟合控制策略,输入当前状态,输出控制量。训练数据可以来自专家示范(模仿学习),也可以来自试错(强化学习)。
强化学习控制在足式机器人里应用很广。波士顿动力的Atlas、特斯拉的Optimus,背后都有强化学习的影子。你在仿真环境里让机器人反复试错,奖励它走得稳、走得快,惩罚它摔倒,训练出来的策略迁移到真实机器人上。
但讲真,智能控制在工业界的应用还没有经典控制和现代控制那么广泛。原因很简单——可解释性差、安全性难以保证。你用一个神经网络做控制,出了问题你很难分析为什么。在工业机器人、自动驾驶这种安全要求极高的场景,"不可解释"是致命的。
面试中聊到智能控制,我建议你表达一个观点:智能控制是趋势,但目前工业界的主力还是经典控制和现代控制。智能控制更适合用在高层决策(路径规划、行为选择),底层执行还是PID和LQR的天下。
三大流派的关系:不是替代,是互补
很多人有个误解,觉得现代控制比经典控制高级,智能控制又比现代控制高级。其实不是这么回事。
这三种方法是互补的关系,各有适用场景。
经典控制适合单回路、单变量的简单系统。一个电机的转速控制、一个加热器的温度控制,PID就够了,没必要上状态空间。
现代控制适合多变量、有耦合的复杂系统。机械臂的多关节协调控制、无人机的六自由度姿态控制,状态空间法是标配。
智能控制适合模型不确定、环境变化大的场景。足式机器人在复杂地形上行走,地面摩擦力、地形起伏都很难精确建模,强化学习反而能训出不错的效果。
实际工程中,这三种方法经常混合使用。比如一个机器人系统,底层关节用电流环PID(经典控制),中间层用轨迹跟踪LQR(现代控制),顶层用强化学习做行为决策(智能控制)。
面试中怎么聊控制理论
面试官问控制理论,通常有两种问法。
一种是宽泛的:"你对控制理论了解多少?"这时候你就从这三个层面展开——经典控制讲PID和频域分析,现代控制讲状态空间和可控可观性,智能控制讲强化学习在机器人中的应用。重点放在你最熟悉的部分,其他两个点到就行,别贪多。
另一种是具体的:"PID三个参数分别什么意思?"或者"什么是可控性?"这种问题就需要你扎实掌握细节了,后面几篇会逐一展开。
我给一个建议:面试前至少把PID调参的实际经验准备好。面试官最喜欢追问的就是"你调过PID吗?怎么调的?遇到什么问题?"如果你能讲出一个真实的调参故事——比如调机械臂关节PID时遇到超调,怎么一步步解决的——比背十页教科书都管用。
还有个容易踩的坑:别在面试的时候把控制理论和SLAM混为一谈。SLAM是感知层面的,解决"我在哪"的问题。控制是决策执行层面的,解决"我怎么去到那里"的问题。两者有交集(比如视觉伺服),但本质上是两个不同的模块。面试官问你控制相关的问题,别扯到SLAM上去。
补充一个面试准备控制理论的建议。很多候选人只准备了PID调参的经验,但面试官经常会从PID延伸到更深层的问题——比如"PID的积分饱和怎么处理?"(用积分限幅或反饱和)、"微分项对噪声敏感怎么办?"(加低通滤波器)、"你怎么判断PID参数调好了?"(看阶跃响应的超调量和调节时间)。这些问题考的是你对PID的理解深度,不只是会调参。建议你在准备PID调参故事的同时,把这三个追问的答案也准备好。另外,如果你能主动提到"我在项目中用了级联PID——外环位置环、内环速度环",面试官会觉得你对控制架构有整体理解。
下一篇讲反馈控制的基本原理——为什么闭环比开环好,这个看似简单的问题背后其实有很深的道理。
如果这篇文章对你有帮助,欢迎点赞、在看、转发三连。 你的支持是我持续更新的最大动力。
「机器人软件开发面试·从入门到精通」连载系列
上一篇:第175篇 传感器选型实战——面试翻车实录
下一篇预告:第177篇 反馈控制原理——闭环为什么比开环好
有任何问题欢迎评论区留言,我会尽量回复。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)