# Spatial Contact Force

Model contact between two geometries

• Library:
• Simscape / Multibody / Forces and Torques

• ## Description

The Spatial Contact Force block models the contact between geometries associated with a pair of bodies. You can use the built-in penalty method or custom force laws to model a contact. The Spatial Contact Force block supports a variety of geometries, such as the geometries created directly by multibody blocks or geometries that are created by a third-party CAD software. Some geometries, such as the disk and point cloud, are not able to contact. For more details see the specific block reference pages.

The geometries exported from the File Solid block or Revolved Solid block are convex hull representations that do not accurately capture the shape of true geometries. For example, the image shows the true geometry and convex hull representation of a L-shape geometry exported by the File Solid block. Note that, when modeling contacts, the File Solid block and Revolved Solid block use convex hull representations. However, when computing physical properties, such as mass and inertia, the File Solid block and Revolved Solid block use true geometries.

The image shows how the Spatial Contact Force block models a spatial contact problem. In this case, the contact is between a blue base geometry and a red follower geometry. During the contact, each geometry has a contact frame. The two contact frames are always coincident and located at the contact point. The z-direction of the contact frame is an outward normal vector for the base geometry, but inward normal vector for the follower geometry. During a continuous contact, the contact frame moves around the geometry as the contact point moves.

The block applies contact forces to the geometries at the origin of the contact frame in conformance with Newton's Third Law:

1. The normal force, ${f}_{n}$, which is aligned with the z-axis of the contact frame. This force pushes the geometries apart in order to reduce penetration.

2. The frictional force, ${f}_{f}$, which lies in the contact plane. This force opposes the relative tangential velocities between the geometries.

To specify a normal contact force, in the Normal Force section, set the Method parameter to `Smooth Spring-Damper` or `Provided by Input`. If you select ```Smooth Spring-Damper```, the normal force is:

