Simulation of an inclined plane using Spatial Contact Force

10 views (last 30 days)
Hello,
I currently try to simulate a contact area between two bodies. For the beginning, I created a simple model with two blocks. The block "Ground" is rotated from horizontal to an angle using a revolute joint. The block "block" is laying on the "Ground". The planar joint is used to hold the block on the x-z-plane.
My problem: No matter how small I set the angle of the ground or how high I set the friction of the spatial contact force, the block will always slide. In reality, I would not expect the block to slide for small angles. I also tried to change the other values like stiffness, damping or critical velocity, but it seems to be impossible to prevent to block from sliding. Where is my mistake? Is there another way to simulate the contact between the bodies which is more realistic? Thanks in advance.

Answers (1)

Altaïr
Altaïr on 8 Jul 2025
Hey @Aaron,
The attached screenshot indicates that the sliding block is connected to the world frame using a "Planar Joint". Here are a couple of observations regarding this setup:
  1. Positioning the sliding block relative to the top surface of the base becomes more straightforward with a "Planar Joint".
  2. Further, using a "Planar Joint" results in the normal (contact) force being zero, as shown in the image below.
The presence of a normal force is essential for calculating friction. To address this, replacing the Planar Joint with a Cartesian Joint can be helpful. It is important to note, though, that the steady-state velocity will always reach a nonzero value, as illustrated in the following image.
According to the documentation for the Spatial Contact Force block: "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." The effective coefficient of friction changes as depicted below:
When the velocity is zero, the effective coefficient of friction is also zero and increases with velocity during the initial phase, up to the critical velocity. For a block sliding on an inclined base, this means there will always be a sliding velocity where the sliding component of the block's weight equals the frictional force.
To simulate a scenario involving simple friction—where the sliding block remains stationary up to a specific inclination angle—the frictional force can be calculated manually and provided as input to the Spatial Contact Force block. Here is a simple example for calculating the frictional force from the normal force:
I have attached the models for your reference.
For further details on the Spatial Contact Force block, the following documentation page offers comprehensive information:
  1 Comment
Aaron
Aaron on 8 Jul 2025
Thank you very much for your answer!
The manual friction calculation seems to solve my problem pretty well :)

Sign in to comment.

Products


Release

R2024b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!