机器人线性控制理论:H-infinity 最优控制

           在机器人控制理论中,鲁棒控制是一种不错的设计工具,机器人H-infinity最优控制是一种基于H-infinity控制理论的控制方法,旨在通过优化系统的控制器,使机器人系统具有最优的鲁棒稳定性和最小的H无穷范数,以实现高精度、高效、高稳定的运动控制。

          在机器人控制中,H-infinity最优控制方法可以提高系统的鲁棒性能,能够有效地解决模型不确定性、扰动抑制、控制误差等问题,并且对控制器参数的变化和系统非线性特性具有一定的鲁棒性。因此,在机器人的运动控制中,H-infinity最优控制被广泛应用于工业机器人、服务机器人、医疗机器人等领域。

H-infinity控制算法实现主要包括以下步骤:

  1. 系统建模:对被控对象进行数学建模,得到状态空间模型或传递函数模型。
  2. 权重函数设计:根据控制系统的性能指标和控制目标,设计加权函数,包括输入权重函数、输出权重函数和鲁棒稳定裕度函数。
  3. 状态反馈设计:使用鲁棒控制理论设计状态反馈控制器,保证控制系统的鲁棒稳定性和控制性能。
  4. H-infinity控制器实现:将状态反馈控制器中的鲁棒性能指标和权重函数代入H-infinity最优控制器设计公式中,求解最优控制器的参数。
  5. 系统仿真:使用仿真软件对设计的控制系统进行仿真分析,验证控制系统的性能和鲁棒性。

需要注意的是,H-infinity控制算法实现需要对系统建模和权重函数设计进行合理的假设和约束,以保证算法的有效性和可行性。同时,对于复杂的控制系统,算法实现可能需要结合其他控制理论和方法,如模糊控制、神经网络控制等,以达到更好的控制效果。

       在机器人H-infinity最优控制中,权重函数是一个重要的设计参数,它会直接影响到控制系统的性能和稳定性。权重函数是一个频率响应函数,通常在设计时需要满足以下两个条件:

  1. 权重函数需要能够适应所设计的控制系统的要求。例如,如果需要控制系统在某个频率范围内具有更好的性能,那么可以将权重函数在该频率范围内放大,以便更好地抑制干扰。

  2. 权重函数需要平滑,以避免引入高频噪声。高频噪声可能会导致系统不稳定或者性能不佳。

在实际应用中,权重函数的设计通常需要经过多次试验和调整才能得到一个合理的结果。一种常见的方法是使用系统识别技术来确定权重函数的形状和参数,然后通过试验和仿真来优化权重函数的性能。另外,也可以基于经验或者专家知识来设计权重函数,然后通过试验来验证性能和稳定性。无论使用何种方法,都需要对控制系统的要求和干扰特征进行充分的了解,才能得到一个合理的权重函数。

MATLAB中的makeweight函数可以用来设计合理的权重函数。makeweight函数可以创建一些常见的加权函数,如低通、高通、带通、带阻和通用的形状函数,这些函数可用于设计H∞控制器的加权函数。例如,可以使用makeweight函数创建一个低通滤波器,该滤波器在低频处具有较小的增益,而在高频处具有较大的增益,以便对机器人控制中低频扰动进行补偿。然后,将该低通滤波器用作H∞控制器中的权重函数。

W = makeweight(dcgain,[freq,mag],hfgain)

具有单调增益轮廓的加权函数:指定环路形状,目标增益轮廓,或加权函数的应用程序,如控制器合成和控制系统调优。

例如传递函数:= 5.2e3/(0.1*s^2+1*s+1); 

画出来bode图如下:

从Bode图中可以看出曲线在低频保持较大的幅值,在高频端逐渐减小。

使用MATLAB中的makeweight函数来设计合理的权重函数,该函数可以指定参数以实现所需的响应特性。在使用makeweight函数时,可以指定要设计的权重函数的类型和所需的频率响应曲线。对于H-infinity最优控制的权重函数,通常使用具有低通滤波器特性的权重函数,以抑制高频噪声和不稳定性。

要根据传递函数反求makeweight的设计参数,可以通过以下步骤:

  1. 计算传递函数的奇点,找到主要的不稳定模态和带宽。

  2. 根据不稳定模态和带宽选择makeweight函数的类型,如低通、高通、带通等。

  3. 根据所选makeweight类型和传递函数特性选择makeweight参数。通常,makeweight的参数是幅值、截止频率或带宽等。

  4. 可以使用MATLAB中的bode或margin函数绘制传递函数的频率响应曲线,并使用makeweight函数生成相应的权重函数。

  5. 调整makeweight参数并重新计算权重函数,直到达到所需的响应特性。

注意!!!权重函数的设计通常是一个迭代的过程,需要根据实际情况进行调整和优化。

例如:

W1 = makeweight(33,5,0.5); % 低频段增益33dB, 在5rad/s处增益为0dB,高频段增益0.5dB

W1 =
 
  A = 
            x1
   x1  -0.1313
 
  B = 
       u1
   x1   2
 
  C = 
          x1
   y1  2.133
 
  D = 
        u1
   y1  0.5
 
Continuous-time state-space model.

转换成传递函数形式:

tf(W1)

ans =
 
  0.5 s + 4.332
  -------------
   s + 0.1313
 
Continuous-time transfer function.

通过指定低频增益、高频增益和某些中频增益的幅度来创建连续时间加权函数。

>> p= makeweight(100,[1,3.16],0.1);
>> bode(p)

在低频时增益为40 dB,在高频时滚降至-20 dB。

在低频时增益为-10 dB,在高频时增加到40 dB。指定0 dB交叉频率为10 rad/s。

W1 = makeweight(100,[1 0.5],0.25);
  • Low-frequency gain of 100 (40 dB)

  • 0 dB crossover at 0.5 rad/s

  • High-frequency gain of 0.25 (12 dB)

参考文献:

【1】https://blog.csdn.net/weixin_50892810/article/details/126442249

【2】H无穷回路整形(H-infinity loop-shaping)控制算法Matlab仿真实例:https://zhuanlan.zhihu.com/p/338583087

【3】https://ww2.mathworks.cn/help/control/ref/tunabless.tunabless.html?searchHighlight=tunableSS&s_tid=srchtitle_tunableSS_1

【4】https://ww2.mathworks.cn/help/robust/ref/dynamicsystem.hinfstruct.html

【5】https://ww2.mathworks.cn/help/robust/ref/makeweight.html?searchHighlight=makeweight&s_tid=srchtitle_makeweight_1