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.
