Constraining the degree of rotation for a revolute joint

pramodh k
pramodh k New Altair Community Member
edited October 2020 in Community Q&A

Hi all,

I would like to know if there exists an option or possibility in MotionView to constrain the degree of rotation of a revolute joint. For example, a revolute joint provides the possibility for a body to rotate 360 degrees with respect to another body to which it is connected to, but I would like to restrict this angle to only 30 degrees.

Answers

  • Chris Coker_21312
    Chris Coker_21312 New Altair Community Member
    edited June 2020

    Just add a Motion to your model, attach the Motion to that revolute Joint, and se the angle in the properties panel to 30/57.3 (the units of rotation in MotionView are radians).   Note that this rotation is relatively large, so you may have initial issues getting the model to solve successfully, but I would still attempt this first.  If you have trouble getting this to solve with that angle, you can use the first part of your simulation to ramp up from 0 to 30 degrees.  You could use an expression to do this:

     

    Change the Motion properties from Liner to Expression, and then define the expression using a STEP function:

    `STEP(TIME,0,0,1,30/57.3)`

     

    Note the 'carat' character (`) is critical here.  Don't use single quotes around the expression, or you will get an error

     

     

    If you are trying to restrict the range of Motion of the revolute joint to +/- 30 degrees, then you need to add a rotational force between those two bodies constrained by the joint, and then use a BISTOP function to define the range of rotation motion, as well as the stiffness of contact  (BISTOP function examples exist in our tutorials, as well as the function help).

  • pramodh k
    pramodh k New Altair Community Member
    edited June 2020

    Okay, thank you for the suggestion. I have tried to implement this and it successfully worked, but I would like to know how I can make the BISTOP function to work only after a certain period of time and not during the entire simulation.

  • Chris Coker_21312
    Chris Coker_21312 New Altair Community Member
    edited October 2020

    There are a couple of ways to handle this:

     

    1.  Use a STEP function to multiply the BISTOP function in your expression. I can look something like this:

    STEP(TIME, 0,1,1.1,1)*BISTOP(xxyyzz)

     

    Explanation:

    The STEP function uses Time as the input,  When the time is less than 1 section, STEP evaluates to 0, and multiples the BISTOP by 0.  At 1.1 seconds, the value of the STEP=1, which then multiplies the BISTOP by 1. In between 1 second and 1.1 second, the value is a cubic interpolation between 0 and 1.

     

    2. Use Sequential Simulation

    You can create a series of commands, to DEACTIVATE and ACTIVATE various entities in your model, at specific times in the simulation.

    This previous forum topic has discussed this before (and there are some tutorials about this topic as well)

    https://community.altair.com/community?id=community_question&sys_id=4876043a1b2bd0908017dc61ec4bcb0f