${f}_{n}=s\left(d\right)\cdot \left(k\cdot d+b\cdot {d}^{\text{'}}\right)$,

where:

• ${f}_{n}$ is the normal force applied in equal-and-opposite fashion to each contacting geometry.

• $d$ is the penetration depth between two contacting geometries.

• ${d}^{\text{'}}$ is the first time derivative of the penetration depth.

• $k$ is the normal-force stiffness specified in the block.

• $b$ is the normal-force damping specified in the block.

• $s\left(d\right)$ is the smoothing function.

The force law is smoothed near the onset of penetration. w is the transition region width specified in the block. When d < w, fn is scaled by a smoothing function that increases continuously and monotonically over the interval [0, w]. The function is 0 when d = 0, the function is 1 when d = w, and the function has zero derivative with respect to d at the endpoints of the interval.

To better detect contacts when the value of the parameter is small, the Spatial Contact Force block supports optional zero-crossing detection. The zero-crossing events only occur when the separation distance changes from positive or zero to negative and vice versa.

Note

The zero-crossing detection of the Spatial Contact Force block is different than the zero-crossing detection of other Simulink® blocks, such as From File and Integrator, because the force equation of the Spatial Contact Force is continuous. For more information of the zero-crossing detection in Simulink blocks, see Zero-Crossing Detection.

The Spatial Contact Force block clips the computed force to be always nonnegative. If the force law gives a negative force, the block applies zero force instead. This happens briefly as the geometries are separating and penetration is about to end. At that point, d is approaching zero and d' is negative. This modification ensures that the contact normal force is always repulsive and never attractive.

To specify a frictional force, in the Frictional Force section, set the Method parameter to `Smooth Stick-Slip`, `Provided by Input`, or `None`. If you select `Smooth Stick-Slip`, the frictional force is always directly opposed to the direction of the relative velocity at the contact point and is related to the normal force through a coefficient of friction that varies depending on the magnitude of the relative velocity:

$|{f}_{f}|=\mu \cdot |{f}_{n}|$,

where:

• ${f}_{f}$ is the frictional force.

• ${f}_{n}$ is the normal force.

• $\mu$ is the effective coefficient of friction.

The effective coefficient of friction is a function of the values of the Coefficient of Static Friction, Coefficient of Dynamic Friction, and Critical Velocity parameters, and the magnitude of the relative tangential velocity. At high relative velocities, the value of the effective coefficient of friction is close to that of the coefficient of dynamic friction. At the critical velocity, the effective coefficient of friction achieves a maximum value that is equal to the coefficient of static friction. The graph shows the basic relationship in the typical case where ${\mu }_{static}$ > ${\mu }_{dynamic}$. In this case, the model is able to approximate stiction with a higher effective coefficient of friction near small tangential velocities. ## Ports

### Geometry

expand all

Geometry port associated with the base geometry.

Geometry port associated with the follower geometry.

### Input

expand all

Physical signal input port that accepts the normal contact force magnitude between two geometries. The input signal is a scalar that specifies the normal contact force. The block clips negative values to zero.

#### Dependencies

To enable this port, in the Normal Force section, set Method to ```Provided by Input```.

Physical signal input port that accepts the frictional force between two geometries. The input signal is a 2-by-1 vector that specifies the x and y components of the applied frictional force resolved in the contact frame.

#### Dependencies

To enable this port, in the Frictional Force section, set Method to ```Provided by Input```.

### Output

expand all

Physical signal output port that provides the contact status of the base and follower geometries. The geometries are in contact if the value of the signal is 1 or separated if the value of the signal is 0.

#### Dependencies

To enable this port, in the Sensing section, select Contact Signal.

Physical signal output port that provides the separation distance between two geometries.

If the geometries are not penetrating each other, the signal has a nonnegative value that equals the minimum distance between the two geometries. If the geometries are penetrating, the signal has a negative value that equals the penetration depth.

#### Dependencies

To enable this port, in the Sensing section, select Separation Distance.

Physical signal output port that provides the magnitude of the normal contact force between two geometries.

#### Dependencies

To enable this port, in the Sensing section, select Normal Force Magnitude.

Physical signal output port that provides the magnitude of the frictional contact force between the two geometries.

#### Dependencies

To enable this port, in the Sensing section, select Frictional Force Magnitude.

Physical signal output port that provides the z-component of the relative velocity between the contact points of the base and follower geometries. The output value is resolved in the contact frame.

#### Dependencies

To enable this port, in the Sensing section, select Relative Normal Velocity.

Physical signal output port that provides the x and y components of the relative velocity between the contact points of the base and follower geometries. The output value is a 2-by-1 vector resolved in the contact frame.

#### Dependencies

To enable this port, in the Sensing section, select Relative Tangential Velocity.

Physical signal output port that provides a 3-by-3 rotation matrix. The matrix maps vectors in the contact frame to vectors in the reference frame of the base geometry. The output signal is resolved in the reference frame associated with the base geometry.

#### Dependencies

To enable this port, in the Sensing > Contact Frame section, select Base Rotation.

Physical signal output port that provides the coordinates of the origin of the contact frame resolved in the reference frame of the base geometry. The output signal is a 3-by-1 vector resolved in the reference frame associated with the base geometry.

#### Dependencies

To enable this port, in the Sensing > Contact Frame section, select Base Translation.

Physical signal output port that provides a 3-by-3 rotation matrix that maps vectors in the contact frame to vectors in the reference frame of the follower geometry. The output signal is resolved in the reference frame associated with the base geometry.

#### Dependencies

To enable this port, in the Sensing > Contact Frame section, select Follower Rotation.

Physical signal output port that provides the coordinates of the origin of the contact frame resolved in the reference frame of the follower geometry. The output signal is a 3-by-1 vector resolved in the reference frame associated with the base geometry.

#### Dependencies

To enable this port, in the Sensing > Contact Frame section, select Follower Translation.

## Parameters

expand all

### Normal Force

Methods to specify the normal contact force, specified as either `Smooth Spring-Damper` or ```Provided by Input```.

Select `Smooth Spring-Damper` to use the modified spring-damper method to model the normal contact force, or select `Provided by Input` to input a custom force as the normal contact force.

Resistance of the contact spring to geometric penetration, specified as a scalar. The spring stiffness is a constant during the contact. The larger the value of the spring stiffness, the harder the contact between the geometries.

#### Dependencies

To enable this parameter, in the Normal Force section, set Method to ```Smooth Spring-Damper```.

Resistance of the contact damper to motion while the geometries are penetrating, specified as a scalar. The damping coefficient is a constant value that represents the lost energy from colliding geometries. The larger the value of the damping coefficient, the more energy is lost when geometries collide and the faster the contact vibrations are dampened. Use a value of zero to model perfectly elastic collisions, which conserve energy.

#### Dependencies

To enable this parameter, in the Normal Force section, set Method to ```Smooth Spring-Damper```.

Region over which the spring-damper force raises to its full value, specified as a scalar. The smaller the region, the sharper the onset of contact and the smaller the time step required for the solver. Reducing the transition region improves model accuracy while expanding the transition region improves simulation speed.

#### Dependencies

To enable this parameter, in the Normal Force section, set Method to ```Smooth Spring-Damper```.

### Frictional Force

Methods to specify the frictional force, specified as ```Smooth Stick-Slip```, `None`, or ```Provided by Input```.

Select `None` to omit friction, select `Smooth Stick-Slip` to use the modified stick-slip method to compute the frictional force, or use `Provided by Input` to input a custom frictional force.

Ratio of the magnitude of the frictional force to the magnitude of the normal force when the tangential velocity is close to zero, specified as a positive scalar.

This value is determined by the material properties of the contacting geometries. The value of this parameter is often less than one, although values greater than one are possible for high-friction materials. In most cases, this value should be higher than the coefficient of dynamic friction.

#### Dependencies

To enable this parameter, in the Frictional Force section, set Method to ```Smooth Stick-Slip```.

Ratio of the magnitude of the frictional force to the magnitude of the normal force when the tangential velocity is large, specified as a nonnegative scalar.

This value is determined by the material properties of the contacting geometries. The value of this parameter is often less than one, although values greater than one are possible for high-friction materials. In most cases, this value should be less than the coefficient of static friction.

#### Dependencies

To enable this parameter, in the Frictional Force section, set Method to ```Smooth Stick-Slip```.

Velocity that determines the blending between the static and dynamic coefficients of friction, specified as a scalar.

When the critical velocity is equal to the magnitude of the tangential velocity, the effective coefficient of friction is equal to the value of the Coefficient of Static Friction parameter. As the magnitude of the tangential velocity increases beyond the specified critical velocity, the effective coefficient of friction asymptotically approaches the value of the Coefficient of Dynamic Friction parameter.

#### Dependencies

To enable this parameter, in the Frictional Force section, set Method to ```Smooth Stick-Slip```.

### Sensing

Select this parameter to enable the con port.

Select this parameter to enable the sep port.

Select this parameter to enable the fn output port.

Select this parameter to enable the ffrm port.

Select this parameter to enable the vn port.

Select this parameter to enable the vt port.

Select this parameter to enable the Rb port.

Select this parameter to enable the pb port.

Select this parameter to enable the Rf port.

Select this parameter to enable the pf port.

### Zero-Crossings

Select to detect the start and end of each contact as zero-crossing events. The zero-crossing events occur when the separation distance changes from positive or zero to negative and vice versa.

## Version History

Introduced in R2019b