The LuGre Friction Model
文章目录@[toc]一 摩擦力的分类二 LuGre摩擦力模型三 LuGre的matlab实现reference一 摩擦力的分类stiction:静态摩擦力:非线性变化,符号是跟方向有关Columb:库伦摩擦力:常值,符号是跟方向有关Viscous:粘性摩擦力:线性变化二 LuGre摩擦力模型LuGre模型将静态摩擦力,库伦摩擦力,粘性摩擦力糅合到一起,依据速度值来计算出一个综合的摩擦力。三 LuG
·
一 摩擦力的分类
- stiction:静态摩擦力:非线性变化,符号是跟方向有关
- Columb:库伦摩擦力:常值,符号是跟方向有关
- 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
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献2条内容
所有评论(0)