File Exchange

image thumbnail

Simscape Multibody Contact Forces Library

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

283 Downloads

Updated 18 Apr 2019

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 45 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/

Cite As

Steve Miller (2019). Simscape Multibody Contact Forces Library (https://www.mathworks.com/matlabcentral/fileexchange/47417-simscape-multibody-contact-forces-library), MATLAB Central File Exchange. Retrieved .

Comments and Ratings (199)

neel panji

Hello Steve!
Could you please send me the contact force library for matlab r2018a?
my email : neelpanji@gmail.com

Thank you!

Najah ROULA

Hello Steve! Could you please sens me the contact force library for Matlab R2018a ? This is my e-mail addresse : nadjah.roula@gmail.com. Many thanks !

Hello Steve!
Could you please send me the contact force library for matlab r2015a?
Here is my email : artur.abdullin@gmail.com

Thank you!

Hellow Steve,
I would like to try to use this library on matlab r2018a, could you please send to me that version? Thanks in advance.
My email es: sierrapardocesar@gmail.com
best regards.

James PM

How to add this library to simulink?

Delbante Alebachew
Hello Steve,
I am working with R2017b, could you please send me the library?
My email is: delbantealebachew@gmail.com
Thank you very much!!

Hello Steve,
Could you please send me the contact force library for matlab r2018a?
here is my email : faizulurrasyadi04@gmail.com

Hello Steve,

I could not find Simscape Multibody Contact Forces Library for Matlab 2017b, may you send me if it possible?

My e-mail address: orallidoruk@gmail.com

Best regards.

Steve Miller

Hi Behzad - in our experience, contact force problems are often tailored to the problem. By placing these models on the File Exchange, we can make them completely open so you can customize them. It also lets us update them between releases and improve support to previous releases. --Steve

Hi Steve,
Why doesn't SimScape include the contact force library in the original package same as MapleSim?

hi all
where can i download Simscape Multibody Contact Forces Library for 2016b version cause in the mathworks website there is only for 2018b and 2019a version thanks in advance
and this is my email : mm5466881@gmail.com

Hello Steve,
I am working with R2017b, could you please send me the library for that version?
My email is: guillermo.cabezas@alumnos.uva.es
Thank you very much!!

Hello steve,

Could you please send me the contact force library for R2016a?
Thank you very much!

My email address: prasanthm1311@gmail.com

Hi, i'm working on a quadruped robot and this library could help me a lot ! However i can't open it because i'm using matlab R2016b... Could you send me the version for this version ?
Thank you very much !!
email : thomaso.clement@gmail.com

HT Dai

Hello Steve,
It's a powerful library. Now I want to simulat the newton craddle for demo, but the effect is very different with realistic observation. Would you help me? You can find my file from this link :

niraj

Could you send me the contact force library for R2017b.
My email Id is nirajkumarranjan@gmail.com.

Nguyen Dung

Hello Steve,
I am working with a Hexapod model which need the Library for version 2016b. Can you send me the Library for that version please?
Best regards,
Email: dungcom66028@gmail.com
Thank you so much !
P/S: I wonder why you didn't upload all of the version on a cloud for ever one to download?

Hello Steve,
Can you send me the latest version for Matlab 2018a, please?
Best regards,
Alessandro
email:a.andolfi1@studenti.unisa.it

Hello Steve,
Can you send me the latest version for Matlab 2018a, please?
Best regards,
Maria

gavgavma@gmail.com

Hello steve,

Could you please send me the contact force library for R2018b?
Thank you very much!

My email address: prasanthm1311@gmail.com

Hello Steve,
Could you please send me the contact force library for R2017b?
My email address: 10459247@polimi.it
Thank you!

Hello,

Could you please send me the contact force library for R2018b?
Thank you very much!

My email address: anis051@hotmail.com

David

Hello Steve,

Could you please send me the contact force library for R2017b?
Thank you very much!

My email address: cuod.cruz.ortiz@gmail.com

Hello Steve,
Could you please send me the contact force library for R2017a?
My email address: antoninrocher45@hotmail.fr
Thank you !

Hello Steve,
Could you please send me the contact force library for R2017b?
My email address: 1513190@hcmut.edu.vn
Thank you very much!

Hello Steve,
Could you please send me the contact force library for R2017b?
My email address: 89859595139@yandex.ru
Thank you!

Soobin Kang

Hello Steve,
Could you please send me the contact force library for R2017b?
My email address: the.soobin@gmail.com
Thank you!

Hi Steve,
Could you please send me the contact forces library with examples for R2016a?
My email address: chaitanya6.nawale@gmail.com
Thank you!

Da Pa

Hello Steve,
Could you please send me the contact force library for R2017b?
My email address: 01035305@pw.edu.pl
Thank you!

Hello Steve,
Could you please send me the contact force library for R2017b? 15adamsb@gmail.com
Thanks

Nahla Tabti

Frau Vrai

Hello Steve,
Could you please send me the contact force library for r2018a?
shafiyyahnovel@gmail.com
Thanks

Hello Steve,
Could you please send me the contact force library for r2017a?
o.mohseni.sh@gmail.com
Thanks

Moran Han

Hello Steve,
Can you send me contact force library for r2017b please?
My email address is 1034428640@qq.com
Thank you.

hello Steve,
could you please send me the contact force library for R2016a ?.
my email address is mirajmadurawala@gmail.com
thank you.

Hello, could you please send me the library for R2016b? Thanks!

d.lotano@studenti.poliba.it

Hello Steve,
Can you send me contact force library for r2015a please?
My email address is shanukakamesh@gmail.com
Thank you.

zhong yin

Hello Steve,
Can you please send me the contact forces library for Matlab r2017a ?
My email is yin895902139@vip.qq.com
Thank you so much!

Armand Dem

Hello Steve,
Can you please send me the contact forces library for Matlab 2016a ?
My email is armand.dem@hotmail.fr
Thank you

Hello Steve,
Can you please send me the contact forces library for Matlab 2015b?
My email address is onurardic@gmail.com.
Thank you for your support.

Hello Steve,
Can you send me the library of contact forces for matlab 2017b please?
my email is lalitduseja12@gmail.com

Hello Steve,
Can you send me please the library for multibody contact forces ? I am using Matlab Version 2016b
My email is thibs.mazoue@gmail.com
Thank you so much!

Hello Steve,
Would you please send me the library for Matlab 2017b?
my email is tommaso.maioli@gmail.com

thank you in advance

Hello Steve,
I am using Matlab Version 2016b. Can you send me please the library for multibody contact forces ?
My email is yusufk26esk@gmail.com
Thank you

HT Dai

Hello Steve,
Would you please send me the library for Matlab 2017a?
gonzaromero_2007@hotmail.com
Thanks you

Megan Carey

Dear Steve, could you please send me the library for Matlab version 2015a?. My email is hgmarques@gmail.com. Thank you in advance.

Hello Steve,
I am using Matlab Version 2017a. Can you send me please the library for multibody contact forces ?
My email is jeanpieredemir@gmail.com

Roshan Hota

Hi Steve can you send me the simscape multibody contact forces library for MATLAB R2016a version. My email id is yoursroshanhota@gmail.com

Hi Steve
I'm working with the Matlab Version 2017b. I have a colleague is working with Matlab16b.
Can you send me the library for r2017b and r2016b?
My email is ztt1210@stu.xjtu.edu.cn.
Thank you very much!

blindcontroller@gmail.com can you please send me the library for r2017b? Thank you

Hello Steve,
I am using the sphere-plane contact force to define the gear connection between the four- teeth gears. These gears are part of a cable driven robot. Gears work properly alone, but when I add the cables to the system, it becomes too slow (the step sizes become too slow. It seems that it is kind of in its singularity position). I should add that the cable- pulley system itself works really well. I have played with the solver options and tried different values for the contact properties. None of them works. I was wondering if there is any conflict between these two libraries, or you have faced this problem. I appreciate it if you could help me find a solution to this problem.
Many thanks,
Negin

Yang Meng

Hi Steve
I'm working with the Matlab Version 2016b. Can you send me the correct version of this library?
My email is mengyang@hust.edu.cn.
Thank you very much!

Steve Miller

Hi Ahmed - Not sure what you mean by GRF profile. The output bus from each block contains the result of the normal force calculation and the friction force calculation. I am guessing you can use those two to get what you need. Attach a Bus Selector block to access those measurements. --Steve

Hi Steve
I'm using the sphere to plane force on one my legged robot project.
Is there any way I can sense the GRF profile from the contact force block? I'm more interested in knowing the peak force to optimize my structure for maximum stress conditions.
Thank you in advance

I am working with Matlab Version 2017b. Please send me the correct version of the contact
forces library to: gokhanaziz@gmail.com

Thank you very much

serdar ilhn

hello steve,
can you send me the version for Matlab2016a.
serdar.ilhn.997@gmail.com is my mail address
thank you so much.

junhee park

Hello Steve,
can you send me the version for Matlab2018b
please?
qus4787@daum.net
Thanks.

Hi Steve!
Could you please send the version for Matlab 2016a.
arjun.sadananda@gmail.com
Thanks and Regards
Arjun

Hello Steve,
Can you send the version for Matlab2017a, please?
hjave@ucalgary.ca
Thanks in advance
Haider

Jan Selig

Hello Steve,
I am working with Matlab Version 2017b. Please send me the correct version of the contact
forces library to: jans89@hotmail.de

Thank you very much in Advance.

Best regards,

Jan

Hello Steve,
can you send me the version for Matlab2016a, please?
shaheemkhan640@gmail.com
Thanks.

Hello Steve,
can you send me the version for Matlab2017a, please?
aidamnr@sport.tu-darmstadt.de
Thanks.
Aida

Wenzhe Liu

Hi, can send me the simscape multibody contact forces library for R2017a version? My email address is liuw@msoe.edu.
Thanks!

hi steve, here is my other email id gaurashukla.14@gmail.com

Steve Miller

@Gaura - I need your email address. Do you want it for R2017a or R2017b?

hi Steve can you send me the simscape multibody contact forces library for R2017 version... its urgent...thankyou

Hello Steve, could you send me for the 2017b version? lturkovic@hotmail.com .
Thank you!

Thanks a lot, Steve.

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

BEOMJUN KO

Hello Steve,
Could you please send me the library for Matlab 2016a?
qhawnsdl8@gmail.com
Thanks very much

Steve Miller

@Jan - forcesPS_lib is part of this library (not the Simscape Multibody Contact Forces Library). If you are not using the current release, please let me know which release you are using and I will email you libraries saved in the release you are using. --Steve

Jan Selig

Hello Steve,
i am trying to implement a hard stop with the simscape multiphysics library. If I load the implemented blocks i got an error because the "forcesPS_lib" can not be loaded. I think that file comes with the contact forces library... As far as i understand the error message it is a compatibility issue because the needed file was saved in a newer 2018a or b Versioin. How can i implement this functionality or can you give me some kind of workaround? In case you need my email address: jans89@hotmai.de

Why can i load simscape blocks from a newer version in the addon explorer!?

Best regards,

Jan

xiang WANG

I want to set friction force inf to prevent quadruped's slippage

Steve Miller

@xiang - the friction model is documented within the submission. >>web('Friction_Laws.html'). I'm not sure what you are trying to achieve by setting the coefficient to inf. There is nothing in the models preventing you from setting it higher than 1, but if you set it too high you will get numerical issues.

xiang WANG

Hello Steve! Could you give the mathematical model for the contact model. I want to set friction coefficient Inf, but I do not understand this contact model. Thank you!
email: xiang-wa16@mails.tsinghua.edu.cn

Hello Steve,
Could you please send me the library for Matlab 2017a?
liu56972514@gmail.com
Thanks very much

@xiang WANG, can you drop an email to kalanaratnayake95@gmail.com. But I'm doubtful whether i can be any help to you, because I'm just starting at these things.

xiang WANG

@Kalana Vidurath

update:
i tried adjusting stiffness and damping. initially it floated upwards, and at some point (stiffness 10, damping 0.01) it stopped at going upwards but stayed at one place floating above plane. if i reduced further it would accelerate downards(still pass through). so im stuck again. sphere to plane blocks radius is equl to the actual sphere radius. what i want is to ball to fall on to the plane and stop there

xiang WANG

Hello, Kalana Vidurath. I feel great pleasure to know you are making some research about quadruped robot. Could you give me contact information for further communication? Thanks

Hi Steve,
thanks for sending the library. i implemented contacts in my quadruped model with the help of ball on table example. (Robot legs has a spherical end and floor is made of a thin brick solid). but they keep going through each other. i went through few examples but cannot seem to figure it out. Anything help will be appreciated. Thanks

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

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

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

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

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

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

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.

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

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.

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!

Figured it out :)

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

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

