File Exchange

image thumbnail

Simscape Multibody Contact Forces Library

version 4.1.0.1 (14.2 MB) by Steve Miller
Contact force models and force laws for use with Simscape Multibody (formerly SimMechanics).

258 Downloads

Updated 27 Sep 2018

View License

This library contains contact force models and force laws for multibody modeling in Simscape Multibody. They cover 2-dimensional and 3-dimensional problems with or without friction. More than 35 example models are provided, including basic contact force examples (bouncing ball) and more complex applications such as a cam-follower mechanism, differential drive robot, and a robot arm with a gripper. Both linear and nonlinear force laws are included, and you can easily add your own custom force law.

Please read the README.txt file to get started.

See how to use these forces to model a cam-follower mechanism:
https://www.mathworks.com/videos/modeling-contact-forces-in-a-cam-follower-94291.html

Learn more about multibody simulation with Simscape Multibody by watching this webinar
https://www.mathworks.com/videos/multibody-simulation-with-simmechanics-81877.html

Find other Simscape examples by searching posts for the keyword "physical modeling"
https://www.mathworks.com/matlabcentral/fileexchange/?term=%22physical+modeling%22

Learn more about MathWorks Simscape Products:
https://www.mathworks.com/physical-modeling/

You may reuse this content, with or without modification, in your work.
Please follow the conditions of the license file and use the following citation:
[1] Miller, Steve (2017), Simscape Multibody Contact Forces Library (https://www.mathworks.com/matlabcentral/fileexchange/47417) MATLAB Central File Exchange. Retrieved on <date you downloaded submission>

Comments and Ratings (117)

xiang WANG

I am do some simulation about quadruped robot. I want to set friction coefficient infinite. How can I realize? Thank you !

meysam esf

Hello Steve,
I am working on a walking robot.
can you please send me the library for Matlab 2017b?
Email: meysam.esfandiarfar@gmail.com
Best regards

Yuchen Xu

Hi Steve,
Can I also have the library for 2017a and 2017b?
email: yxu68@illinois.edu
Thanks!

Steve Miller

Hi Yuchen - is it a diagnostic concerning rigidly connected ports? Be sure to see this MATLAB Answers post: https://www.mathworks.com/matlabcentral/answers/378561-rigidly-connected-port-error-with-simscape-multibody-contact-forces-library. I will contact you separately for more information.

Yuchen Xu

Hi Steve,
I made a model similar to the two wheel robot model, I connected two of this together, but I met a very strange bug about setting up the initial condition, and I can't figure out why. Is there any way I can get some help on this?
Thanks!

tried using the library availble. but $bdroot issue is there in sphere to plane force. cross product and force law blocks are missing(same as Ankush).

Hello Steve,
can you please send me the library for Matlab 2017b?
kalanaratnayake95@gmail.com
Thanks so much

Ankush Singhi

When I run the walkingRobot_step3.slx, I receive the following error:
'$bdroot' is not a valid model name because it is not a valid MATLAB function name.

What is the solution for this?

Thanks in advance!

Boyuan Deng

Hello Steve,
can you please send me the library for Matlab 2017b?
dboyuan@purdue.edu
Thanks so much

Hi Steve,
I'm using the MATLAB R2017a for simulating the walking robot. Could use please share the library for this version?
email : naushad.rahman@hotmail.com

Regards,
Naushad Rahman

manu aatitya

hello Steve,
Can you please send me the library for Matlab 2017b ?
My email id is ermanuaatitya@gmail.com
Thanks in advance.

Hi Steve,
Can you please send me the library for Matlab 2017b?
nicolas.sepulveda.h@ing.uchile.cl
Thanks

Philipp Heath

Hello Steve,
can you please send me the library for Matlab 2017b?
philkra@web.de
Thanks

Hello Steve,
can you send me the version for Matlab2017b, please?

kleebergerfr56965@th-nuernberg.de
Thanks.

Guanlin

Hello Steve,

can you send me the version of Matlab 2017b, please? Thank you!

Best regards,
Guanlin Gao
gao@ims.tu-darmstadt.de

h faghihimani

Hello Steve,
Would you please send me the version for R2016a?
hfaghihimani@gmail.com
Thanks.

Dan Miller

I have a question regarding the double pendulum model. In the block "Friction_03_Double_Pendulum_Constraint/Stick-Slip Friction 1D", the x-direction of the constraint force is being selected, but shouldn't this be the norm of the x and y directions together?

Steve Miller

daessc is a new solver in R2018b specially designed for systems of differential algebraic equations. It is targeted at robustness, not speed. In some cases, it will be slower because it performs extra computation to ensure robust simulation (convergence). For pure multibody systems with contact forces, ode15s and ode23t are likely to be faster.

zy han

zy han (view profile)

Hi Steve,
Are there differences between the solver ode15s and daessc for this library? I find that the latter one is slower.

Hello Steve,
can you send me the version for Matlab2017b, please?
rizmand@gmail.com

Thanks.

Nike Borzov

Hello Steve,
Can you send me the latest version for Matlab 2016b, please?
Best regards,
Nick

bidls@rambler.ru

Can you please send me the version for Matlab 2017b? Thanks a lot.
philkra@web.de

Nakul Yadav

Hey Steve,
Could you send me the MATLAB 2017a version at nakul.bundi@gmail.com
Thanks a lot.

Hi Steve,
I'm using the MATLAB R2017a for simulating the walking robot. Could use please share the library for this version?
email : kcvignesh693@gmail.com

Regards,
Vignesh

Eric

Eric (view profile)

Qianyu Zhou

Qianyu Zhou

Hi Steve,
thanks for this library!
I'm using MATLAB R2016a. Could you share the library with me for this version?
my email: qianyu_zhou2016@163.com Thank you so much.

Amitoj Battu

Hey Steve,
Could you send me the MATLAB 2015a version at a.s.battu@gmail.com
Thanks a lot.

Elkin Veslin

Hi Steve, many thanks for the Library!

Please, Can you Provide me with a Library Version for Matlab 2017a?
My email is eyveslin@gmail.com
Have a good day, and thank you.

Hii Steve,
Could you please send me the MATLAB R2016b version please, this library is not really compatible with the version of MATLAB I'm using. my email: saisudhirchalavadi@gmail.com Thank You.

Ruth Leskovar

Hi Steve,
thanks for this library! I have two questions about and would be happy about help ;)
1. I'm using MATLAB R2016a. Could you share the library with me for this version?
2. I'm trying to simulate a human knee joint using Simscape. I'm using stl files for the geometries of the bones and I would like to add contact forces in order that they do not penetrate each other anymore. Is this possible using contact laws? Or is there a better way like change the parameters in the joint? I am struggling with it because I don' t know how to calculate the interpenetration between the geometries.
Would be great if you have some advice for me. Thank you very much in advance!

