ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

机器人控制入门:从PID闭环到ROS实战的完整学习路线

机器人控制入门:从PID闭环到ROS实战的完整学习路线 机器人控制这门技术说难确实难里面牵扯到机械结构、电子电路、嵌入式编程、传感器信号处理、自动控制原理甚至还包括一部分计算机视觉的内容。但说简单也简单只要你抓住一条主线——让机器人感知环境、做出决策、驱动执行机构去完成任务剩下的事情都是围绕这条主线不断完善的细节。这篇文章我不会跟你讲那些劝退级的数学推导也不会一上来就丢给你一堆莫名其妙的专业术语而是从一个实际动手者的角度帮你把“机器人控制”这潭水摸清楚告诉你先学什么、后学什么、哪些环节最容易卡住、遇到问题又该怎么排查。1. 先建立整体认知机器人控制究竟在控制什么1.1 机器人控制的核心闭环框架很多人一开始接触机器人控制容易陷入“我要学哪个算法”“我要用哪块开发板”这种局部细节里结果折腾半天发现连一个让车轮平稳转起来的小问题都搞不定。我觉得最有用的方式是从控制系统的全局视角切入。所有机器人不管是大臂六轴机械臂还是小小的两轮差速小车本质上都在跑同一个闭环逻辑传感器采集外界信息主控器根据这些信息做运算然后输出指令给执行器执行器让机械结构动起来运动的结果又会被传感器重新采集回来形成一个完整的反馈回路。这个闭环框架是理解机器人控制的基石。举个例子你想让一台小车直线行驶四件事必须同时成立电机能正常转动执行器、电机转速能被测出来传感器、控制器能根据目标速度和实际速度计算出修正量决策运算、修正后的信号能正确输出给电机驱动板信号链路。这四件事里面任意一件出问题小车都会跑偏或者根本不动。很多初学者上来就研究特别高级的控制算法结果连“为什么电机拧一下方向就反了”“为什么速度加不上来”这种基础问题都没排查清楚这就是没有建立整体闭环认知的典型表现。1.2 运动控制、决策规划与感知三者之间的关系在机器人的圈子里业内人士经常把控制系统拆成三个相对独立又互相协作的部分感知层、决策规划层、运动控制层。三者对应一个类比——你开车出门眼睛看路是感知脑子决定走哪条路是决策规划手脚操练方向盘、油门、刹车就是运动控制。把这三层关系理清之后你会发现学习路径瞬间清晰了。做机器人控制的人核心阵地通常落在运动控制层也就是你接收感知和规划的结果把它转化成一串具体的关节角度、轮子速度或者推力指令。但这不代表感知和规划可以完全不懂因为运动控制的效果上限是被感知精度和规划质量限制的。比如你控制机械臂去抓一个杯子视觉模块给出的目标位置偏差了5毫米你再怎么调PID抓手最后都会偏5毫米。这就是为什么我一直强调入门阶段必须建立系统性的认知框架而不是只盯着某一个算法看。2. 从零开始的控制算法之路先从PID说起2.1 为什么PID是控制算法入门的必经之路在控制领域PID控制器大概是所有算法里应用最广、门槛最低、又最容易被低估的一个。说它应用最广是因为实际工业现场超过九成的控制回路都在用PID说它门槛低是因为你不需要理解很高深的数学理论就能上手调试说它容易被低估是因为很多人觉得PID“太基础了”结果真到现场调参的时候被系统抖动、稳态误差、积分饱和这些问题折腾得欲哭无泪。PID的全称是比例-积分-微分控制。它的思路其实非常朴素你希望系统的某个输出量稳定在一个目标值上于是你不断测量当前输出计算误差然后根据误差的大小比例、误差随时间的积累积分、误差变化的趋势微分综合出一个控制量送给执行器。拿给小车上恒速任务举例目标转速是每分钟200转当前测量到只有180转误差是正的20转。比例项告诉你——误差大就多给点力误差小就少给点力积分项告诉你——如果持续很久都差那么一点追不上那就积累一点额外的力去消除这个死差值微分项告诉你——如果误差正在快速缩小那就要适当收一收油门避免冲过头。2.2 手把手理解P、I、D三个参数的意义参数的理解不能停留在公式层面得落到实际感受上。先说比例系数Kp。它的作用最直观相当于一个放大器。你把Kp调大系统对误差的反应会更激烈但Kp过大的话系统容易在目标值附近来回振荡就像你在高速上猛打方向盘一样。调Kp的时候有个经典现象从一个很小的值开始慢慢往上加观察系统的响应曲线你会发现输出逐渐从稳定变到振荡那个刚出现持续振荡的临界点附近往往就是Kp的上限边界。积分系数Ki解决的是稳态误差问题。纯比例控制有个毛病当系统接近目标值时误差变小比例项输出也变小可能会出现“有心无力”的状况系统永远停在离目标值差一点点的地方。积分作用会把这个误差慢慢累加起来哪怕每次只增加一点点时间长了也能积攒出足够的控制量推着系统走完那最后一公里。但积分也有副作用最典型的就是积分饱和——当系统被外力卡住一段时间积分项积累到很大的值外力一撤除系统会因为积分项的“惯性”冲出去很远跑出一个非常大的超调。微分系数Kd预测的是误差变化趋势。如果误差在快速缩小微分项会输出反向控制力让你提前减速相当于给系统加了阻尼。这带来的好处是抑制超调、增强稳定性。不过微分项对噪声极其敏感如果你的传感器测量值本身毛刺很多一求导放大之后控制量会抖得非常厉害所以现场使用往往要配合低通滤波。调参是有固定套路的我建议你按下面这条路走能省下大量时间先把Ki和Kd全部归零只留Kp。从小到大慢慢增加直到系统出现等幅振荡或略有一点振荡感记下这个临界值。把Kp退回到临界值的大约一半此时系统应该能稳定下来响应可能偏慢。加入Ki从很小的值开始加观察稳态误差是否消除。每次修改后都要从头观察一小段别急着继续调。最后再看超调和振荡情况决定要不要加Kd以及加多少。每改一次参数重新跑一遍完整实验记录响应曲线不要只凭印象。2.3 PID参数整定的实操方法与口诀经验调PID有一个非常精简的经验法则在很多现场项目中都能用上。你先用Ziegler-Nichols法找到那个临界增益Ku系统刚好持续振荡时的Kp值和振荡周期Tu然后可以按经验表快速得到一组初始参数Kp取0.6倍KuKi取Kp除以0.5倍TuKd取Kp乘以0.125倍Tu。这组参数不是最终目标但它能给你一个稳定的起点比从零开始瞎试要高效得多。我自己的实践体会是对大多数机器人的速度环或位置环Kp、Ki、Kd三个参数的数量级和角色其实有明确分工。Kp决定了系统的刚性也就是响应速度Ki负责消除静差但响应速度偏慢Kd负责阻尼让系统更平稳。在电机速度控制这个场景中通常Kp和Ki是主角Kd用得较少在舵机或机械臂位置控制中Kd的权重会明显上升因为你更关心位置到位的过程是否平滑。提示调参必备的一个工具是串口绘图。你最好把目标值、实测值、控制输出三路数据实时画出来缺少这个反馈纯粹凭感觉调参就像是蒙着眼睛投篮。3. 硬件搭建与选型思路别在第一步就劝退自己3.1 主控、电机、驱动器和传感器的选型取舍硬件选型是新手最容易纠结的事情其实只要遵循一条原则——选文档多、资料全、社区活跃的平台不要选性能最强但资料稀缺的平台。我见过太多人买了一块非常冷门的开发板结果连基本例程都跑不通直接丧失了继续学习的热情。主控方面目前机器人入门圈子里的三大主流选择是Arduino、ESP32和STM32。Arduino的优势是生态极其友好库函数丰富串口监视器开箱即用适合纯新手。ESP32的优势是自带蓝牙和WiFi做手机遥控、图传项目特别顺手而且性能和价格都比Arduino更有优势。STM32的优势是性能天花板高、实时性强工业项目非常常见但开发环境相对复杂对新手不那么友好。如果你完全零基础我的建议是从Arduino Nano或者ESP32开始跑通几个基础例程之后再考虑向STM32迁移。电机方面新手入门最推荐的是带编码器的直流减速电机也就是俗称的有刷减速电机加霍尔码盘。减速箱能放大扭矩让车有力气跑得动编码器则提供转速反馈信号让你的控制器知道当前实际转速是多少。注意如果没有编码器你只能做开环控制没法精确调速那就体验不到PID控制的核心乐趣了。无刷电机和步进电机当然也很好用但无刷电机的驱动控制比较复杂步进电机又偏向位置控制两者都不是入门阶段学习连续速度控制的最佳载体。驱动器方面常见的有两种方案。一种是直接用电机驱动模块比如经典的L298N以及效果更好的TB6612适合功率不太大的场合。另一种是集成式的电机驱动板把逻辑电源和电机电源分开设计输出能力更强。对于初学阶段TB6612是一个很不错的选择它的内阻低、压降小、发热控制好比L298N的表现好不少。无论选哪种驱动模块电源设计一定要重视电机启动瞬间电流非常大这时候如果电源压降太厉害主控会直接复位表现就是小车一动就重启这是新手最常踩的坑之一。传感器选型也有讲究。做最基础的小车避障最常用的无非是超声波测距模块和红外接近传感器。超声波的距离范围宽但存在测量盲区而且多个超声波互相干扰的问题需要注意红外的响应速度快但容易受环境光影响近距离才算得准。这里我还是特别推荐使用带编码器的电机因为它是做速度闭环的必要硬件没有转速反馈你的PID就只能对着空气空谈。3.2 一套不会出错的入门套装配置如果你懒得逐一研究我可以直接给你一套我自己配置过的入门套装清单从零开始大约几百块钱就能搞定全部硬件主控Arduino Nano 或 ESP32 开发板建议选官方兼容板。电机TT马达带霍尔编码器版本配合电机支架做小车底盘。驱动模块TB6612FNG或者利用L298N替代加一个1000uF以上的电解电容稳压。传感器HC-SR04超声波模块加一个舵机云台可以作为避障主传感器。电源两节18650锂电池串联约7.4V再配合降压模块给主控供电。底盘亚克力或3D打印的两驱小车底盘带两个万向轮或牛眼轮。其他杜邦线若干面包板一个开关、电压表模块。这套配置的精妙之处在于它能把前面闭环框架里的所有要素都串起来电机是执行器编码器是反馈传感器主控负责运算驱动板放大信号小车结构则作为被控对象。你可以在上面实现PID调速、循迹、避障、遥控甚至简单的编队可扩展性足够支撑你玩上几个月。4. 方向估计与数据融合机器人不迷路的秘密4.1 加速度计和陀螺仪到底怎么配合使用当你的机器人打算跑直线、转直角弯或者保持自身平衡时就得解决一个方向估计的问题。这件事说起来简单就是让机器人知道自己的朝向和姿态但实际做起来却很考验数据融合的功底。目前消费级机器人里最常用的惯性传感元件是六轴IMU内置一个三轴加速度计和一个三轴陀螺仪。加速度计可以直接测出重力方向在三个轴上的分量进而解算出俯仰角和横滚角它的长期稳定性很好角度不会越漂越远。但是加速度计对运动加速非常敏感一旦机器人本身在加速运动测出来的“重力方向”就混进了运动加速度算出来的姿态就会产生剧烈的高频抖动。陀螺仪的情形正好反过来它测的是角速度对角度的短期变化反应非常准确但角速度积分得到角度这件事会累积零偏时间一长角度就会越漂越离谱。由此就诞生了传感器融合的需求——用加速度计校准整体的长期漂移同时信任陀螺仪短期的快速响应把两者的优势结合起来。在入门阶段最经典的方案是互补滤波算法它比卡尔曼滤波简单得多效果又足够好非常适合新手理解原理。4.2 互补滤波与姿态解算的入门实现互补滤波的核心思想简单到一句话如果你有一个高频上可信的信号和一个低频上可信的信号那就用一个系数把它们加权融合。具体到姿态估计就是最终角度等于低通处理后的加速度计角度加上高通处理后的陀螺仪积分角度。实现的时候可以写成一行关键代码核心公式是angle alpha * (angle gyroRate * dt) (1 - alpha) * accelAngle这里的alpha通常取0.95到0.98之间意思是95%的权重给短期的姿态积累5%的权重留给加速度计去拉回长期偏差。如果你想要更精确的融合效果可以学习Mahony互补滤波算法它用四元数来表示姿态相比欧拉角能避免万向锁问题计算量也还在STM32这类主控的承受范围内。再往上一层就是大名鼎鼎的卡尔曼滤波处理非线性的姿态估计问题时常用它的扩展形式EKF。不过作为入门来说我的建议是先把互补滤波吃透再考虑其他高级算法一上来就啃卡尔曼滤波很容易被复杂的协方差矩阵计算劝退。注意MPU6050这类IMU模块若读取原始数据时出现大量跳动要让模块稳定静止3到5秒再初始化并且读取数据时最好加上低通滤波比如做移动平均。否则数据送给姿态解算之后角度会抖得很厉害。5. ROS快速扫盲机器人控制圈的公共语言5.1 为什么不建议一上来就学ROS市面上很多教程一上来就让你安装ROS熟悉catkin工作空间、写launch文件在我看来这对零基础的人其实不太友好。原因是ROS本身是一个复杂的分布式计算框架它的核心价值在于模块之间的解耦和复用视觉模块是一个节点、控制模块是一个节点、它们通过话题来传递消息。这样的架构在大型项目和团队协作中非常有价值但如果你只是想让一台小车跑起来这套框架反而是多余的负担。我见过最遗憾的学习路径是一个初学者花了两周时间装ROS、搭环境还没搞清楚自己的电机怎么转就卡在一个编译错误或者环境变量问题上面最后对机器人控制彻底丧失兴趣。所以我的建议是先把单片机侧的基础控制玩熟练当你开始觉得“我单机版的功能已经做得差不多了但代码越写越乱模块之间调来调去很麻烦”的时候才是接触ROS的最佳时机。5.2 ROS的核心概念与入门命令速览如果你已经决定要了解ROS那么最核心的概念就三个节点Node、话题Topic、消息Message。节点是运行在系统里的一个进程比如一个专门读取激光雷达数据的节点、一个专门做路径规划的节点节点和节点之间不直接通信而是通过话题来发布和订阅数据话题上传递的数据类型就是消息。这种机制让你可以把一个大系统拆成很多小块各自独立开发、独立测试。入门阶段几个最重要的命令你需要掌握roscore启动ROS主节点所有消息通信的基础。rosrun运行一个单独节点。rostopic list查看当前有哪些话题。rostopic echo直接查看某个话题上流动的数据。catkin_make 或 colcon build构建整个工作空间。rviz可视化工具可以查看传感器数据和机器人模型。在机器人建模上URDF文件用来描述机器人的几何和物理属性TF树用来跟踪各个坐标系之间的变换关系。你不需要一开始就把这些全部学完但理解它们的存在会对后续学习帮助很大。除了完整的ROS还有一个更适合轻量级项目的选择是ROS 2它带给了社区更好的实时性、更精简的通信层和更现代的工程实践。如果你是新入坑我个人建议直接考虑ROS 2选一个长期维护的发行版避免在ROS 1上面投入过多精力之后又要迁移。6. 动手实战让小车按目标速度稳定行驶6.1 速度闭环控制的完整流程讲了这么多理论基础最终一定要落到一个具体项目上才能真正把知识内化。这里我分享一个最简单的实战项目让一台带编码器的两驱小车以20厘米每秒的速度直线行驶并且速度偏差不大于2%。这个项目虽然简单但五脏俱全。整体流程是先读取左右电机的编码器脉冲计算实际轮速然后把目标速度分别发给左右电机通过两路PID控制器各自调整PWM占空比最后在串口里观察速度曲线确认系统稳定。第一步硬件接线。编码器电机的输出线一般有6根两根接电源和地两根接电机正负极接到驱动板上还有两根是编码器A、B相接到主控的中断引脚。注意A、B相是正交编码信号通过判断两路信号的相位关系不仅能测转速还能得到转动方向这是做闭环控制的基础。第二步写编码器读取程序。拿Arduino平台举例子编码器中断回调里做简单的加减计数这样每个控制周期开始你就能知道电机转了多少圈。更进一步可以用定时器中断每50ms结算一次速度这个时间间隔就是你的控制周期一般也不会太短能保证编码器脉冲足够多。第三步PID输出映射。PID运行之后输出的是一个控制量需要把它映射到PWM占空比上。常见的做法是把控制量直接作为PWM比较值比如PID输出0到255对应占空比0%到100%。要注意的是PID输出可能需要限幅防止占空比突然给满导致电机过冲。第四步整定参数。往PID参数表里填入前面调参经验总结得到的初始值然后跑速度阶跃实验。观察实际速度从0加速到目标值的响应曲线根据超调量和上升时间微调参数。6.2 实测数据对比开环与闭环的差异为了让读者直观感受闭环控制的价值我做过一组对比实验。同样是给小车50%固定占空比的开环控制实测车轮转速在空载时是180转每分钟左右但一旦用手轻按小车增加负载转速瞬间就掉到150转。而在速度闭环控制下目标转速设定为160转每分钟不管是空载还是用手按住电机增加阻力系统都能快速把转速拉回160转附近恢复时间不超过半秒。这个对比实验特别适合入门者亲手做一次。它直观告诉你PID控制到底带来了什么抗扰能力。输出量不会因为外部扰动就随风飘摆系统会自行纠正偏差。理解了这一点你以后再看到“无人机悬停的时候为什么能抵抗风力干扰”“机械臂为什么能精确把东西送到指定位置”这些问题就不会再觉得神奇了。7. 常见问题与排查技巧实录7.1 高频问题速查表下面这些问题是新手求助区出现频率最高的我整理成一张速查表方便你直接对照排查。现象可能原因排查思路电机完全不动电源没接通、PWM引脚接错、使能引脚被拉低先用手转动电机看是否有阻力感测驱动板输入电压是否正常电机动一下就反向转电机接线极性反了对调电机两根电源线转速波动特别大编码器脉冲读取缺失、供电不稳检查中断引脚是否支持硬件中断检查电源是否给驱动板单独供电小车跑不直左右电机型号差异大、两侧摩擦力不同给左右轮设置独立PID进行轮速标定PID一旦调大就啸叫或抖动Kp过大、微分放大噪声降低Kp必要时加低通滤波小车一启动主控就重启电机启动瞬间拉低电源电压给驱动板单独供电增加大容量滤波电容7.2 编码器读数乱跳的处理心得编码器读数跳动是最常见也最让人头疼的问题它的起因往往不是算法而是硬件信号质量不过关。霍尔编码器的输出是方波信号理想情况下只有高电平和低电平两种状态但实际接线较长或者电机转动带动电刷干扰时信号边沿会产生大量的毛刺导致主控在中断里多计数了好几次速度读数自然就不准了。处理这个问题我有三个建议第一缩短编码器信号线长度避免信号线和电机大电流线绑在一起走线第二在信号线上加一个10k欧姆左右的上拉电阻确保电平明确第三在主控程序里加一个简单的消抖逻辑即在检测到边沿后的很短时间内忽略再次触发。另外一个值得一提的细节是单片机测量频率的方法本身就有两种一种是固定时间窗口内数脉冲个数测频法适合转速较高的情况另一种是测量脉冲间隔计算频率测周法适合低速场合。你要根据自己实际运行的转速范围选择合适方法否则低速时测频法会显得很粗糙因为一个周期内可能只数到几个脉冲分辨率太低。7.3 调试工具的进阶用法调试这件事工欲善其事必先利其器。最基本的串口监视器只能看到一行行的数值效率很低最好使用带绘图功能的串口工具。如果你用Arduino可以装一个Serial Plotter它能直接把多条曲线打印在屏幕上调试PID时看目标值和实际值的拟合程度简直不要太直观。如果你用ESP32可以用本地的网页服务器实现一个简易的示波器页面或者接入Node-RED把数据画出来效果也很不错。虚拟示波器这类工具的另一个好处是它能帮你记录时间序列数据方便做参数对比。我给项目调参时每次调整Kp之后都会保存一份串口导出的CSV然后用Python脚本快速画图分析找出响应曲线上的超调量、上升时间和调节时间再决定下一步往哪个方向调。你不需要一上来就跟着这么干但至少要知道这件事是可行的随着你的项目复杂度增加调试工具的重要性会越来越高。8. 从入门到独立做项目的进阶路径8.1 分阶段学习路线与目标设定入门之后的学习路径我希望你按阶段来每阶段都给自己设定一个可以验证的小目标。第一阶段是传感器驱动开发目标是能通过串口读到稳定的传感器数据包括编码器数据、IMU角度、超声波距离。这个阶段的验收标准是连续跑10分钟数据不跳变、不漂移。第二阶段是单环控制目标是实现任意给定速度的精确跟踪并能应对一定负载扰动。做完这个你就掌握了PID控制的基本功底。第三阶段是双环级联控制也就是做位置环加速度环。外环输出的是期望速度内环执行速度跟踪这种结构在无刷电机FOC、云台控制、四轴飞行器里都是标配。这里你会用到串级PID比如机械臂关节控制中典型的外环是位置环内环是速度环整体响应更快更稳。第四阶段是状态估计与多传感器融合目标是把IMU、编码器、光流或者视觉的信息综合起来得到一个更准确、更鲁棒的状态估计。第五阶段是根据实际任务组合架构可以用ROS搭建一套完整的系统让多个模块并行工作。每个阶段都有一个明确的项目作为里程碑而不是看多少视频、翻多少页书。学习控制一定要以“能跑起来的实物”和“能追得上指标的曲线”作为衡量的唯一标准否则你只是在积累知识点而不是真正掌握技能。8.2 书籍、仿真工具与社区参考学习过程中推荐几本帮助很大的资料。第一本是《Feedback Control of Dynamic Systems》它对经典反馈控制讲得严谨又清晰当作参考书很合适。第二本是《概率机器人》主要面向涉及贝叶斯滤波、粒子滤波、SLAM这类状态估计和感知问题的进阶内容。还有《ROS机器人编程实践》这类偏实操的书籍适合在配置ROS环境后边查边用。仿真工具的话推荐大家尝试Gazebo配合ROS使用它能够在一套物理引擎里建很多场景比如室内迷宫、工厂产线方便你在试验真机之前先做控制算法的验证。另一个非常流行的工具是Webots它的控制器内置了一些简单的运动模型接口对初学者更加友好。PyBullet也是一个好的起步选项尤其适合搞机械臂抓取相关项目因为它的逆运动学求解比较方便。社区方面GitHub上其实藏着很多非常优秀的开源项目比如各种两轮自平衡小车的开源代码学习价值很高注意不要光看热闹要真的克隆下来跑一遍。英文资料里Arduino官方论坛和ROS Discourse论坛都有大量高质量的讨论遇到问题先搜索历史帖子十有八九能直接找到答案。9. 控制系统的工程级考量可靠性与调试心态9.1 从“能跑”到“稳定跑”的关键跨越很多人在DIY阶段小车能动了就觉得很满足但如果你的目标是把机器人控制当成一项可以持续深挖的技能那就必须养成工程思维。什么叫工程思维就是不光关心它在桌面上的表现更关心它在连续运行时的稳定性、掉电重启后的恢复能力、以及异常输入情况下的自我保护。举例来说编码器信号线在长时间弯折之后有可能接触不良导致瞬间丢步这时候如果你在最小系统里没有做异常检测控制器就会把错误的速度值当成反馈信号去算PID输出一个很大的补偿车一下子就窜出去了。如果你在PLC或者单片机里做一层合理性检查发现速度反馈信号突变立刻报警停机整个系统的可靠性就会上升一大截。再比如你控制机械臂如果位置传感器偶发一个故障值位置环会猛推关节轻则抖动重则损坏机械结构。所以新手有必要尽早养成编写防御性代码的习惯把“异常数据导致异常控制”这个隐患在源头上就堵上。9.2 稳定压倒一切调试心态与几个容易踩的坑技术之外的调试心态我觉得同样重要。做控制实验最怕的就是一次只改一个变量结果一顿操作猛如虎三个参数全动了最终系统表现异常你完全不知道是哪个改坏了。正确的做法是每次实验前明确假设每次只改变一个因素记录下数据和结果然后逐步推进。哪怕最后发现假设不成立你至少能确定那条路不通。另一个常见的坑是忽略采样周期的一致性。PID控制公式里有一个dt也就是控制周期如果你在主循环里执行PID循环时间受其他任务影响波动很大那同样的参数在不同时刻表现会差很多。正确的做法是用定时中断来做实时控制保证执行周期严格一致或者每次运行PID之前用微秒级的计时函数获取实际时间间隔并把它作为dt传给算法。还有一个坑是关于积分项初始值。很多控制的初始化状态并不是从零开始比如机械臂开机的时候关节可能停在某个随机位置如果积分项从零开始积累启动阶段会有明显的反向冲击。设置积分项的上限并允许它在启动阶段快速清零能让系统的启动过程温和很多。10. 写在最后的建议把控制做成肌肉记忆说了这么多核心还是那句话机器人控制的本质是让系统按期望运动而学习控制的最佳方式就是亲手调一个系统让它从振荡到稳定从超调到平滑从“刚好能用”到“稳如老狗”。我个人的体会是PID和姿态解算是两个最重要的抓手。前者让你理解一切控制算法的核心思想后者让你明白机器人是怎么在空间中认知自己的。把这两个东西彻底玩透你后面学LQR、模型预测控制MPC、滑模控制、自适应控制的时候会发现它们解决的都是同一类问题的不同变体而你也可以很容易地说清楚它们各自在什么条件下优势更明显。到那个时候你就真正站在了机器人控制入门的门槛之上可以自由决定下一步往里走多深了。
返回列表