RectangleRectangle_Contact-矩形面和矩形面接触模型
1) 模型路径
TYContact.SurfaceContact.RectangleRectangle_Contact
2) 图标设计
矩形面和矩形面接触模型
3) 功能描述
矩形面和矩形面接触模型是用来模拟包含矩形平面的实体之间相互接触碰撞的面接触模型,该模型通过两个矩形平面的几何参数和当前时刻的位姿来判断两个矩形平面的接触状态,计算潜在接触点,计算接触时两物体间的法向力和摩擦力。该模型可以用于任意包含矩形平面的几何体典型模型之间的面接触计算和复杂模型的切割简化计算。
4) 基本假设
接触体积远小于物体体积,接触时的区域可简化为潜在接触点进行分析;
接触穿透深度相对于物体长度是一个小量参数;
摩擦力计算采用基于速度的接触摩擦模型,遵守库仑定律;
接触法向力根据赫兹理论简化为基于罚函数的非线性阻尼弹簧计算;
在接触力模块中,两多体接口的位置均位于接触表面的几何中心位置;
物体的材料属性通过三方面来体现:物体密度、接触力参数、摩擦力参数。
5) 模型接口
接口类型 | 接口 | 变量 | 范围/单位 | 数据维度 | 数据类型 | 描述 |
多体接口 | frame_a | r_0 | m | [3] | Real | 位移 |
R | - | [3,3] | -- | 姿态模型 | ||
f | N | [3] | Real | 力向量 | ||
t | Nm | [3] | Real | 力矩向量 | ||
多体接口 | frame_b | r_0 | m | [3] | Real | 位移 |
R | - | [3,3] | -- | 姿态模型 | ||
f | N | [3] | Real | 力向量 | ||
t | Nm | [3] | Real | 力矩向量 | ||
布尔接口 | contact | output | -- | [1] | Boolean | 接触状态 |
6) 模型参数
tab参数 | group参数 | 参数名称 | 默认值 | 单位 | 参数描述 |
表面属性 | 表面1 | length_Rec1 | 0.1 | m | 矩形表面长度 |
width_Rec1 | 0.1 | m | 矩形表面宽度 | ||
lengthDirection_ Rec1 | {1, 0, 0} | 1 | 长度方向 | ||
widthDirection_ Rec1 | {0, 0, 1} | 1 | 宽度方向 | ||
表面2 | length_Rec2 | 0.2 | m | 矩形表面长度 | |
width_Rec2 | 0.2 | m | 矩形表面宽度 | ||
lengthDirection_Rec2 | {1, 0, 0} | 1 | 长度方向 | ||
widthDirection_Rec2 | {0, 0, 1} | 1 | 宽度方向 | ||
接触力 | 接触状态 | ContactOut | true | -- | 接触检测的布尔值输出 |
exact | true | -- | =true表示精确接触点移动;=false表示经过滤波的移动 | ||
f | 10000 | Hz | 滤波频率,用于过滤接触点的移动 | ||
法向力 | k | 1e+9 | N/m | 用于计算法向力的弹簧(刚度)系数 | |
d | 100000 | N.s/m | 用于计算法向力的阻尼系数 | ||
n1 | 2.2 | -- | 刚度指数 | ||
n2 | 0 | -- | 压痕指数 | ||
p_max | 0.001 | m | 最大侵入深度 | ||
摩擦曲线 | mue_k | 0.03 | 1 | 动摩擦系数 | |
mue_s | 0.04 | 1 | 静摩擦系数 | ||
mue_r | 0 | 1 | 滚动摩擦系数 | ||
k_v | 0 | s2/m | 粘性摩擦的梯度,摩擦力正比于相对速度的系数 | ||
v_e1 | 0.01 | m/s | 静摩擦的极限速度 | ||
v_e2 | 0.1 | m/s | 动摩擦的极限速度 | ||
动画 | 表面动画 | animation1 | true | -- | 为真时,表面1动画显示 |
animation_BCS1 | true | -- | 为真时,表面1坐标系动画显示 | ||
color1 | {0, 128, 255} | -- | 表面1颜色 | ||
animation2 | true | -- | 为真时,表面2动画显示 | ||
animation_BCS2 | true | -- | 为真时,表面2坐标系动画显示 | ||
color2 | {255, 128, 0} | -- | 表面2颜色 | ||
接触点动画 | animation | true | -- | = true表示显示接触点动画 | |
radiusContactPoint | 0.0025 | m | 接触点显示动画的半径 | ||
colorContactPoint1 | {0, 180, 0} | -- | 刚体1上接触点的颜色 | ||
colorContactPoint2 | {255, 0, 255} | -- | 刚体2上接触点的颜色 |
7) 模型变量
变量类型 | 变量名称 | 单位 | 类型 | 描述 |
结果变量 | contact | -- | Boolean | 接触状态 |
contact_Friction[4, 3] | N | Real | 接触摩擦力 | |
contact_Force[4, 3] | N | Real | 接触法向力 | |
contact_NormalForce[4, 3] | N | Real | 接触力合力 | |
penetration[4] | m | Real | 穿透深度 |
8) 参数设置
1) 表面属性中,几何参数均为非0数值,几何参数和方向向量应该与外部的刚体属性保持一致;
2) 接触刚度和阻尼、最大侵入深度均为正值,阻尼系数推荐小于刚度系数的1%;
3) 动画设置中,接触面的动画和坐标系显示,设置后可以和外部刚体的动画重合,在验证正确性后,在仿真时推荐在接触模型中设置表面,关闭刚体动画显示;
4) 接触点(矩形角点)动画为球体,只显示动画不参与计算,其数值参考表面属性设置,避免接触点显示过大。
5) 在计算过程中可能会出现共面无法继续计算的情况,需要按照实际情况对接触面做一个小量角度的偏转(推荐值为0.0001deg)。
9) 模型原理
(1). 潜在接触点检测
当两个接触表面均为矩形平面时,其接触检测简图如下:
接触检测简图
已知矩形平面1和矩形平面2的几何中心位置和姿态(图中G1点和G2点分别对应两个接口frame_a和frame_b),目的为计算当前时刻可能发生接触的位置(潜在接触点P1和P2,暂时只考虑其中一个角点A)和是否发生接触。
当矩形平面1的角点A在矩形平面2的投影点B位于矩形平面2区域内(包括边)时,只需要计算角点A到矩形平面2的垂直距离。当矩形平面1的角点A在矩形平面2的投影点B位于矩形平面2区域外时,将角点A沿着矩形平面1的长度方向和宽度方向移动,可以分别得到位于长边和宽边上的潜在接触点P1和P2,点P1和P2的投影点均位于矩形平面2的边上。
最后,通过比较潜在接触点P1和P2在矩形平面2体坐标系下的坐标值来判断接触是否发生,长度方向的接触条件:1,接触点在高度方向的值小于等于0;2,接触点在高度方向的值大于最大侵入深度;3,接触点在长度方向的值小于矩形2的半长;4,接触点在宽度方向的值小于矩形2的半宽。
接触状态为真时,计算接触力和摩擦力,接触状态为假时,接触力和摩擦力均为0。
(2). 接触力计算
两相互作用刚体的接触力可以分为法向接触力和摩擦接触力,可以分别进行计算,其对应公式如下:
a) 接触法向力计算
在接触模型中,法向力采用罚函数进行计算,其模型示意图如下所示:
其中,
I、J 分别为两个物体的名字
x 为球心到接触点的距离。
x1为球心到球外表面的距离。
d 为最大穿透深度。
接触力的计算公式为:
当 x > x1 时,没有穿透发生,接触法向力为 0。
当 x < x1 时,穿透发生在 J 物体的接触点上,法向力大于 0,穿透距离p = x1 -x 。
当 p < d,穿透阻尼系数使用三次阶跃函数计算。当 p > d,穿透阻尼系数为 dmax。
b) 接触摩擦力计算
在该模型中可以选择是否计算接触摩擦力,如果计算接触摩擦力,使用相对简单的基于速度的接触摩擦模型计算接触摩擦力。
摩擦模型计算图示在此模型中的参数如下所示:
V :接触点的滑动速度
Vs:静摩擦转换速度
Vd:动摩擦转换速度
μs:静摩擦系数
μd:动摩擦系数
具体摩擦系数参数设置与两接触材料的类型有关。