cindy lemoine

Figured it out :)

cindy lemoine

Steve-I have looked at the example you provided. I can t see what I am doing wrong. can I send my model to you?

Steve Miller

Hi Cindy - look at example model Friction_08_Disks_and_Ring to see the force active inside and outside the ring. The ring angle can be specified up to the precision of MATLAB, so 0.1 degrees is fine. --Steve

cindy lemoine

Hi Steve
I am having issues with the ring to circle contact force. It seems as if it only works with circles in side the ring and not externally. Also I was wondering if the ring angle resolution could be changed to allow adjustments of .1 degrees. I am trying to simulate mechanical clock movement and I am using the ring on my anchor

Aditya Jain

Hi Steve, can you please share the contact force library for 2017a version.

Steve Miller

Hi Nikolaos -- please provide me your email address and I will email you the R2015a version directly. Click on my name above to access my profile page within MATLAB Central, and then click on the "Contact" button that appears below my name to send me your email address. --Steve

would it be possible for you steve to please send to my email the r2015a contact library?
thank you in advance

Steve Miller

Hi Guessam -- please provide me your email address and I will email you the R2017a version directly. Click on my name above to access my profile page within MATLAB Central, and then click on the "Contact" button that appears below my name to send me your email address.

Unfortunately, the File Exchange does not permit submissions of over 20MB, and with all the examples I can only save 2 releases worth in the zip file. I have versions of library for each release all the way back to R2015a, so get me your email and I will send it.

--Steve

guessam ali

Hi, how to add Contact Forces Library in simscape multibodysuch that i get Matlab ver2017a

Steve Miller

Hi Utku -- please provide me your email address and I will email you the R2015b version directly. Unfortunately, the File Exchange does not permit submissions of over 20MB, and with all the examples I can only save 2 releases worth in the zip file. I have versions of library for each release all the way back to R2015a, so get me your email and I will send it.
--Steve

Hi Steve,

Thank you for this wonderful library. Could you please send me the 2017A version? My email id is geet.deogaonkar@gmail.com.
Thank you!

Utku gun

Hi Steve I am trying to simulate a balance robot but I need a 2015b version can you help?

Steve Miller

Hi Mostafa - please provide me your email address and I will email you the R2016b version directly. Unfortunately, the File Exchange does not permit submissions of over 20MB, and with all the examples I can only save 2 releases worth in the zip file. I have versions of library for each release all the way back to R2015a, so get me your email and I will send it.
--Steve

Mostafa Hazem

Mostafa Hazem

Would you re-uploud 2016b version please?

Pratin Naik

Hey Steve,
Can you send me a copy for ver 17a?

Thanks,
Pratin

SImone

SImone (view profile)

Seems very promising!
Is it possible to have a R2017a version?

