💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
⛳️赠与读者
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能解答你胸中升起的一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
💥1 概述
摘要:
本文讨论了欠驱动机械系统的部分反馈线性化控制。我们考虑一个具有n个自由度的系统,其中有m个自由度是被驱动的(或称主动的),而剩下的l = n - m 个自由度是未被驱动的(或称被动的)。已知通过非线性反馈可以线性化与主动自由度相对应的动态部分。在本文中,我们进一步证明,在我们称之为强惯性耦合的条件下,通过非线性反馈也可以线性化与被动自由度相对应的动态部分。我们推导并分析了由此产生的零动态,这对于理解整个系统的响应至关重要。文中还展示了在部分反馈线性化控制下,两个自由度欠驱动机器人的性能仿真结果。
一、欠驱动机械系统的核心特征
欠驱动机械系统是指控制输入维度小于系统自由度维度的非线性系统。其特点包括:
- 非完整约束性:系统存在速度或加速度层面的不可积分约束(如轮式机器人的横向移动限制)。
- 控制输入不足:例如两自由度机器人仅有一个驱动关节,需通过动力学耦合实现全局控制。
- 能量效率与灵活性:减少驱动器数量可降低重量和能耗,但增加控制复杂度。
二、两自由度欠驱动机器人动力学建模
典型系统如Pendubot(双连杆摆)和Acrobot(体操机器人):
-
拉格朗日方程建模:
-
被动自由度特性:
未驱动关节(如Pendubot的第一关节)的动态表现为非线性耦合,需通过主动关节的输入间接控制。
三、部分反馈线性化方法原理
1. 核心思想
通过坐标变换和非线性反馈,将系统分为线性化部分(主动自由度)和内部动态(被动自由度):
- 输出选择:通常选取主动自由度或可观测状态作为输出函数 y=h(x)y=h(x)。
- Lie导数计算:验证系统相对阶,确定可线性化维度。
2. 实现步骤
-
坐标变换:构建新状态 z=T(x),分离线性与非线性部分。
-
反馈控制律设计:
u=α(x)+β(x)
其中 vv 为线性控制器输入,α(x) 和 β(x) 用于补偿非线性项。
-
内部动态稳定性分析:验证零动态(被动自由度)的Lyapunov稳定性。
3. 典型应用案例
- 吊车防摆控制:将负载摆动作为内部动态,通过台车运动线性化实现防摆。
- TORA系统镇定:采用最大反馈线性化处理旋转激励与平移振荡的耦合。
四、非线性反馈在被动自由度控制中的实践
1. 主动-被动自由度协同策略
- 滑模控制:结合滑模面设计与反馈线性化,增强鲁棒性。
- 在线学习优化:估计模型不确定性扰动,动态调整反馈参数。
2. 关键挑战与解决方案
挑战 | 解决方案 | 文献依据 |
---|---|---|
非完整约束 | 虚拟守恒约束法(轨迹规划) | |
模型不确定性 | 自适应鲁棒控制器设计 | |
内部动态不稳定 | 零动态稳定性证明 |
五、研究前沿与未来方向
- 软体机器人控制:结合柔性动力学与欠驱动特性。
- 强化学习融合:通过数据驱动优化反馈线性化参数。
- 分布式控制架构:适用于多自由度欠驱动系统(如人形机器人)。
六、结论
通过非线性反馈实现被动自由度动态线性化,需综合几何控制理论、稳定性分析与智能算法。尽管面临模型不确定性和非完整约束等挑战,部分反馈线性化方法已成功应用于吊车、双摆机器人等系统,并在能源效率与运动灵活性上展现优势。未来研究将进一步探索混合控制策略与在线学习技术的结合,以提升复杂环境下的控制性能。
以上内容综合了动力学建模、控制理论及实际案例,覆盖了从基础原理到前沿进展的全方位分析。
📚2 运行结果
部分代码:
%deriverRelativeAngles; % Should not need to run unless you want to redo
%all the equation derivations.
% Pick controller
p.controller = 'noncollocated'; % Choose: noncollocated, collocated, none
% 1) noncollocated controller is really crazy and can stabilize to any target
% angle! The downside is that it requires basically boundless torque.
% 2) collocated controller does a reasonable "pumping" motion for swing-up.
% The downside is that it can't stabilize without some linear controller to
% keep it at the top.
% 3) none - no controller mode. Play around with the free pendulum.
%
% NOTE: This code does not transition to LQR at the top.
% Initial conditions:
init = [-pi 0 0 0]';
% Simulation duration
duration = 20;
animationSpeed = 1;
% For link 1 linearization (noncollocated):
p.kd1 = 6.4;
p.kp1 = 15;
p.target = pi/2; % Target stabilization angle
% For link 2 linearization (collocated):
p.alpha = pi/6; % "pumping" angle
p.kd2 = 200;
p.kp2 = 2000;
%%%%%%%% System Parameters %%%%%%%%
p.g = 9.81; % Gravity
p.m1 = 1; % Mass of link 1.
p.m2 = 1; % Mass of link 2.
p.l1 = 1; % Total length of link 1.
p.l2 = 1; % Total length of link 2.
p.d1 = p.l1/2; % Center of mass distance along link 1 from the fixed joint.
p.d2 = p.l2/2; % Center of mass distance along link 2 from the fixed joint.
p.I1 = 0.083;% 1/12*p.m1*p.l1^2; %Moment of inertia of link 1 about COM
p.I2 = 1/3;% 1/12*p.m2*p.l2^2; %Moment of inertia of link 2 about COM
p.T1 = 0; % Motor torques default to zero. Not really relevant unless you run this without control (or maybe disturbances at first joint?)
p.T2 = 0; % Joint torque 2 only affects the system when controls aren't used.
p.sat = 10000; %Actuator saturation threshold (Nm). Obviously unrealistic for this kind of controller
%%%%%%%% Integrate %%%%%%%%
options1 = odeset('AbsTol', 1e-6,'RelTol',1e-6); %Transition from swing up to linear balance controller when conditions met.
[tarray, zarray] = ode15s(@Dynamics, [0 duration], init, options1, p);
%Torques are post-calculated due to the difficulty of pulling numbers out
%of ODE45. Therefore, we also have to post-cast the values within the
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。(文章内容仅供参考,具体效果以运行结果为准)
🌈4 Matlab代码、文章下载
资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取