How can I calculate interaction force xyz components in Simscape Multibody?
10 次查看(过去 30 天)
显示 更早的评论
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.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1311375/image.png)
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.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1311380/image.png)
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.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1311385/image.png)
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.
回答(1 个)
Steve Miller
2023-3-12
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
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Assembly 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!