How can I calculate interaction force xyz components in Simscape Multibody?

20 Ansichten (letzte 30 Tage)
Hello everyone.
I'm using Matlab R2022a and Simscape Multibody library to model a 1DOF manipulator like in the picture below. The manipulator has a small ball on its tip and it is interacting with a box. In my simulation, a manipulator is starting at origin and moves to the box. The manipulator then hits the box and stops moving because it cannot go trough the box. Both geometries are connected by a Spatial Contact Force.
An origin (0,0,0) is represented with a yellow ball in the picture below. I am using a prismatic joint (1DOF) to move the manipulator, and the manipulator can move in the direction given in the picture below. I know that the normal interaction force Fn is aligned with the z-axis of the contact plane between the ball and the box and has a direction shown in the picture below.
What I'm trying to do is to calculate the interaction force components [Fx,Fy,Fz] given the magnitude and the direction of the normal force Fn. The Spatial Contact Force block can give me the information about the magnitude of Fn and rotational and translational transformations between contact plane and base and follower geometry.
The interaction force components [Fx,Fy,Fz] that I am tryting to obtain are shown in the picture below. Obviously, the Fz component magnitude in this particular case has a zero value, but I am trying to solve the problem for general case. All components [Fx,Fy,Fz] are mutually orthogonal.
The magnitude and direction of all interaction force components [Fx,Fy,Fz] will be useful for calculating the control input in my control algorithm for manipulator with arbitrary degrees of freedom (n-DOF).
So, any help in this matter will be very appreciated.

Antworten (1)

Steve Miller
Steve Miller am 12 Mär. 2023
You can use additional quantities reported by the Spatial Contact Force block to obtain the components of the force in the frames you need.
  • The Spatial Contact Force block reports the normal force and friction force in the contact frame.
  • Normal force is along the z-axis of the contact frame
  • Friction force is in the x-y plane
  • Friction force directly opposes the relative tangential velocity at the contact point
  • Relative tangential velocity x- and y- components can be reported by the Spatial Contact Force block
Once you have the components of the forces in the contact frame, you can use the rotation matrices to transform those to the base frame of the Spatial Contact Force block or the Follower frame of the Spatial Contact Force block. If you need the results in World frame, you will need to use another rotation matrix to transform the forces yet again. That rotation matrix can be obtained from the Transform Sensor block.
--Steve
  1 Kommentar
Vedad Halimic
Vedad Halimic am 12 Mär. 2023
Thanks for the previous answer. To make sure I properly understood your answer, I would like to ask you some more questions:
  • Does the contact force vector in general have components like this: its x component is the x component of the friction force, its y component is the y component of the friction force and its z component is the normal force?
  • Let's say, for example, that relative tangential velocity x has a positive value and relative tangential velocity y has a negative value - if friction force directly opposes the relative tangential velocity at the contact point, would that mean that x component of the friction force has a negative value and that y component of the friction force has a positive value?
  • How can I calculate the x and y components of the friction force? Is it:
- x component of the friction force vector
- y component of the friction force vector
where ξ is the angle of the friction force vector (that lies in the xy contact plane) with respect to the positive x-axis of the contact frame, while is the relative tangential velocity y and is the relative tangential velocity x?
  • For another example, let's say that friction force is disabled in the Spatial Contact Force block. In case of interaction between bodies, it means that only normal force would have a non-zero value and that friction force would be zero in the simulation. If I do a proper transformation from contact frame to the world frame, should only one component (exclusively x, y or z component) of the contact force in the world frame have a non-zero value, while the other components should be equal to zero?
I hope you can correct me if I have a wrong assumption. If I want to properly use Spatial Contact Force block, I need to understand how can I use the information provided by that block.

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by