视频加载失败

主页 · 6

18.06 第 1 讲:方程组的行图与列图
MIT 18.06 第 1 讲的配套笔记:我用 Python 3.13 和 NumPy 2.4 把 2 × 2 与 3 × 3 方程组分别按行图、列图和 A @ x 解了一遍,再把第三列换成前两列之和,秩从 3 掉到 2,最近的可达点与 b 差了 0.4082。
#线性代数#NumPy#MIT 18.06+2
上车之前:float32、定点数与 CAN 量化
PID 控制系列第 10 篇,也是最后一篇:我用 Python 3.13、gcc 15.3、g++ 15.3、rustc 1.95 和 arm-none-eabi-gcc 15.2,把第 5 篇的 PID 搬到 float32 和 Q16.16 定点,再让它在三种上车会遇到的麻烦里各跑一遍:积分器停滞、CAN 的整数量化、采样周期抖动。Q16.16 在三种语言里和 Python 逐位一致(差异 0),C、C++、Rust 的 float32 也逐位一致;float32 的积分器确实会停,但在 M3508 的速度环上只停在 1.04e-3 rpm 的误差上;CAN 量化把 0.8e-3 rpm 的稳态误差变成 0.298 rpm 的锯齿;±20% 的周期抖动用实测周期补偿,IAE 只差 0.53%。M4F 上 PID 的 float32 版是 556 字节。
#PID#控制理论#嵌入式+1
状态反馈:LQR、LQI 与平衡步兵
PID 控制系列第 9 篇:我用 Python 3.13、gcc 15.3、g++ 15.3 和 rustc 1.95,把小矩阵运算、矩阵指数(缩放平方加 12 阶泰勒)、ZOH 离散化、Riccati 迭代和 LQI 增广各写了四遍,再加一个新对象:平衡步兵的平面拉格朗日模型。同一份仿真里我比较了 LQR、LQI 和“位置环套速度环套直立环”的串级 PID(五个增益交给 Nelder–Mead 整定)。拉格朗日模型的能量漂移是 1.06e-13;LQR 在 10 N 的推力下稳态偏离 0.826 m,LQI 能把它拉回 0,但 5 秒内没拉完,阶跃的超调还是 38.8%(LQR 是 2.3%);整定好的串级把积分项整定成了 1.5e-12,成了一个 LQR 的 0.87 倍缩放版,代价 6.162 对 6.163;LQI 的增益向量落在串级能表达的范围之外(判别式 −0.0618)。四种语言 42 个对比文件最大差异 5.06e-13。
#PID#控制理论#LQR+1
多变量:耦合、RGA、解耦与麦轮底盘
PID 控制系列第 8 篇:我用 Python 3.13、gcc 15.3、g++ 15.3 和 rustc 1.95,把 2×2 的相对增益阵列(RGA)和静态解耦器、麦轮的运动学(最小范数电流分配、零空间分量)、Wood–Berry 精馏塔和麦轮底盘两个新对象各写了四遍,控制器全用第 5 篇的 Pid。Wood–Berry 的 λ11 = 2.0094,按对角配对的两个 SIMC PI 能用,配成非对角(λ12 = −1.0094)则发散,|y2| 每 13.9 分钟翻一倍;静态解耦把 y2 阶跃的 IAE 从 11.87 降到 7.29,却把 y1 的超调从 17.2% 推到 65.6%。麦轮底盘撞上轮速上限时,逐轮截断让零空间电流 nᵀi 的均方根达到 28.54 A,(vx, vy) 的方向偏了 11.98°,2 s 末位置偏离理想路径 2.18 m;逐轮等比缩放和车体系 PI 的零空间电流只有 3e-13 A 以下,方向偏差 0.001° 以内。四种语言 21 个对比文件最大差异不超过 2.2e-16。
#PID#控制理论#多变量+1
串级 PID:云台的角度环和速度环
PID 控制系列第 7 篇:我用 Python 3.13、gcc 15.3、g++ 15.3 和 rustc 1.95,在 GM6020 云台的偏航轴上把单环 PID 和串级 PID(内环速度 PI、外环角度 P)各写了四遍,不新增库模块,只用第 5 篇的 Pid。底盘在 0.5 s 内加速到 6 rad/s 的小陀螺里,单环的云台角度误差峰值是 7.16 mrad,串级是 0.41 mrad(17.5 倍),再加底盘角速度前馈是 0.16 mrad(44.1 倍);带宽比 1.5 的外环相角裕度 61.7°,比值到 3 以上超过 85°;1.5 rad 的大阶跃让内环饱和时,外环积分一直累加,超调 46.41%,用内环的饱和标志冻结外环积分后降到 1.59%。四种语言 30 个对比文件最大差异为 0。
#PID#控制理论#串级+1
整定:Ziegler–Nichols、继电器自整定与 SIMC
PID 控制系列第 6 篇:我用 Python 3.13、gcc 15.3、g++ 15.3 和 rustc 1.95 把两点阶跃拟合、继电器自整定、两套 Ziegler–Nichols 规则和 SIMC 各写了四遍,在摩擦轮和 1/(s+1)^4 上比较。两点法在摩擦轮上把 3.00 ms 的等效延迟拟合成 1.39 ms,Ziegler–Nichols 阶跃法因此给出相位裕度 -48.7° 的增益;带 2 rad/s 滞环的继电器读到的 Ku 是 4.81,真值是 12.87,因为它测的不是 -180° 那一点;四阶对象上继电器的 Ku 只比真值低 1.7%;SIMC 的超调 6.8%,Ziegler–Nichols 继电器法 36.2%,代价是负载 IAE 3.75 对 1.38。
#PID#控制理论#整定+1
工程上的坑:积分饱和、微分冲击与前馈
PID 控制系列第 5 篇:我用 Python 3.13、gcc 15.3、g++ 15.3 和 rustc 1.95 把四种抗饱和、设定值权重、滤波微分、前馈和无扰动切换收成一个 PID 库,写了四遍。40 rad/s 的阶跃上,不处理饱和的积分让超调到 77.4%,条件积分只有 2.2%;D 项直接看误差,一次 0.1 rad 的设定值阶跃就产生 10.43 N·m 的微分冲击,是 1 N·m 限幅的 10 倍;微分滤波时间常数从 0 加到 10 ms,编码器量化引起的力矩抖动小 13.7 倍;重力前馈把正弦跟踪的 rms 误差缩小 1.84 倍;切换增益时调用 reset,输出跳变从 0.162 N·m 降到 0.0267 N·m。
#PID#控制理论#抗饱和+1
离散化:位置式、增量式与采样率
PID 控制系列第 4 篇:我用 Python 3.13、gcc 15.3、g++ 15.3 和 rustc 1.95 把位置式、增量式和三种 s 到 z 映射写了四遍,把采样周期从 1 ms 拉到 20 ms,相位裕度从 59.0° 掉到 -21.7°,回路在 20 ms 上失稳;限幅后的位置式积分器让超调到 29.2%、回到零要 5.07 s,增量式累加器限幅后只有 0.4% 和 0.53 s;Tustin 微分让输出的 rms 电流从 0.86 A 涨到 2.83 A。
#PID#控制理论#离散化+1
频域:Bode、Nyquist 与稳定裕度
PID 控制系列第 3 篇:我用 Python 3.13、gcc 15.3、g++ 15.3 和 rustc 1.95 把频率响应、相位展开和裕度求解写了四遍,给第 2 篇的 PI 速度环算出 63.3° 相位裕度和 72.9 ms 延迟裕度,再把延迟加到裕度的 0.9 倍和 1.1 倍去仿真:0.9 倍的包络以 -1.06/s 衰减,1.1 倍以 +0.81/s 发散,精确的 1 kHz 采样模型把稳定边界放在 72 和 73 拍之间。
#PID#控制理论#频域分析+1
传递函数、极点与根轨迹
PID 控制系列第 2 篇:我用 Python 3.13、gcc 15.3、g++ 15.3 和 rustc 1.95 把多项式求根、阶跃响应指标和两个新对象写了四遍,用拉普拉斯变换推出二阶原型和极点配置公式,再跑 14 组仿真验证:同样的极点配置下 PI 超调 20.29%、I-P 只有 4.70%,Routh 判据给出的临界增益在 1 kHz 采样下少了 20%。
#PID#控制理论#传递函数+1
Profile Image of the Author
bfmhno3
Hello, I'm bfmhno3.
公告
本站曾使用 Jekyll + Minimal Mistakes 主题,现已迁移至 Astro + Firefly。博客内容未变,但文章链接有所调整,请自行查找需要的文章。
分类
标签
最新动态
站点统计
文章
123
分类
2
标签
239
总字数
753,253
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
GitHub Actions
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0

当前页面没有目录

文章目录

当前页面没有目录