Hi 

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

Thanks 
Siddharth


[image: mech_method.png]

On Friday, 3 October 2025 at 1:07:36 pm UTC+5:30 Radu Serban wrote:

> 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] 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] 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 <(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] <[email protected]> *On 
> Behalf Of *Siddharth L
> *Sent:* Monday, September 29, 2025 7:22 AM
> *To:* ProjectChrono <[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*?
>
>  
>
> -- 
> 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/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].
>
> 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/e97009ec-4d94-488b-a59c-9220c1885983n%40googlegroups.com.

Reply via email to