MV-1026: Model Curve-to-Curve (CVCV) Higher-Pair Constraint

In this tutorial, you will learn how to model a CVCV (curve-to-curve) joint.

A CVCV (curve-to-curve) joint is a higher pair constraint. The constraint consists of a planar curve on one body rolling and sliding on a planar curve on a second body. The curves are required to be co-planar. This constraint can act as a substitute to contact modeling in many cases where the contact occurs in a plane. One such case is the cam-follower system, in which the follower is in the form of a roller. Instead of modeling the contact between the cam and the follower, you can specify a CVCV constraint between their profiles.


Figure 1.
In this tutorial, you will model a roller type cam-follower mechanism using a CVCV constraint.

Create Points

In this step, you will create the points for the cam-follower model.

Before you begin, copy the files CamProfile.h3d and CamProfile.csv, located in the mbd_modeling\interactive folder, to your <working directory>.
  1. Start a new MotionView session.
  2. Open the Add Point or PointPair dialog in one of the following ways:
    • From the Project Browser right-click on Model and select Add Reference Entity > Point.
    • On the Model-Reference toolbar, right-click the (Point) icon.
  3. For Label, enter PivotPoint. Accept the default Variable name.
  4. Click OK.
  5. Click the Properties tab and specify the X, Y, and Z coordinates as 0.0.
  6. Repeat steps 2 through 4 for the points specified in Table 1.
    Table 1.
    Point X Y Z
    FollowerShaftCM 0.0 67.5 0.0
    FollowerTransJoint 0.0 85.0 0.0
    FollowerRevJoint 0.0 30.0 0.0
    CamCM 0.0 -14.1604 0.0

Create Bodies

In this step you will create bodies for the cam-follower model.

You will use pre-specified inertia properties to define the bodies.
  1. Open the Add Body or BodyPair dialog in one of the following ways:
    • From the Project Browser right-click on Model and select Add Reference Entity > Body.
    • On the Model-Reference toolbar, right-click on the (Body) icon.
  2. In the dialog, add the Cam, FollowerShaft, and FollowerRoller bodies.
    1. For the first Label, enter Cam. Click Apply
    2. For the second Label, enter FollowerShaft. Click Apply.
    3. For the third Label, enter FollowerRoller.
    4. Click OK to close the Add Body or BodyPair dialog.
      The bodies you created will appear in the Model Tree under the Bodies folder.
  3. In the Properties panel for each body:
    1. Clear the Get Properties from associated Graphic(s) check box.
    2. Specify the information given in Table 2.
    Table 2.
    Body Mass Ixx Iyy Izz Ixy Iyz Izx
    Cam 0.1724 59.339 62.6192 121.240 0.0 0.0 0.0
    FollowerShaft 0.0072 3.4270 0.0144 3.4270 0.0 0.0 0.0
    FollowerRoller 0.0030 0.0251 0.0251 0.0375 0.0 0.0 0.0
  4. Specify the CM Coordinate tab settings for the Cam body.
    1. Check the Use center of mass coordinate system box.
    2. Double-click .
    3. In the Select a Point dialog, choose CamCM.
    4. Click OK.
    5. Accept the defaults for axes orientation properties.
  5. Specify the CM Coordinate tab settings for the FollowerShaft body.
    1. Check the Use CM Coordsys box.
    2. Double-click .
    3. In the Select a Point dialog, choose FollowerShaftCM.
    4. Click OK.
    5. Accept the defaults for axes orientation properties.
  6. Specify the CM Coordinate tab settings for the FollowerRoller body.
    1. Check the Use CM Coordsys box.
    2. Double-click .
    3. In the Select a Point dialog, choose FollowerRevJoint.
    4. Click OK.
    5. Accept the defaults for axes orientation properties.

Create Joints

In this step you will create joints for the cam-follower model.