This looks great. I don't see to model tube in tube (3D) contact (application: piston in cylinder). Can you add that to the next submission. Thanks!

Steve Miller

@Angelo - contact me directly for R2017a versions.
@deltanabla - your park brake mechanism looks do-able to me.
@Dmitriy - mesh-to-mesh is possible but computationally expensive. I haven't worked on that yet, as I'm trying to see how far we can go with computationally efficient models.
@zy - for uneven terrain, you could use this library if your bumps can all be spheres or cylinders. The linear contact force is Kelvin-Voigt, the nonlinear one is similar to Hunt and Crossley, mainly included to show how to create a custom force. The documentation in the submission shows the formula I used.

zy han

zy han (view profile)

Hi Steve
What is the contact model in the library?
Is it linear "Kelvin-Voigt Contact Model" and nonlinear "Hunt and Crossley Contact Model"? Or someone else?

Steve, you're the best! Will there ever be a mesh to mesh contact model?

zy han

zy han (view profile)

Hi Steve
I am right now using this library to simulate unmanned ground vehicle on uneven terrain, is there possible to add some more complicate type of contact, like sphere to sine wave cure surface, or sphere to self defined curve surface?

And, is there possible to add cylinder to x contact?

Lokesh Sreeni

deltanabla

Hi Steve,

I am interested in modelling the following parklock mechanism using simscape. I see in your library that there is a 'disk on finite plane'. I think this might be a starting point.
I would need to somehow create a wheel consisting of a circular pattern of flat surfaces which will be in contact with a cylindrical surface on the pawl.

What is your opinion?

https://www.dropbox.com/s/7xyk1sv2gnpcqi1/Parklock.PNG?dl=0
https://www.dropbox.com/s/x57fxntkj7ay0bk/Parklock2.PNG?dl=0

Kind Regards
Ed

Angelo

Angelo (view profile)

Steve, now I can open the models but many of them seem not run with R2017a.
Undefined functions of variable error for many values . I think it does not depend on the matlab reléase but on some missing parameters in the initialization.
Can you help in this?
Thank you
angelo

Anusha Jain

Thanks, Steve.

Eliza Lu

thank u sooooooooo much

Chris Irlam

All solved now, thanks for the help Steve!

Steve Miller

@Chris - perhaps your stiffness and damping coefficients are too small. This should certainly work. If you can't figure it out, send me the model.
@Anousha - for uneven terrain, you need to insert a force between the feet and every panel of the surface. Not sure what kind of errors you're getting. Errors with this library are unusual, normally it is unexpected behavior.
@Shubham - there is a tread drive example for a chain-drive system such as a bulldozer. I have a better version of that model that I hope to upload soon. Email me if that is what you're looking for.

Chris Irlam

Hi Steve, I have an adapted model of a quadruped, based on the walking robot tutorial. When the joints are moving (i.e. a friction force is acting) the model behaves as expected. When the joints are completely stationary (no changes to the model itself), the robot falls through the floor. I am using Face to Plane contact forces (but have tried Sphere to Plane contact forces, with the same problem). Am I missing something, or have I discovered a bug?

Anusha Jain

It's a nice library. Did anyone get around with biped walking on uneven terrain? I am working on it and its showing lot of error messages.If so please share me your insight.

Dear all,
I am working with chain drive system For this which contact should i use? Can anyone suggest me this ?

HT Dai

HT Dai (view profile)

Dear Steve,
I have read your answers, thanks a lot. I want to simulate the ring(or tube) on a cylinder, so I want a tube-on-tube contact force. Or you can give me some advices based on existing contact force library. Thanks very much!

Many thanks, Steve, I've extended the two legs walking robot (robotics arena) to a six-legged robot. Everything was perfect. My question is, what to do to extend to step over an object or walking on an uneven surface?

Steve Miller

@Dhayaa - see https://www.mathworks.com/matlabcentral/fileexchange/64227-matlab-and-simulink-robotics-arena--walking-robot for robot walking on flat surface, can be extended to uneven surface.

@ HT. Tube-on-Tube would be great. I haven't yet had the time to derive (or find) the equations to determine the contact point and relative velocity between two tubes. Perhaps the community has suggestions.

@ Pavel - 69 and still going strong, wow. I'm inspired by you!

Thank you so much for this very useful libraries.
Would it be possible to simulate contact with different surface level?
In other words, modelling a walking robot walk on uneven ground.
Thanks!

HT Dai

HT Dai (view profile)

promising library, would this library can simulate the tube on tube force ?

Junjie Shen

Gabriel Lara

Pavel Osipov

Pavel Osipov

Thanks, Steve. Learning from you. I'm 69 years old. Saint Petersburg, Russia.

Taewon Kim

@Sebastian Castro: Thank you for your help! I did what you told, and now it works. I was suffer from that error until you help :)
Thanks!