Would you re-uploud 2016b version please?

Pratin Naik

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

Thanks,
Pratin

SImone

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

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

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?

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

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

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

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

Junjie Shen

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

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

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

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!

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

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

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

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?

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

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.3

Added R2019a version. Adjustments needed now that physical signals conserve units. Contact me for earlier releases.

4.1.0.2

Added two examples. 4 wheel cart with casters, MATLAB code to automatically assemble a model that has a user-defined number of spheres inside a sphere with contact forces between all inner spheres and between inner spheres and outer sphere.

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 R2019a
Compatible with R2015a to R2019a
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_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/Caster_4_Whl

SM_Contact_Forces_Lib_R18b_v4p1/Examples/3D/Gripper_2Belts

SM_Contact_Forces_Lib_R18b_v4p1/Examples/3D/MATLAB_Build/Spheres_in_Sphere

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/Libraries/Help

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_R19a_v4p1

SM_Contact_Forces_Lib_R19a_v4p1/Examples/2D/Ball_Bearing

SM_Contact_Forces_Lib_R19a_v4p1/Examples/2D/Ball_Bearing/Scripts_Data

SM_Contact_Forces_Lib_R19a_v4p1/Examples/2D/Cam_Follower

SM_Contact_Forces_Lib_R19a_v4p1/Examples/2D/Cam_Follower/UI