You will define all joints except for the CVCV joint, which you will define later.
  1. Open the Add Joint or JointPair dialog in one of the following ways:
    • From the Project Browser, right-click on Model and select Add > Constraint > Joint.
    • On the Model-Constraints toolbar, click the (Joints) icon.
  2. Create the CamPivot joint.
    1. In the Add Joint or JointPair, for Label enter CamPivot.
    2. For Type, select Revolute Joint.
    3. Click OK.
    4. In the Connectivity tab, double click on and resolve it to Cam.
    5. Resolve to Ground Body and click OK.
    6. In the Connectivity tab, double click and resolve it to PivotPoint.
    7. Change the Alignment Axis to . Resolve Vector to Global Z.
  3. Create the FollowerTransJoint.
    1. In the Add Joint or JointPair, for Label enter FollowerTransJoint.
    2. For Type, select Translational Joint.
    3. Click OK.
    4. In the Connectivity tab, double click on and resolve it to FollowerShaft.
    5. Resolve to Ground Body and click OK.
    6. In the Connectivity tab, double click and resolve it to FollowerTransJoint.
    7. Change the Alignment Axis to . Resolve Vector to Global Y.
  4. Create the FollowerRollerJoint.
    1. In the Add Joint or JointPair, for Label enter FollowerRollerJoint.
    2. For Type, select Revolute Joint.
    3. Click OK.
    4. In the Connectivity tab, double click on and resolve it to FollowerRoller.
    5. Resolve to FollowerShaft and click OK.
    6. In the Connectivity tab, double click and resolve it to FollowerRevJoint.
    7. Change the Alignment Axis to . Resolve Vector to Global Z.

Create Markers

In this step, you will create markers for the cam-follower model.

  1. Open the Add Marker or MarkerPair dialog in one of the following ways:
    • From the Project Browser, right-click on Model and select Add > Reference Entity > Marker.
    • On the Model-Reference toolbar, click the (Marker) icon.
  2. Create the CamMarker.
    1. In the Add Marker or MarkerPair dialog, for Label enter CamMarker.
    2. Click OK.
    3. In the Properties tab, double click on and resolve it to Cam and click OK.
    4. In the Properties tab, double-click and resolve it to PivotPoint.
    5. Click OK. Accept the defaults for axes orientation.
  3. Create the FollowerMarker.
    1. In the Add Marker or MarkerPair dialog, for Label enter FollowerMarker.
    2. Click OK.
    3. In the Properties tab, double click on and resolve it to FollowerRoller and click OK.
    4. In the Properties tab, double-click and resolve it to FollowerRevJoint.
    5. Click OK. Accept the defaults for axes orientation.

Create Graphics

In this step you will create graphics for the bodies and joints in the cam-follower model.

Use the provided h3d file for the cam graphics. The follower shaft and roller can be represented with primitive graphics.
  1. Open the Add Graphics or GraphicPair dialog in one of the following ways:
    • From the Project Browser, right-click on Model and select Add > Reference Entity > Graphics.
    • On the Model-Reference toolbar, click the (Graphics) icon.
  2. From the dialog, for Label, enter Cam.
  3. From the drop-down menu, click File.


    Figure 2.
  4. Click the (File Browser) icon and open the CamProfile.h3d from the model folder.
  5. Click OK.
  6. In the Connectivity tab, double-click on and resolve the graphic to the Cam body.
  7. Repeat step 1 to create another graphic. For Label, enter FollowerShaft.
  8. From the drop-down menu, select Cylinder and then click OK.
  9. In the Connectivity tab, double-click on and resolve the graphic to the FollowerShaft body.
  10. Double-click on and choose FollowerShaftCM. Then click OK.
  11. Change the Alignment Axis to . Resolve Vector to Global Y.
  12. In the Properties tab, specify the values in Table 3.
    Table 3.
    Property Value
    Length 75
    Offset -37.5
    Radius 1 2.000
    Radius 2 2.000
  13. For Cap Properties, choose Cap Both Ends.
  14. Repeat step 1 to create another graphic. Use the specifications given in Table 4 and Table 5.
    Table 4.
    Name Type Direction ()
    FollowerRoller Cylinder FollowerRoller FollowerRevJoint Global Z
    Table 5.
    Property Value
    Length 5.0
    Offset -2.5
    Radius 1 5.000
    Radius 2 5.000
  15. For Cap Properties, choose Cap Both Ends.
  16. Create CamPivotGraphicOne and CamPivotGraphicTwo using the specifications in Table 6 and Table 7.
    Table 6.
    Name Type Direction ()
    CamPivotGraphicOne Cylinder Ground Body PivotPoint Global Z
    CamPivotGraphicTwo Cylinder Cam PivotPoint Global Z
    Table 7.
    Name Property Value
    CamPivotGraphicOne Length 7.5
    Offset -3.75
    Radius 1 4.000
    Radius 2 4.000
    CamPivotGraphicTwo Length 7.6
    Offset -3.8
    Radius 1 2.000
    Radius 2 2.000
  17. Create RollerPivotGraphicOne and RollerPivotGraphicTwo.
    1. Put RollerPivotGraphicOne on the FollowShaft. In Properties, specify a length of 7.5 and a radius of 2.
    2. Put RollerPivotGraphicTwo on the FollowerRoller. In Properties, specify a length of 7.6 and a radius of 1.
  18. Create the FollowerTransJointGraphic.
    1. In the Add Graphics or GraphicPair dialog, select Box.
    2. In the Connectivity tab, double-click on and resolve the graphic to the Ground Body.
    3. From the Type drop-down menu, click Center.
    4. Double-click on and choose FollowerTransJoint. Then click OK.
    5. Under axis orientation, for the Z-axis choose the vector Global Z and for the ZX plane choose the vector Global X.
    6. From the Properties tab, specify the values in Table 8.
      Table 8.
      Property Value
      Length X 15
      Length Y 10
      Length Z 10
    You model should look like the example in Figure 3.


    Figure 3.

