CylinderCircle_Contact – 圆柱和圆形平面接触模型
1) 模型路径
TYContact.LineContact.CylinderCircle_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 | diameter_Cy | 0.025 | m | 圆柱体底面直径 |
length_Cy | 0.1 | m | 圆柱长度 | ||
lengthDirection_Cy | {1, 0, 0} | 1 | 长度方向 | ||
diameterDirection_Cy | {0, 0, 1} | 1 | 宽度方向 | ||
表面2 | diameter2 | 0.2 | m | 圆形平面长度 | |
lengthDirection2 | {1, 0, 0} | 1 | 长度方向 | ||
diameterDirection2 | {0, 0, 1} | 1 | 宽度方向 | ||
接触力 | 接触状态 | ContactOut | true | -- | 接触检测的布尔值输出 |
exact | true | -- | =true表示精确接触点移动;=false表示经过滤波的移动 | ||
f | 10000 | Hz | 滤波频率,用于过滤接触点的移动 | ||
法向力 | k | 1000000 | N/m | 用于计算法向力的弹簧(刚度)系数 | |
d | 1000 | N.s/m | 用于计算法向力的阻尼系数 | ||
n1 | 1.5 | -- | 刚度指数 | ||
n2 | n1 | -- | 压痕指数(indentation exponent) | ||
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 | {255, 128, 0} | -- | 表面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[3] | N | Real | 接触摩擦力 | |
contact_Force[3] | N | Real | 接触法向力 | |
contact_NormalForce[3] | N | Real | 接触力合力 |
8) 参数设置
1) 表面属性中,几何参数均为非0数值,几何参数和方向向量和外部的刚体属性需要保持一致;
2) 接触刚度和阻尼、最大侵入深度均为正值,阻尼系数推荐小于刚度系数的1%;
3) 动画设置中,接触面的动画和坐标系显示,设置后可以和外部刚体的动画重合,在验证正确性后,在仿真时推荐在接触模型中设置表面,关闭刚体动画显示;
4) 接触点动画为球体,只显示动画不参与计算,其数值参考表面属性设置,避免接触点显示过大。
9) 模型原理
1)潜在接触点检测
当两个接触表面分别为圆柱体和圆形平面时,其接触检测简图如下:
接触检测简图
已知圆柱体和圆形平面的质心/几何中心的位置和姿态(图中G点和O点分别对应两个接口frame_a和frame_b),目的为计算当前时刻可能发生接触的位置(潜在接触点P1和P2,暂时只考虑其中一个底面)和是否发生接触。
首先,测量圆柱体上下底面圆心位置A点或B点相对于圆形平面中心的位置(在O点处的局部坐标系下),根据圆柱体轴线的方向和圆形平面的法线方向计算其夹角,通过该角度旋转和从A点的平移,可以得到位于圆柱体底面上的潜在接触点P1的位置。
其次,测量圆柱体底面上的潜在接触点P1的位置在圆形平面中心局部坐标系下的位置坐标,得到投影到圆形平面所在局部坐标系的三个坐标分量。通过比较圆形平面的几何尺寸和该投影点的位置,确定位于圆形平面上的潜在接触点P2的位置。如果投影点的位置在圆形平面内,则该投影点为潜在接触点,否则圆形平面的圆边上与投影点最近的点为潜在接触点。
最后,通过比较位于圆柱体底面上的潜在接触点P1在圆形平面体坐标系下的坐标值来判断接触是否发生,如果高度方向的值小于0且长度方向和宽度方向的平方和小于圆形平面半径的平方,圆柱体和圆形平面发生接触,其主要公式如下所示:
contact = (dv_rel_op <= 0) and (sqrt((dl_rel_op) ^ 2 + (dw_rel_op) ^ 2) <= r[1] + 0.001);
其中
· contact为接触状态变量,为布尔量
· dv_rel_op为潜在接触点P1在圆形平面坐标系下的高度方向的值
· dl_rel_op为潜在接触点P1在圆形平面坐标系下的长度方向的值
· dw_rel_op为潜在接触点P1在圆形平面坐标系下的宽度方向的值
· r[1]为圆形表明的半径
接触状态为真时,计算接触力和摩擦力,接触状态为假时,接触力和摩擦力均为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:动摩擦系数
具体摩擦系数参数设置与两接触材料的类型有关。