SM_Contact_Forces_Lib_R19a_v4p1/Examples/2D/Cam_Follower_Constraint

SM_Contact_Forces_Lib_R19a_v4p1/Examples/2D/Geneva_Drive

SM_Contact_Forces_Lib_R19a_v4p1/Examples/2D/Geneva_Drive/CAD/Export

SM_Contact_Forces_Lib_R19a_v4p1/Examples/2D/Simple/Collision

SM_Contact_Forces_Lib_R19a_v4p1/Examples/2D/Simple/Friction

SM_Contact_Forces_Lib_R19a_v4p1/Examples/2D/Spinning_Boxes

SM_Contact_Forces_Lib_R19a_v4p1/Examples/3D/Caster_4_Whl

SM_Contact_Forces_Lib_R19a_v4p1/Examples/3D/Gripper_2Belts

SM_Contact_Forces_Lib_R19a_v4p1/Examples/3D/MATLAB_Build/Spheres_in_Sphere

SM_Contact_Forces_Lib_R19a_v4p1/Examples/3D/Robot_2_Whl

SM_Contact_Forces_Lib_R19a_v4p1/Examples/3D/Robot_6Legs_4Bar

SM_Contact_Forces_Lib_R19a_v4p1/Examples/3D/Robot_6Legs_4Bar/Scripts_Data

