在这里插入图片描述


一 摩擦力的分类

在这里插入图片描述

  1. stiction:静态摩擦力:非线性变化,符号是跟方向有关
  2. Columb:库伦摩擦力:常值,符号是跟方向有关
  3. Viscous:粘性摩擦力:线性变化

二 LuGre摩擦力模型

2.1 LuGre的原型:

在这里插入图片描述

Lugre的物理模型是将摩擦力看成两个都有毛的平面接触时的相互力

2.2 LuGre的曲线轨迹

在这里插入图片描述

在这里插入图片描述
LuGre模型将静态摩擦力,库伦摩擦力,粘性摩擦力糅合到一起,依据速度值来计算出一个综合的摩擦力。


三 LuGre的matlab实现

3.1 计算的公式

在这里插入图片描述
因为公式里面出现了z以及z的导数dz/dt,因此计算有积分的操作。


四 不同速度下的LuGre表现

4.1 几乎静止下的LuGre表现

此状态下,一旦速度方向发生改变,摩擦力会发生越阶效果(静态摩擦力),如果在此区间内速度f方向不变,则几乎保持在一定值(库伦摩擦力)
在这里插入图片描述

此种状态下的计算,没有使用积分操作

sigma_0 = 1e5;
sigma_1  = sqrt(1e5);
sigma_2  = 0.4;
Fc = 1;
Fs = 1.5;
vs = 0.001;

%% Draw the overall friction force at steady state condition.
%  This is not shown in the paper

v = -0.005:0.0001:0.005;

Fss = lugref_ss(v, Fc, Fs, vs, sigma_2);

figure
plot(v, Fss)
grid
xlabel('Velocity (m/s)')
ylabel('Friction force (N)')
title('Friction force at steady state condition')

%% Zoom into certain velocity to see its transient behaviour 
%  This is not shown in the paper. We here want to demonstrate that the 
%  LuGre friction model does have a transient behaviour.
function Fss = lugref_ss(v, Fc, Fs, vs, sigma_2)
    r = -(v/vs).^2;
    
    % This equation is not lebaled on the paper, it is in the bottom left 
    % of the 2nd page 
    Fss = Fc*sign(v)+ (Fs - Fc) * exp(r) .* sign(v) + sigma_2 * v;      
end

在这里插入图片描述

4.2 一定速度下的LuGre表现

一开始的时候,摩擦力跟速度成线性比例,最后保持在一定的常值上
在这里插入图片描述

ts = 1e-3;
time_span = 20;
t_sol = 0 : ts : time_span;

v = 0.002;
z = 0;


% Note, this is forward euler integration of the ODE for z. - Jason Nicholson
F = nan(size(t_sol));
for j = 1 : length(t_sol)
    [F(j), z] = lugref(z, v, Fc, Fs, vs, sigma_0, sigma_1, sigma_2, ts);
end

figure
plot(t_sol, F);
grid
xlabel('Time (s)')
ylabel('Friction force (N)')
title('Friction force for v = 0.002 m/s')
xlim([0 0.1]);

%% Apply sinusoidal velocity and measure the friction force (Fig. 3)
% The input to the friction model was the velocity which was changed
% sinusoidally around an equilibrium. The resulting friction force is given 
% as a function of velocity .
function [F, z] = lugref(z, v, Fc, Fs, vs, sigma_0, sigma_1, sigma_2, ts)
    r = -(v/vs).^2;
    g_v = (Fc + (Fs - Fc) * exp(r)) ./ sigma_0;          % eq. 4
    z_dot = v - abs(v) .* z ./ g_v;                      % eq. 1 
    
    % note, this is forward euler integration. Your results depend heavily on the size of ts. - Jason Nicholson
    z = z + z_dot.* ts;

    F = sigma_0 * z + sigma_1 * z_dot + sigma_2 * v;    % eq. 3
end

注意,上面的实现,是使用简单的欧拉法来实现积分,很依赖积分区间的大小,比如我将积分时长改为ts=0.01,则是完全不同的效果
在这里插入图片描述


reference

[1] https://github.com/auralius/LuGre
[2] A new Model for control of systems with friction

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