@Taewon Kim: This is a commonly encountered error and it has an easy solution. Please refer to the following MATLAB Answer.

https://www.mathworks.com/matlabcentral/answers/378561-rigidly-connected-port-error-with-simscape-multibody-contact-forces-library

Taewon Kim

First of all, thanks for your library!
However, I need some help. I just try to make simple example of collision between ball and plane, but I got some error.
'External Force and Torque External_Force_and_Torque_PlaB has its follower port rigidly connected to the world frame; it has no effect. You can configure this diagnostic in the Simscape Multibody Configuration Parameters dialog.'
I compared with example that you provide and tried figure out what is problem, but I don't know what is wrong.
Would you like to give me some advice please?

Taewon Kim

timo

timo (view profile)

I get the error :(

Number of blocks in the block diagram 'Coll3D_05_Ball_Peg_Board' and all models it references exceeds the license limit of 1000 nonvirtual blocks.

Please heelp ! I cannot run any demo model

Steve,
Wonderful work! I've been using your library for about a year now at the Robotics Institute to simulate various robot-environment interactions. I was wondering if you have any advice regarding solver settings for robust but efficient execution of models with stiff collisions (metal on metal, etc.)? I've landed on ode15s with relative tolerance 1e-5, auto for max/min step size and abs tol, no shape preservation, fast solver reset, NDF max order 3, and auto for jacobian solver.

I know the documentation suggests that 1e-3 rel tol is usually sufficient, but I get instability very quickly otherwise.

This is all in the context of stick-slip friction with velocity thresholds on the order of 1e-3, and linear spring/damper normal forces with spring constants on the order of 1e4 N/m and damping on the order of 1e3 Ns/m...

My only thought is to artificially soften the stiffness in order to lower the effective time constants of the impulsive collisions that occur in the model... might you have any other insights?

Thanks!
Alex V.

timo

timo (view profile)

Does Matlab Home edition still gives error with this library that a limit of 1000 blocks has been reached or has it been fixed ?

Ed Marquez

Steve Miller

For your use case, I believe you would like to model an uneven 3D surface. I think to do this more efficiently, a triangular contact force element would be good. It would be easier to create a tesselated surface could be created that would only require 1 force per reference point instead of 3.

As with many modeling and simulation scenarios, you either "pay" during the modeling and compilation phase or pay during the simulation phase. Put another way, you either expend extra time during the modeling and compilation phase to create an efficient model that runs quickly, or you use a generic but expensive collision detection algorithm during simulation. For the time being, this submission is focused on the first method. Thanks -- Steve

Thanks!
Wow, in retrospect it is really obvious.
Last question, if you don't mind: is it in any way possible to model an uneven surface with this lib? I understand that i can, theoretically, assemble whatever surface i want from lots of small planes and balls. But when i as much as try to add lots of contact blocks - the model begins to take forever to compile.
I recognize that this is a complex subject and i guess there is no magical solution, but maybe you have any hints for me.
Thank you for great work.

Steve Miller

Hi Anton - to prevent the sphere from entering at the edge of the plane, you need to add another contact force. With 3 Sphere to plane contact forces oriented along the X, Y, and Z axes of a cube, you can create a "Sphere to Cube" contact force. --Steve

Hello, Steve and Richard.
Yes, the error was due to rigid transforms in a loop, and now i have found a workaround for it. Turns out the contact forces don't have to be connected to the actual planes.
Here is the screenshot of how i have connected them https://puu.sh/xbJdQ/68920d5cb2.png Inside the FE blocks there are parallel contact forces https://puu.sh/xbJj2/bafeacf2c2.png
This basically creates 4 balls in the same location and 4 planes in different locations (i can correct locations with rigid transform).

Now i have another issue: contact planes are represented as two planes with a space between them https://puu.sh/xbJs1/0927fa52c2.png When a ball contacts with the outer side of these planes it works as intended. But in case when the ball gets in between these planes and touches one of them from the inside my model freezes. And since there is no "side" planes, nothing prevents the ball from going in between the planes. Is there any possible solution for it? I'd be happy if the plane was treated as a square, if it is possible.

Steve Miller

Hi Anton and Richard - Weld Joints are only rarely needed in Simscape Multibody, and I don't expect you would need them here. Can you upload a screenshot of the error, and perhaps the model? I suspect you have connected rigid transforms in a loop and all you would need to do is delete one of the connection lines, but I would need to see the error message and model to be sure. Thanks, --Steve

Hi Anton, I have encountered a similar issue and using weld joint to connect to the contact block helped me to solve the issue.

Hi, can you help me with a certain problem?
I'm trying to build a model of a platform with four legs, which is landing on four "tables". I placed contact forces on the ends of the legs, and currently it looks like this https://puu.sh/x5Knq/498696785f.png
But in this model each leg can only interact with it's respective plane, because I connected them this way https://puu.sh/x5Kta/0a938c9a43.png
I need several contact forces to be connected to several planes, but when I try to do so I'm getting an error (rigid cycle).
What should i do? Thanks in advance,
Anton.

Xu Zhang

Cjjb Gh

plz,help me. I don't quite understand the the friction force in the library. your friction force in always a product of the coefficient of the friction times the Normal force. If the ball purely rolls, the velocity at point of contact is zero. Then,the coefficient is zero,there would be no friction.

Hi Steve,

First off, awesome library, this was definitely missing from simbody.

For that project I am trying to model a car. I have 2 free rear wheels and two steering wheels in the front. The weight of the car is 1500kg. When I apply a constant torque of 250Nm on the front wheels, the car gain speed, but the wheel rotation speed seem to oscillate around a ramp. It is slow at first but the frequency of the oscillation seems to increase at the vehicle speed increases as well.

Is it a natural behaviour in any car? Are there oscillations in the wheel rotation speed that are not really a problem? Is it something coming from your library? I am a bit new to mechanics so I cannot really tell.

You can reproduce all that in your 2 wheel robots buy applying a constant torque of 0.05 and plotting the angle rate from the revolute joint directly.

In my case I get the oscillations with any torque value, say from 100 to 500 for example.

Any help or tip on that would be much appreciated.

Again, thanks for your work.

Cheers

Steve Miller

Daniel - thanks for catching the problem with the signal outputs. That is fixed in latest update (v3.4, both R16a and R16b).

Jing -- the Simscape blocks could be used for contact along one dimension, such as a hardstops in a cylinder or backlash in gears. These models are intended for 2D or 3D contacts. See this File Exchange Submission:

http://www.mathworks.com/matlabcentral/fileexchange/37636-simscape-multibody-3d---1d-interface-examples

Qing -- anisotropic friction, good request. These models assume friction is the same in all directions. Do you have an animation of the movement you are expecting? There might be a way to use multiple forces at right angles to get the desired effect, but it would require some thought.

Thanks for all the comments and feedback!

Qing Xiao

Hi Steve,
This library is awesome! But I got some trouble when I used it to model the snake robot. The snake robots need anisotropic friction to move forward. If I used Sphere-to-Plane Force to model the contact force and friction force between the wheels and plane, the friction became isotropic. So the robot just rolled on the floor and did not move a bit. Could you give me some advice about how to achieve anisotropic friction between wheels and plane? Thank you so much!

Jing Liu

Hi Steve,

This library is great! But I found there is some friction blocks in Simscape, like the Rotational Friction/Damper blocks in the Foundation Library of Simscape. What is the difference between your library and those simple blocks? Is it possible to build the same contact model with these original Simscape blocks?

Thanks for your sharing!

Daniel Stuewe

This library has been a great asset for the work that I'm doing. Thank you very much for this!

(now for the "But...")

I'm using the 2D library and I've noticed what I believe is an error with the output forces for the Circle to Ring block. I think the forces are applied to the joints correctly, but the output force does not "turn off" when the circle has passed beyond the active range. Therefore my plots are showing a constant ring force once the circle is beyond the ring (my model transitions from a ring to a circle to a line).

Normally this would be essentially a cosmetic problem, but I need the contact forces so I'm having to put my own logic in to zero out the force at the appropriate location.

Thanks again for these powerful tools.

Lei Gao

Hi Steve,
I found that there might something wrong with the friction force law.
When v_th < v < 1.5v_th, I think the function should be:
u = 3*us - 2*uk - (us-uk)*v/(0.5*v_th)
rather than
u = us - (us-uk)*v/(0.5*v_th).
However I checked the "Friction Law" block and it should works correctly.

Many thanks,
Lei

Hey Steve
I wonder your lib allow me to use multiple point on one elements. I try to achieve it by putting 4 sphere at the corner of the lower side of a cube(which was imported from solidwork). I thought I will see four ball connected to each other through the cube and bounce when it hit the plane. However, it turns out that only one sphere does the correct reaction.

Lei Gao

This library is really helpful!
I wonder if someone has modeled contact between two surfaces whose geometries are determined by splines. If this library suitable in such a case?
I will appreciate it if anyone can help.

Hi, thanks Steve For the library ...
i am searching for a way to determine the collision detection between two bodies,
would guide me please ...
best regards

Tudor

Tudor (view profile)

Hey Steve,

The error is not there actually. I just made a minimum working example and it works as it should :) So your model works very well. I might have made a mistake somewhere in my previous project where it seemed that there was an error in the contact block.