SM_Contact_Forces_Lib_R19a_v4p1/Examples/3D/Simple/Collision

SM_Contact_Forces_Lib_R19a_v4p1/Examples/3D/Simple/Friction

SM_Contact_Forces_Lib_R19a_v4p1/Examples/3D/Tread_Drive

SM_Contact_Forces_Lib_R19a_v4p1/Libraries

SM_Contact_Forces_Lib_R19a_v4p1/Libraries/Help

SM_Contact_Forces_Lib_R19a_v4p1/Scripts_Data

SM_Contact_Forces_Lib_R19a_v4p1/Scripts_Data/Doc

SM_Contact_Forces_Lib_R19a_v4p1/Scripts_Data/Extrusions

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/Caster_4_Whl

SM_Contact_Forces_Lib_R18b_v4p1/Examples/3D/Gripper_2Belts

SM_Contact_Forces_Lib_R18b_v4p1/Examples/3D/MATLAB_Build/Spheres_in_Sphere

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

SM_Contact_Forces_Lib_R19a_v4p1/Examples/2D/Ball_Bearing

SM_Contact_Forces_Lib_R19a_v4p1/Examples/2D/Ball_Bearing/Libraries

SM_Contact_Forces_Lib_R19a_v4p1/Examples/2D/Cam_Follower

SM_Contact_Forces_Lib_R19a_v4p1/Examples/2D/Cam_Follower_Constraint

SM_Contact_Forces_Lib_R19a_v4p1/Examples/2D/Conveyor_Belts

SM_Contact_Forces_Lib_R19a_v4p1/Examples/2D/Geneva_Drive

SM_Contact_Forces_Lib_R19a_v4p1/Examples/2D/Geneva_Drive/CAD/Export

SM_Contact_Forces_Lib_R19a_v4p1/Examples/2D/Simple/Collision

SM_Contact_Forces_Lib_R19a_v4p1/Examples/2D/Simple/Friction

SM_Contact_Forces_Lib_R19a_v4p1/Examples/2D/Spinning_Boxes

SM_Contact_Forces_Lib_R19a_v4p1/Examples/3D/Caster_4_Whl

SM_Contact_Forces_Lib_R19a_v4p1/Examples/3D/Gripper_2Belts

SM_Contact_Forces_Lib_R19a_v4p1/Examples/3D/MATLAB_Build/Spheres_in_Sphere

SM_Contact_Forces_Lib_R19a_v4p1/Examples/3D/Robot_2_Whl

SM_Contact_Forces_Lib_R19a_v4p1/Examples/3D/Robot_6Legs_4Bar

SM_Contact_Forces_Lib_R19a_v4p1/Examples/3D/Robot_6Legs_4Bar/Libraries

SM_Contact_Forces_Lib_R19a_v4p1/Examples/3D/Simple/Collision

SM_Contact_Forces_Lib_R19a_v4p1/Examples/3D/Simple/Friction

SM_Contact_Forces_Lib_R19a_v4p1/Examples/3D/Tread_Drive

SM_Contact_Forces_Lib_R19a_v4p1/Libraries