SimMechanics Previous page   Next Page

Actuating a Joint

You individually actuate each of the prismatic and revolute primitives of an assembled joint. You can apply

To actuate a prismatic or revolute joint primitive of an assembled joint:

  1. Create an Actuator port on the Joint block for the primitive (see Creating Actuator and Sensor Ports on a Joint).
  2. Drag a Joint Actuator or Joint Stiction Actuator from the Sensors & Actuators library into your model and connect its output port to the Actuator port on the Joint.

  1. The remaining steps in this procedure apply to the creation of a standard Joint Actuator. For information on creating a stiction actuator, which applies classical Coulombic friction to a prismatic or revolute joint, see the Joint Stiction Actuator block reference page.

  1. Open the Joint Actuator's dialog box.
  2. Select the primitive you want to actuate from the Connected to primitive list on the dialog box.
  3. Select the type of actuation you want to apply, either Generalized forces or Motion.
  4. If you are actuating a prismatic primitive:
  5. If you are actuating a revolute primitive:
  6. Click OK to apply your choices and dismiss the dialog box.

  1. Each joint primitive that you motion-actuate is lost as a true degree of freedom in your machine. That is because the DoF can no longer respond freely to externally applied forces or torques. See Counting Degrees of Freedom.

  1. Create a signal that specifies the applied force, torque, or motions at each time step.

  1. You can use any Simulink source block or any combination of blocks to create the actuator signal. You can also connect the output of a Sensor block attached to the Joint to the Actuator input, thereby creating a feedback loop. You can use such loops to model springs and dampers attached to the joint.

    A force or torque signal must be a scalar signal. A motion signal must be a 1-D array signal comprising three components: position, velocity, and acceleration. The directionality of the joint determines the response of the follower to the sign of the actuator signal (see Joint Directionality).

  1. Connect the Actuator signal to the Actuator port on the Joint.

Joint Actuator Example: Body Driver

The mech_body_driver model illustrates the use of Joint Actuators to create a custom driver.

The Body Driver subsystem accepts an 18-component signal that feeds the coordinates, velocities, and accelerations for all six relative DoFs between Body and Body1. The subsystem uses a Bushing block that contains three translational and three rotational primitives to represent the relative DoFs:

You can modify the body driver to move only one of the bodies, thereby creating a motion actuator. To move Body1 relative to World, for example, remove the blocks Body and Weld and connect the subsystem Body Driver directly to Ground.

Joint Stiction Actuator Example: Mixed Static and Kinetic Friction

The mech_dpen_sticky model in the Demos library illustrates a driven double pendulum, with "sticky" friction or stiction applied to both revolute joints with the Joint Stiction Actuator block.

Open the unmasked Joint1 or Joint2 Stiction Model blocks (marked in yellow) to view the subsystems:

Each Stiction subsystem contains a Joint Stiction Actuator block (marked in orange) that requires static and kinetic friction coefficients via their respective blocks. For either revolute, an angular velocity threshold, specified through the block dialog, determines if a joint locks. Once locked, the joint cannot move until a combination of forces reaches a threshold specified by the Forward Stiction Limit or Reverse Stiction Limit.

Run the model with different kinetic and static friction coefficients and different velocity thresholds. View the results in the Scope blocks and through a visualization window. You can find more details on how stiction works in SimMechanics by consulting the Joint Stiction Actuator block reference page.

Actuating a Driver

Actuating a Driver allows you to specify the time dependence of the rheonomic constraint applied by the Driver.

To actuate a Driver:

  1. Create an additional connector port on the Driver for the Actuator.

  1. Create the additional port in the same way you create an additional Driver port on a Joint (see Creating Actuator and Sensor Ports on a Joint).

  1. Drag an instance of a Driver Actuator from the Sensors & Actuators library into your model.
  2. Connect the Actuator's output port to the Actuator port on the Driver.
  3. Create a signal that specifies the time dependence of the Driver constraint.
  4. Connect the actuation signal to the input port of the Driver Actuator.

Specifying Initial Positions and Velocities

The Joint Initial Condition Actuator (JICA) block allows you to specify the initial positions and velocities of unactuated joints and hence the bodies attached to them. You can use JICA blocks to

Using JICA Blocks

Specifying initial conditions on a joint primitive is a special kind of actuation: one that occurs only once at the beginning of simulation. That is why the JICA block resides in the Sensors & Actuators library.

With a JICA block, you can specify the initial positions and velocities of any combination of prismatic and revolute primitives within a given Joint. (You cannot specify ICs for spherical and weld primitives.)

To specify the initial velocity and/or position of a joint primitive:

  1. Drag a JICA block from the Sensors & Actuators library and drop it into your model window.
  2. Create an additional connector port on the Joint block containing the primitive whose initial condition you want to specify.
  3. Connect the connector port on the JICA block to the new connector port on the Joint block.

  1. Open the JICA block's dialog box. From the primitive list for the Joint, choose the primitives you want to actuate by selecting their check boxes.
  2. Enter the initial positions of the actuated primitives, relative to the Body CSs attached to the Joint, in the Position field.

  1. From the pull-down menu on the right, select Units for the initial positions.

  1. Enter the initial velocities of the actuated primitives, relative to the Body CSs attached to the Joint, in the Velocity field.

  1. From the pull-down menu on the right, select Units for the initial velocities.

  1. Click Apply or OK.

JICA Example: A Simple Pendulum

Open mech_spen from the Demos library, then open the Sensors & Actuators library. Follow the steps from the preceding section, Using JICA Blocks, to connect one Joint Initial Condition Actuator block to the Revolute block and configure it. This Joint contains only one primitive, R1, which is the primitive listed in the JICA dialog box.

Set the initial conditions in two ways and compare the resulting simulations in the scope:

  1. First set the initial Position (angle) to 60 deg, which is 60o down from the left horizontal (30o clockwise from vertically down), and set the initial Velocity to 0 deg/s.
  2. Run the simulation for one second. Note in the scope that the initial angle (yellow curve) is displaced upward to 60o, while the initial velocity (purple curve) still starts at zero.

  3. Now reset the initial Velocity to 30 deg/s, leaving the initial Position (angle) at 60 deg.
  4. Rerun the simulation for one second. Note in Scope that the initial angle is still displaced upward to 60o, but the initial velocity is also displaced upward to 30o/sec.

The joint directionality is assigned in mech_spen so that the positive rotation axis is the +z-axis. Looking from the front, positive rotation swings down and right, counterclockwise.


Previous page  Modeling Actuators Modeling Force Elements Next page

Learn more about the latest releases of MathWorks products:

 © 1994-2008 The MathWorks, Inc.    -   Site Help   -   Patents   -   Trademarks   -   Privacy Policy   -   Preventing Piracy   -   RSS