Create Curves

In this step you will create the curves that define the cam and the roller.

You have been provided with data for the cam profile curve in .csv format. The roller profile is circular, so you can define it with a mathematical expression.
  1. Open the Add Curve dialog by doing one of the following:
    • From the Project Browser, right-click on Model and select Add > Reference Entity > Curve.
    • On the Model-Reference toolbar, click the (Curves) icon.
  2. For Label, enter CamProfile and click OK.
  3. In the Properties tab, click the first drop-down menu and change the curve from 2D Cartesian to 3D Cartesian.
  4. Click the fourth drop-down menu and set the curve type to Closed curve.
  5. Click the x radio button.
  6. Click and open CamProfile.csv.
  7. Choose the properties of the curve given in Figure 4.
    Figure 4.
  8. Click the y radio button. Change the Component to Column 2.


    Figure 5.
  9. Click the z radio button. Change the Component to Column 3.


    Figure 6.
  10. Repeat step 1. In the dialog, for Label enter FollowerRollerProfile.
  11. Click OK.
  12. In the Properties tab, click the first drop-down menu and change the curve from 2D Cartesian to 3D Cartesian.
  13. Click the fourth drop-down menu and set the curve type to Closed curve.
  14. Click the x radio button. In the drop-down menu, click Math.
  15. In the Expression Builder, enter 5*sin(2*PI*(0:1:0.01)).
  16. Click the y radio button and choose Math in the drop-down menu.
  17. In the Expression Builder, enter 5*cos(2*PI*(0:1:0.01)).
  18. Click the z radio button and choose Math from the drop-down menu.
  19. In the Expression Builder, enter 0.0*(0:1:0.01).

Create the CVCV Joint

In this step you will create the CVCV (curve-to-curve) joint.

  1. Open the Add AdvJoint dialog by doing one of the following:
    • From the Project Browser, right-click on Model and select Add > Constraint > Advanced Joint.
    • On the Model-Reference toolbar, click the (Advanced Joint) icon.
  2. In the dialog, for Label enter CVCV.
  3. Choose CurveToCurveJoint in the drop-down menu and click OK.
  4. In the Connectivity tab, double-click each collector (, , , ) and specify the connections shown in Figure 7.
    Figure 7.

Specify the Cam Motion

In this step, you will specify a motion for the cam using an expression.

  1. Open the Add Motion or MotionPair dialog by doing one of the following:
    • From the Project Browser, right-click on Model and select Add > Constraint > Motion.
    • On the Model-Reference toolbar, click the (Motion) icon.
  2. In the dialog, enter the Label CamMotion and click OK.
  3. In the Connectivity tab, double-click . Choose CamPivot and click OK.
  4. in the Properties tab, in the drop-down menu define the motion by Expression.
  5. Enter `10*TIME` in the Expression field.


    Figure 8.

Specify Gravity