Steve Miller

Hi Tudor - not sure which blocks you are referring to. Damping behavior appears correct in Frict3D_04_Ball_on_Ball. Will follow up with you separately.

Vinay - sorry it took me a while to react to your post. Feel free to contact me via my author page.

Janmejaya - yes, you can measure force per leg.

Prof Liebgott - Converting the internals of the force blocks to an S-Function would likely create a model with less than 1000 blocks. I will give this a try.

Thanks for all the interest and use of the library! --Steve

Tudor

Tudor (view profile)

Hey Steve,

The damping force in the sphere-to-sphere is not correct. You are applying it to the norm of the speed, which can never be negative, so after the saturator the result is always 0.

Zafb

Zafb (view profile)

Hi Steve..
Can I use it to find magnitude of Ground Reaction Force acting on a leg of hexapod ?
OR
If I am going to vary weight on each leg, by adding some mass block, is GRF calculated using this library is going to vary?

Ivan Liebgott

Thanks a lot,
This library is very useful and correspond to classical mechanical enginneering problems. Unfortunatly most of examples use more than 1000 blocs and it is not possible to use them with the MATLAB Pass licence with my students...Is there any solution to run these models on MATLAB pass licence?
Thanks for your answer.
Professor Ivan LIEBGOTT

liu lei

