MATLAB之机器人鲁棒自适应PD控制

自适应鲁棒PD控制策略,避免了力矩过大的弊端。该控制器由非线性PD反馈和补偿控制两部分组成,机器人不确定动力学部分由回归矩阵构成的自适应控制器进行补偿,并针对机器人有界扰动的上确定界是否已知设计了两种不同的扰动补偿法。

1.机器人动力学模型及结构特性

考虑一个N关节的机器人力臂,其动态特性可以由以下二阶非线性微分方程描述:

D(q)\ddot{q}+C(q,\dot{q})\dot{q}+G(q)+\omega =\tau

其中\omega是各种误差和扰动。

误差和扰动w的范数满足:

\left \| \omega \right \|\leqslant d_{1}+d_{2}\left \| e \right \|+d_{3}\left \| \dot{e }\right \|

其中d_{1},d_{2},d_{3}分别为正常数,e=q-q_{d},\dot{e}=\dot{q}-\dot{q}_{d}分别为跟踪误差和误差导数。

2.控制器的设计

分别引入变量qq_{r},并令:

y=\dot{e}+\gamma e,\dot{q}_{r}=\dot{q}_{d}-\gamma e

其中常数\gamma >0,则可以推导出:

y=\dot{q}-\dot{q}_{r}

得到:

D(q)\dot{y}+C(q,\dot{q})y=\tau -\Phi (q,\dot{q},\dot{q}_{r},\ddot{q}_{r})P-\omega

3.基于扰动上界已知的时控制器的设计

4.扰动信号的上界未知时控制器的设计

 该部分摘自刘金琨《机器人控制系统的设计与MATLAB仿真》第二章节地机器人鲁棒自适应PD控制。

相关代码见链接

MATLAB之机器人鲁棒自适应PD控制代码_爱科研的雨诺的博客-CSDN博客

 

 

 

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,没有直接提供matlab离散鲁棒最小二乘法自适应鲁棒控制代码。但是,引用提到了设计线性鲁棒自适应解耦控制律和神经网络非线性自适应解耦控制律,并通过它们之间的切换对系统进行控制。因此,可以考虑使用matlab实现这两种控制律,并进行切换控制。同时,引用提供了绘制图像的代码,可以用于绘制控制效果的图像。 下面是一个简单的matlab代码示例,用于实现线性鲁棒自适应解耦控制律和神经网络非线性自适应解耦控制律,并进行切换控制: ```matlab % 线性鲁棒自适应解耦控制律 K1 = 0.1; % 控制增益 A = eye(2); % 系统矩阵 B = [1; 0.5]; % 输入矩阵 C = [1 0; 0 1]; % 输出矩阵 D = 0; % 直接通道矩阵 L = [0.5 0; 0 0.5]; % 鲁棒矩阵 x1 = [0; 0]; % 初始状态 u1 = 0; % 初始输入 y1 = [0; 0]; % 初始输出 r1 = [1; 1]; % 参考输入 for k = 1:100 e1 = r1 - y1; % 跟踪误差 u1 = -K1 * L * y1 + K1 * L * r1; % 控制输入 x1 = A * x1 + B * u1; % 状态更新 y1 = C * x1 + D * u1; % 输出更新 end % 神经网络非线性自适应解耦控制律 K2 = 0.1; % 控制增益 net = feedforwardnet(10); % 神经网络 net = train(net, x1, y1); % 神经网络训练 x2 = [0; 0]; % 初始状态 u2 = 0; % 初始输入 y2 = [0; 0]; % 初始输出 r2 = [1; 1]; % 参考输入 for k = 1:100 e2 = r2 - y2; % 跟踪误差 u2 = -K2 * net(x2) + K2 * net(r2); % 控制输入 x2 = A * x2 + B * u2; % 状态更新 y2 = C * x2 + D * u2; % 输出更新 end % 切换控制 for k = 1:100 if mod(k, 2) == 1 % 奇数步使用线性鲁棒自适应解耦控制律 e = r1 - y1; % 跟踪误差 u = -K1 * L * y1 + K1 * L * r1; % 控制输入 x1 = A * x1 + B * u; % 状态更新 y1 = C * x1 + D * u; % 输出更新 else % 偶数步使用神经网络非线性自适应解耦控制律 e = r2 - y2; % 跟踪误差 u = -K2 * net(x2) + K2 * net(r2); % 控制输入 x2 = A * x2 + B * u; % 状态更新 y2 = C * x2 + D * u; % 输出更新 end end ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值