Help Needed to create the Mechanism

208 views
Skip to first unread message

Siddharth L

unread,
Sep 29, 2025, 10:03:53 AMSep 29
to ProjectChrono

I want to model a mechanism (see attached image) with the following setup:

  • Body 1 and Body 2 are in contact, and Body 3 is an arm connected to the mechanism.

  • I want to pull the end of Body 3 at a constant speed of 30 mm/s.

  • While pulling, I need to track the force (magnitude and direction) at the pulling point until Body 1 and Body 2 slip relative to each other.

  • A constant 100 N force is applied to Body 1, trying to rotate it counterclockwise (CCW).

Could you guide me on how to create the basic shapes for these bodies in PyChrono and how to simulate this pulling motion and measure the reaction force?


mech.png


Dan Negrut

unread,
Sep 29, 2025, 5:36:19 PMSep 29
to Siddharth L, ProjectChrono

A good start would probably be to use the Solidworks to PyChrono pipeline.

Not that you have to, but it could give you a jump start.

Dan

---------------------------------------------

Bernard A. and Frances M. Weideman Professor

NVIDIA CUDA Fellow

Department of Mechanical Engineering

Department of Computer Science

University of Wisconsin - Madison

4150ME, 1513 University Avenue

Madison, WI 53706-1572

608 772 0914

http://sbel.wisc.edu/

http://projectchrono.org/

---------------------------------------------

 

--
You received this message because you are subscribed to the Google Groups "ProjectChrono" group.
To unsubscribe from this group and stop receiving emails from it, send an email to projectchron...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/projectchrono/52f2d3e4-42f7-42c7-beb5-5e42c7b30d40n%40googlegroups.com.

Siddharth L

unread,
Sep 30, 2025, 2:29:59 AMSep 30
to ProjectChrono

Dear Sir,

I currently do not have access to SolidWorks. My present goal is to generate a basic planar mechanism, and I would appreciate your guidance on the best approach to start.

For example, if I need to create one body composed of three basic shapes, should I model it as three separate bodies or use the VisualShape method? Similarly, for linkages, would it be better to use EasyBox or LinkSegment?

Could you kindly provide a quick overview of the most suitable methods or components to use for this purpose? I would like to try implementing an initial-level code based on your suggestions.

Thank you for your time and support.

Siddharth L

unread,
Sep 30, 2025, 7:11:07 AMSep 30
to ProjectChrono

I’m working on a design optimization algorithm.
I don’t have any CAD geometry — instead, I want to generate 2D planar mechanisms using basic shapes such as circles, lines, and arcs (optionally with thickness). I don’t intend to create any full CAD models.

I need to check whether the mechanism works as expected when an external force is applied at a point. The simulation should run without considering the body’s own inertia or gravity — I only want to account for the moment generated by the external force and contact friction.

I plan to create the shapes in PyChrono programmatically, using parameters such as points, arm length, and circle radius.

alvaro diaz

unread,
Sep 30, 2025, 10:52:45 AMSep 30
to ProjectChrono
Hello! I am not a developer but hopefully I can help to get you started. 

1- If you are interested in the mechanism motion and not any deformation (FEA), you don't need any shape or geometry. You can work with the CGs of each body and the location of the joints (roughly).

2- You can work with the mechanism out of the gravity and plane and therefore set "g" to zero. However, you need the bodies mass (for displacement DOFs) and Inertia (Rotation DOFs). There can be coupling but rule of thumb that works. PyChrono sets default values for mass and inertia to 1. 

3- Your model has six bodies unless the angles where you have the rotation arrows are fixed. If these angles are not fixed, each circular arrow is a REVOLUT constraint, the Yellow ball is a PRISMATIC constraint, and the blue ball is also a PRISMATIC constraint if the surface is planar, good first approximation, or a CONTACT if not, which can be more involved. My recommendation is that you start with PRISMATIC and get the model to run and then you change to contact. Note: I am assuming that the balls are fixed with the bar. 

4- Apply a body load to body 1, where if the load is always to the right, specify that the load_vector is global (local_load=False).

5- Apply a motor to set an angular speed or translational speed to whatever value (30mm/s in your case). 