Well, it's very useful,thanks a lot. I met a problem on 08 July and this file update to 3D one day later ,I'm so lucky and thank to Steve Miller.

Tudor

Tudor (view profile)

Hello,

I am very happy to have found this library, as it helped me a lot in my simulations.

I will, however, need a version of this library that works in 3D; is there any such thing? If not, would you be interested in providing some tips for me to create one, based on this current submission (which is great btw)?

Under what license is your work published? Can I modify it? Would I be able to publish a new library, based on yours, if I ever get it to work?

Thank you,
Tudor

Montassar

Hello Steve, My name is Montassar and I m a young PhD Student from France.
i have seen your work the 2D contact library, i really find it very interesting and innovating, but i do have a question, how did you find information about the variables "k" and "b" for the spring and the dumper, i know it is related to the material used and k=the young modulus, but how can you be "sure" of the values of the k and b that you are using.
thank you very much for you time and your help.
kind regards

OK, I had to make a new File Exchange submission.

http://www.mathworks.com/matlabcentral/fileexchange/49374-rolling-ball-on-plane

Thanks Steve for your help!

Steve Miller

The models in this submission are for use with SimMechanics Second Generation Technology. SimMechanics is being actively developed with new features each release (every six months) -- see the release notes online:

http://www.mathworks.com/products/simmechanics/whatsnew.html

New features are added to Second Generation Technology (2G). First Generation Technology (1G) will be supported as long as is necessary.

Thanks for your update. Will these models work for the First-Generation SimMech or the Second-Generation technology ?

I'm not feeling comfortable to use a product in which is not being actively developed anymore. Sure it will work for a few next releases, but for how long ?

Steve Miller

3D contacts and contacts with splines are possible with SimMechanics. We've done that with other users, using both Simulink and MATLAB for custom contact detection and force calculation. Though I cannot share those confidential models, I'm working on versions that can be shared. Thanks for your interest and questions.

As far as I understand no 3D contacts are possible. Only line to line, line to circle etc.

For more complex cam geometries simmechanics is pretty useless. You can't use a cubic spline for instance.

We used Adams for this, a real multi body package.

Great library. However, I would need a 3D contact, for example "Circle to Finite Plane Force". It could be used to model a ball on a plane. Are you going to provide that?

Updates

4.1.0.1

Added R2018b version. R18b and R18a versions can be downloaded from this File Exchange entry, contact me for earlier releases.

4.1.0.0

Added robot walking on uneven surface, updated tread drive example, small change to Sphere to Belt Force. R18a and R17b included here, contact me for earlier releases.

4.0.0.0

Added Sphere to Tube Enabled Force, Sphere to Belt Force. New examples Ball Bearing Testrig and Tread Drive on Uneven Surface. v4.0 works with R15a-R18a, contact me if your MATLAB release is not in this submission.

3.9.0.0

Added Cam Roller Constraint which uses Point-on-Curve Constraint to model circular roller on a cam with arbitrary profile. New example Cam_Follower_Constraint.slx uses the new block.

3.8.0.0

Added R2017b version.

3.7.0.0

Added Sphere-to-Cone, fixed error in Sphere-to-Tube, many other updates. Submission includes versions for R17a, R16b, R16a, contact me for earlier releases. Recommend updating to this version.

3.6.0.0

Updated for R2017a. Added MATLAB code to extract a copy of just the libraries for use in other projects.

3.5.0.0

Added Face-to-Plane and Face-to-Belt (3D Composite Forces), Sphere-to-Plane Enabled (3D). Added "Gripper with Conveyor Belts" example (3D application). Re-added R14b version, removed GIF files, removed STL files from R14b and R15b.

3.4.0.0

Added R2016b version; Fixed reported output force signals for Circle-to-Ring, Sphere-to-Tube, Sphere-to-Plane (not calculation, just outputted value); Dropped R2014b version due to 20MB file size limitation on File Exchange.

