Chrono: Lock all Rotational Degrees of Freedom


Is it possible using Chrono to lock all rotations, but keep all translationational degrees of freedom open?

I've been trying to use the link_hinge functionality, but it seems like even with rotvector set to 0 0 0 (which it allows), it can rotate anyways..

I am also aware that I could lock the degrees of freedom using the options for floating objects - I just want to know if there is another way or a constraint in Chrono I could use which is not documented as of now.

Using a "zipline" / sliding constraint is not feasible.

Kind regards


  • You can use pointline. Check the examples in examples\others\ChronoPointline


  • I just had a look at it, and it is almost what I want. I still want it to be able to move away from the line, but only using translation. In that folder PointLine_Fixed is closest to what I want (but lacks translation in two direction as far as I can see)

    I had a closer look at the documentation and spotted this:

    Seems like if I use the spherical joint option and just remove the rotpoint tag, then it will behave as I want and slide in space freely, but no rotate (perhaps).

    Now I atleast have something new to try!

    Kind regards, thanks!

  • Let us know what options will work for you.


  • Hi again, so I gave it a shot using spherical joint and not defining rotvector. This simply gives an error, so I think there is a typo in the documentation, what was meant was probably the "pointline" which indeed does not need to have rotvector defined.

    Basically what I want is something similar to:

    Where orange is the first time step - there is a connection between the cylinder and cube. What I want is the cylinder to follow the cube without changing its relative position w.r.t. to the cube and not rotate around it own axis.

    This has not been possible for me to do as of now, since the hinge seems to still be able to rotate even if rotvector = 0 0 0 - the spherical joint has all 6 DOF's and I cannot lock any of them, so that wont work either.

    The pointline is close to what I want but does not allow for translation in all directions.

    Basically I want a "glue constraint" imagine you are gluing two pieces together. The box can move as it wants and then the cylinder has been "glued" to the box.

    Kind regards

  • Let us see if this can help you.....

    If what you want is to join one piece with another, you can use 2 hinges at the same point. One that rotates along the X axis and another along the Y axis (so that it can no longer rotate in any other axis).

    Another option is using <link_pointline> by defining two rotation vectors to cancel rotations (with <rotvector> and <rotvector2>), which is basically the same idea. You can see the example "CasePointline_Fixed_Def.xml" in DualSPHysics_v5.0\examples\others\ChronoPointline

    Not sure now if <rotvector> and <rotvector2> can be used in the normal hinges, but it should be allowed. Meanwhile you can always define 2 hinges so that the rotations cancel each other.


  • Thank you very much for this suggestion Alex!

    I will try to give that approach a shot, with the double hinges. I will check whether or not rotvector and rotvector2 can be used first hand - not completely sure what rotvector2 would define in this case though.

    I think I understand what you meant by pointline now too, since it seems like it allows for being moved relatively too perhaps.

    Kind regards

  • @Alex

    Rotvector2 was not defined for hinge

    Using two hinges and opening x and y respectively, it was possible to get it to work:

    It is not falling down as it should due to gravity -> therefore using two hinges at the same spot worked!

    Of course the only downside by this is that I properly cannot trust the link forces anymore, but atleast I can stick geometry together.

    Kind regards

  • Nice to see that you found a solution

Sign In or Register to comment.