6- How to measure your reaction force: no idea there on how to specifically access it from Chrono. If you were to model it yourself is basically the Lagrange multiplier associated to the velocity constraint. 

7- Set your simulation to run until there is no contact or until you reach the limit of the prismatic constrain for the approximated approach (use 99% of the limit to be safe).

8- Comments on optimization: assuming parametric optimization, you can modify the lengths, mass, Inertia and CG locations which is roughly a combination of density and geometric properties. I am assuming you'll use some gradient free optimization as computing sensitivities here is not possible with the current state of the code (as far as I know). You don't have a lot of design variables so probably genetic algorithms work just fine.

Hope that helps

Siddharth L

unread,
Sep 30, 2025, 2:24:29 PMSep 30
to ProjectChrono

Hi Alvaro,

I’m not an MBD specialist, so I’d appreciate your advice.

I need to model a system without detailed body shapes, but I still need to handle collision/contact and detect slippage.

  • Body 1 is always trying to rotate CCW due to a constant 100 N load, but its motion is resisted by Body 2.

  • A linear pull is applied to Body 3; this force is transferred to Body 2, causing Body 2 to try to rotate CCW.

  • During this continuous pull, I need to track the force in the pulling direction up to the moment when slip occurs between Body 1 and Body 2.

  • Body 1 has a torsional spring (CCW) that helps it rotate CCW more easily.

  • Body 2 has a torsional spring (CW) that keeps it in its initial position after slippage occurs.

How can I model this kind of force transfer and slip detection without using  basic geometry?
Any guidance or recommended approach would really help me kick-start this project.

Thank You

Regards,
SIDDHARTH L

alvaro diaz

unread,
Sep 30, 2025, 4:43:20 PMSep 30
to ProjectChrono
Hello  Siddharth,

I am bit confused because you don't want to use a mesh but you don't want to use basic geometry. I guess you can use  ChVisualShapeLine / ChVisualShapeSegment and  ChVisualShapeLineStrip / ChVisualShapePolyline although I haven't used those myself. 

My recommended approach is to use prismatic joints instead of contacts to begin with, and once you have the model running change both prismatic joints to contacts or just one of them depending on your mechanism i guess. It sounds to me that you want to learn pyChrono while doing this project. If that is the case subdivide into simpler steps:

1 - Solve problem without contacts (use prismatic joints instead)  and without geometry (use CGs and sliding planes for the prismatic joints). This will setup your revolut joints, springs and forces.

2 - Update one to include your geometries. This gets you a nicer visualization.

3- Update prismatic joints to contacts. Then you would have your desired goal.

Note: you may have to add preloading for the torsion springs if you want to assist the motion.

Hope it helps

Radu Serban

unread,
Oct 3, 2025, 3:37:36 AMOct 3
to ProjectChrono

A couple of comments:

 

Siddharth – I suggest you start by carefully looking through the Chrono documentation (in particular this) and through the many demos we provide.  You seem to have a few misunderstanding (e.g., use of visual shapes to define collision geometry). Understand what geometry means in the context of a multibody model (for collision and for visualization – they do not have to, and often are not, the same). For instance, I would model your problem with a single collision shape per body:  the blue circle for body 1, the yellow circle for body 3, and the purple arc and line segment for body 3 are the only relevant geometry. You do not need to have geometry to apply an external force to a body or to connect that body to another one through a joint.

 

Alvaro – while your suggestion of starting simple is very often a good approach, in this case I believe the contact is integral to the problem dynamics. A model based on kinematic joints would be of little use.  And “updating prismatic joints to contacts” is not a simple change; it practically means remodeling everything from scratch.

 

While Chrono always works in 3D, we do support line contacts in 2D, provided the mechanism is correctly kinematically constrained to evolve in a plane. You define such 2D collision geometry as a collection of circle arcs and line segments – precisely what you need here.  Look at demo_MBS_collision_2D for an example.

 

--Radu

Message has been deleted

Siddharth L

unread,
Oct 6, 2025, 10:29:50 AMOct 6
to ProjectChrono
Hi 

I have selected below methods to approach the mechanism.
Correct me if anything wrong.

Thanks 
Siddharth


mech_method.png
Reply all
Reply to author
Forward
0 new messages