3.3.0.1

Updated license

3.3.0.0

Hid the contact force surfaces in conveyor belt example.

3.3.0.0

Added ability to visualize contact surfaces to all contact forces. Helps you make sure you positioned, oriented, and sized the surfaces appropriately.

3.2.0.0

Disabled one zero crossing in Circle-to-Finite Line, two in Sphere-to-Plane. Better performance in a few cases.

3.1.0.0

Added R2016a version.

3.0.0.0

Includes v3.0 for R2015b, R2015a, and R2014b.

3.0.0.0

Includes v3.0 for R2015b, R2015a, and R2014b.

3.0.0.0

Version 3.0 Added 3D contact models (Sphere-to-Sphere, Sphere to Plane, Sphere-to-Tube) with friction. Added composite 2D forces (Box to Box, Box to Belt). New examples include box on conveyor belts, two wheel robot. See README.txt in zip file.

1.6.0.0

Version 2.0. Added friction to contact models; added many friction examples, fixed two mistakes in force laws (Contact_Forces_Lib.slx); added box-to-box contact force (Spinning_Boxes.slx). See README.txt in zip file for details.

1.4.0.0

Added video links

1.3.0.0

Updated submission name

MATLAB Release Compatibility
Created with R2018a
Compatible with any release
Platform Compatibility
Windows macOS Linux

Discover Live Editor

Create scripts with code, output, and formatted text in a single executable document.


Learn About Live Editor

SM_Contact_Forces_Lib_R18a_v4p1

SM_Contact_Forces_Lib_R18a_v4p1/Examples/2D/Ball_Bearing

SM_Contact_Forces_Lib_R18a_v4p1/Examples/2D/Ball_Bearing/Scripts_Data

SM_Contact_Forces_Lib_R18a_v4p1/Examples/2D/Cam_Follower

SM_Contact_Forces_Lib_R18a_v4p1/Examples/2D/Cam_Follower/UI

SM_Contact_Forces_Lib_R18a_v4p1/Examples/2D/Cam_Follower_Constraint

SM_Contact_Forces_Lib_R18a_v4p1/Examples/2D/Geneva_Drive

SM_Contact_Forces_Lib_R18a_v4p1/Examples/2D/Geneva_Drive/CAD/Export

SM_Contact_Forces_Lib_R18a_v4p1/Examples/2D/Simple/Collision

SM_Contact_Forces_Lib_R18a_v4p1/Examples/2D/Simple/Friction

SM_Contact_Forces_Lib_R18a_v4p1/Examples/2D/Spinning_Boxes

SM_Contact_Forces_Lib_R18a_v4p1/Examples/3D/Gripper_2Belts

SM_Contact_Forces_Lib_R18a_v4p1/Examples/3D/Robot_2_Whl

SM_Contact_Forces_Lib_R18a_v4p1/Examples/3D/Robot_6Legs_4Bar

SM_Contact_Forces_Lib_R18a_v4p1/Examples/3D/Robot_6Legs_4Bar/Scripts_Data

SM_Contact_Forces_Lib_R18a_v4p1/Examples/3D/Simple/Collision

SM_Contact_Forces_Lib_R18a_v4p1/Examples/3D/Simple/Friction

SM_Contact_Forces_Lib_R18a_v4p1/Examples/3D/Tread_Drive

SM_Contact_Forces_Lib_R18a_v4p1/Libraries

SM_Contact_Forces_Lib_R18a_v4p1/Scripts_Data

SM_Contact_Forces_Lib_R18a_v4p1/Scripts_Data/Doc

SM_Contact_Forces_Lib_R18a_v4p1/Scripts_Data/Extrusions

SM_Contact_Forces_Lib_R18b_v4p1

SM_Contact_Forces_Lib_R18b_v4p1/Examples/2D/Ball_Bearing

SM_Contact_Forces_Lib_R18b_v4p1/Examples/2D/Ball_Bearing/Scripts_Data

SM_Contact_Forces_Lib_R18b_v4p1/Examples/2D/Cam_Follower

SM_Contact_Forces_Lib_R18b_v4p1/Examples/2D/Cam_Follower/UI

SM_Contact_Forces_Lib_R18b_v4p1/Examples/2D/Cam_Follower_Constraint

SM_Contact_Forces_Lib_R18b_v4p1/Examples/2D/Geneva_Drive

SM_Contact_Forces_Lib_R18b_v4p1/Examples/2D/Geneva_Drive/CAD/Export

SM_Contact_Forces_Lib_R18b_v4p1/Examples/2D/Simple/Collision

SM_Contact_Forces_Lib_R18b_v4p1/Examples/2D/Simple/Friction

SM_Contact_Forces_Lib_R18b_v4p1/Examples/2D/Spinning_Boxes