In this step you will specify gravity for the model in the negative Y direction.

  1. In the Project Browser, click to expand Misc. > Forms.
  2. In the Forms folder, click Gravity. In the panel, specify the following values:
    • X Component = 0
    • Y Component = -9810
    • Z Component = 0

Specify Output Requests

In this step, you will specify output requests.

  1. Open the Add Output dialog by doing one of the following:
    • From the Project Browser, right-click on Model and select Add > General MDL Entity > Output.
    • On the General toolbar, click the (Outputs) icon.
  2. In the dialog, for Label enter CVCV Reaction and click OK.
  3. In the Properties tab, from the drop-down menu define the output by Expression.
  4. Click in the F2 field to activate the button.
  5. Click the button.
  6. In the Expression Builder, populate the expression as 'CVCV({aj_0.idstring},1,2,0)'.


    Figure 9.
  7. Click OK.
  8. Repeat steps 4 through 6 for F3, F4, F6, F7, and F8 by changing the third parameter in the expression to 3, 4, 6, 7, and 8 accordingly.
    The CVCV (id, jflag, ref_marker) function returns the reaction on the CVCV joint:
    • id ID of the CVCV joint
    • jflag 0 gives reaction on the I-marker and 1 on J-marker
    • comp component of the reaction
    • ref_marker reference marker (0 implies Global Frame)

Run the Model

In this step you will run the cam-follower model.

  1. On the toolbar, click (Run).
  2. In the Run panel, specify the values shown in Figure 10.


    Figure 10.
  3. Click the Save and run current model radio button.
  4. Click the (browser icon) and specify a name for the solver file.
  5. Click Save.
  6. Click the (Check Model) button to check the model for errors.
  7. To invoke the solver, click the Run button.
  8. Once the solver has finished, click the (Start/Pause Animation) button to view the animation.

View the Results

In this step you will learn how to view the animation and plot the Y displacement of the follower.

  1. Once the solver has finished, the Animate button will be active. Click on Animate.
    Click the (Start/Pause Animation) button to view the animation.

    One would also like to inspect the displacement profile of the follower in this mechanism. For this, you will plot the Y position of the center of mass of the follower.

  2. From the Page Controls toolbar, click > . Click in the window on the lower right to make it the active window.
  3. In the Select application drop-down menu, change the client from MotionSolve to HyperGraph 2D .
  4. On the Curves toolbar, click (Build Plots).
  5. Click the (file browser) and open the results.abf file.
  6. Configure the Plots panel as show in Figure 11.
    Figure 11.
  7. Click Apply. This will plot the Y profile of the center of mass of the follower.
    The profile for the Y displacement of the follower should look like the example in Figure 12.
    Figure 12.
    Set the X-axis properties to zoom in on one cyle and the profile will look like the example in Figure 13.


    Figure 13.

Check the Model for Potential Lift-Off

In this step, you will check the cam-follower mechanism for potential lift-off by plotting the Y profile of the CVCV reaction on the follower roller.

In some cases, the dynamics of the system may cause the follower to lose contact with the cam. This is called ‘lift-off’. In such cases, modeling the system with a CVCV will give you incorrect results because the joint constrains the follower point to always be on the curve (and hence cannot model lift-offs). For such cases, you must use contact modeling (refer to MV-1010: 3D Mesh to Mesh Contact Simulation). However, you will want to start with a CVCV model since it is a lot easier than modeling contact. Given this scenario, model the system using a CVCV joint and monitor the CVCV joint reaction. If the reaction on the follower is a ‘pulling’ reaction, this indicates lift-off would have occurred and you must switch to a contact model. Otherwise, the contact model is unnecessary. Now, you will check the model you used in the tutorial. The follower is moving along the Y-axis, so any negative reation along the Y-axis is a 'pulling' reaction.
  1. Click (Add Page) to add a new page to the session.
  2. Switch the client to HyperGraph 2D .
  3. Click on (Build Plots).
  4. Click on (browser icon) and load the results.abf file.
  5. Configure the Plot panel as shown in Figure 14.


    Figure 14.
  6. Click OK to plot the Y profile of the CVCV reaction on the follower roller.


    Figure 15.
  7. Scale the x-axis to view one cycle on the profile.


    Figure 16.
    As shown in Figure 16, the Y component of the CVCV reaction on the follower is always positive. There is no pulling reaction, so the CVCV model is acceptable for this mechanism.