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<https://github.com/projectchrono/chrono/blob/main/src/demos/mbs/demo_MBS_collision_2d.cpp>
 for an example.

--Radu

From: [email protected] <[email protected]> On Behalf 
Of alvaro diaz
Sent: Tuesday, September 30, 2025 10:43 PM
To: ProjectChrono <[email protected]>
Subject: Re: [chrono] Help Needed to create the Mechanism

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
El martes, 30 de septiembre de 2025 a las 12:24:29 UTC-6, 
[email protected]<mailto:[email protected]> escribió:

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

On Tuesday, 30 September 2025 at 8:22:45 pm UTC+5:30 [email protected] wrote:
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
El martes, 30 de septiembre de 2025 a las 5:11:07 UTC-6, 
[email protected]<mailto:[email protected]> escribió:

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.
On Tuesday, 30 September 2025 at 11:59:59 am UTC+5:30 Siddharth L wrote:

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.
On Tuesday, 30 September 2025 at 3:06:19 am UTC+5:30 Dan Negrut wrote:
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<tel:(608)%20772-0914>
http://sbel.wisc.edu/
http://projectchrono.org/<https://urldefense.com/v3/__http:/projectchrono.org/__;!!Mak6IKo!NlqTU6jYJtx600PzKwrdBmICVWHNR2gEBU4BRt-xCW9RW5-pBlHMPVbqU6h_Kpfugvs5dcteICLyyuo8$>
---------------------------------------------

From: [email protected]<mailto:[email protected]> 
<[email protected]<mailto:[email protected]>> On Behalf Of 
Siddharth L
Sent: Monday, September 29, 2025 7:22 AM
To: ProjectChrono 
<[email protected]<mailto:[email protected]>>
Subject: [chrono] Help Needed to create the Mechanism


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?


[https://groups.google.com/group/projectchrono/attach/38cdf8a553047/image001.png?part=0.1&view=1]

--
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 [email protected]<mailto:[email protected]>.
To view this discussion visit 
https://groups.google.com/d/msgid/projectchrono/52f2d3e4-42f7-42c7-beb5-5e42c7b30d40n%40googlegroups.com<https://urldefense.com/v3/__https:/groups.google.com/d/msgid/projectchrono/52f2d3e4-42f7-42c7-beb5-5e42c7b30d40n*40googlegroups.com?utm_medium=email&utm_source=footer__;JQ!!Mak6IKo!KyCQHUEKrTdDDkGXfCVvr8AhY2nZIovjo0DEy4dwkIK18o0Dw7IFkmv3QmbgwP39p-O0VjI12BAwwOIGWrY8-w$>.
--
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 
[email protected]<mailto:[email protected]>.
To view this discussion visit 
https://groups.google.com/d/msgid/projectchrono/0173d398-5a4c-4bab-9814-2558ae4a52b2n%40googlegroups.com<https://urldefense.com/v3/__https:/groups.google.com/d/msgid/projectchrono/0173d398-5a4c-4bab-9814-2558ae4a52b2n*40googlegroups.com?utm_medium=email&utm_source=footer__;JQ!!Mak6IKo!NlqTU6jYJtx600PzKwrdBmICVWHNR2gEBU4BRt-xCW9RW5-pBlHMPVbqU6h_Kpfugvs5dcteII6bd6RO$>.

-- 
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 [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/projectchrono/CH3PPF46CDC2185C71F2B92EC00A5B2EDBFA7E4A%40CH3PPF46CDC2185.namprd06.prod.outlook.com.

Reply via email to