SM_Contact_Forces_Lib_R18b_v4p1/Examples/3D/Gripper_2Belts

SM_Contact_Forces_Lib_R18b_v4p1/Examples/3D/Robot_2_Whl

SM_Contact_Forces_Lib_R18b_v4p1/Examples/3D/Robot_6Legs_4Bar

SM_Contact_Forces_Lib_R18b_v4p1/Examples/3D/Robot_6Legs_4Bar/Scripts_Data

SM_Contact_Forces_Lib_R18b_v4p1/Examples/3D/Simple/Collision

SM_Contact_Forces_Lib_R18b_v4p1/Examples/3D/Simple/Friction

SM_Contact_Forces_Lib_R18b_v4p1/Examples/3D/Tread_Drive

SM_Contact_Forces_Lib_R18b_v4p1/Libraries

SM_Contact_Forces_Lib_R18b_v4p1/Scripts_Data

SM_Contact_Forces_Lib_R18b_v4p1/Scripts_Data/Doc

SM_Contact_Forces_Lib_R18b_v4p1/Scripts_Data/Extrusions

SM_Contact_Forces_Lib_R18a_v4p1/Examples/2D/Ball_Bearing

SM_Contact_Forces_Lib_R18a_v4p1/Examples/2D/Ball_Bearing/Libraries

SM_Contact_Forces_Lib_R18a_v4p1/Examples/2D/Cam_Follower

SM_Contact_Forces_Lib_R18a_v4p1/Examples/2D/Cam_Follower_Constraint

SM_Contact_Forces_Lib_R18a_v4p1/Examples/2D/Conveyor_Belts

SM_Contact_Forces_Lib_R18a_v4p1/Examples/2D/Geneva_Drive

SM_Contact_Forces_Lib_R18a_v4p1/Examples/2D/Geneva_Drive/CAD/Export

SM_Contact_Forces_Lib_R18a_v4p1/Examples/2D/Simple/Collision

SM_Contact_Forces_Lib_R18a_v4p1/Examples/2D/Simple/Friction

SM_Contact_Forces_Lib_R18a_v4p1/Examples/2D/Spinning_Boxes

SM_Contact_Forces_Lib_R18a_v4p1/Examples/3D/Gripper_2Belts

SM_Contact_Forces_Lib_R18a_v4p1/Examples/3D/Robot_2_Whl

SM_Contact_Forces_Lib_R18a_v4p1/Examples/3D/Robot_6Legs_4Bar

SM_Contact_Forces_Lib_R18a_v4p1/Examples/3D/Robot_6Legs_4Bar/Libraries

SM_Contact_Forces_Lib_R18a_v4p1/Examples/3D/Simple/Collision

SM_Contact_Forces_Lib_R18a_v4p1/Examples/3D/Simple/Friction

SM_Contact_Forces_Lib_R18a_v4p1/Examples/3D/Tread_Drive

SM_Contact_Forces_Lib_R18a_v4p1/Libraries

SM_Contact_Forces_Lib_R18b_v4p1/Examples/2D/Ball_Bearing

SM_Contact_Forces_Lib_R18b_v4p1/Examples/2D/Ball_Bearing/Libraries

SM_Contact_Forces_Lib_R18b_v4p1/Examples/2D/Cam_Follower

SM_Contact_Forces_Lib_R18b_v4p1/Examples/2D/Cam_Follower_Constraint

SM_Contact_Forces_Lib_R18b_v4p1/Examples/2D/Conveyor_Belts

SM_Contact_Forces_Lib_R18b_v4p1/Examples/2D/Geneva_Drive

SM_Contact_Forces_Lib_R18b_v4p1/Examples/2D/Geneva_Drive/CAD/Export

SM_Contact_Forces_Lib_R18b_v4p1/Examples/2D/Simple/Collision

SM_Contact_Forces_Lib_R18b_v4p1/Examples/2D/Simple/Friction

SM_Contact_Forces_Lib_R18b_v4p1/Examples/2D/Spinning_Boxes

SM_Contact_Forces_Lib_R18b_v4p1/Examples/3D/Gripper_2Belts

SM_Contact_Forces_Lib_R18b_v4p1/Examples/3D/Robot_2_Whl

SM_Contact_Forces_Lib_R18b_v4p1/Examples/3D/Robot_6Legs_4Bar

SM_Contact_Forces_Lib_R18b_v4p1/Examples/3D/Robot_6Legs_4Bar/Libraries

SM_Contact_Forces_Lib_R18b_v4p1/Examples/3D/Simple/Collision

SM_Contact_Forces_Lib_R18b_v4p1/Examples/3D/Simple/Friction

SM_Contact_Forces_Lib_R18b_v4p1/Examples/3D/Tread_Drive

SM_Contact_Forces_Lib_R18b_v4p1/Libraries