Force-Controlled Analysis of a Flexible Robot Arm

THIS PAGE IS UNDER CONSTRUCTION .....

[ Problem Statement ] [ Finite Element Mesh ] [ Displacements ] [ Input/Output Files ]

You will need Aladdin 3.0 to run this problem.


PROBLEM STATEMENT

Figure 1 shows an elevation and cross sectional view of a pipe

Figure 1 : Pipe Elevation and Cross Section Views

loaded by two-line loads P = 12 kN/m. The inside and outside diameters of the pipe are 20 cm and 30 cm, respectively. We assume that the pipe is fully-fixed in its longitudinal direction (i.e., strains in the longitudinal direction are zero). The material properties are Young's modulus = 200 GPa and Poisson's ration = 1/3.

This example presents a finite element analysis of the steel pipe cross-section, assuming plane-strain behavior. We will:


FINITE ELEMENT MESH

Because the pipe cross section has axes of symmetry on both the horizontal and vertical axes, we need only model 1/4 of the pipe cross section.

Figure 2 : Finite Element Mesh for Pipe Cross Section

Figure 2 is a MATLAB plot of the 1/4 pipe cross section. Although the finite elements will be represented by a (x,y) cartesian coordinate system, the mesh is most easily generated with a (radius, angle) polar coordinate system. The block of code:

    radius_min  = 10.0 cm;   angle_min  =    0.0; 
    radius_max  = 15.0 cm;   angle_max  =   PI/2;
    radius_incr =  0.5 cm;   angle_incr =  PI/16;

    node  = 0;
    angle = angle_min;
    while( angle <= angle_max ) {

       radius = radius_min;
       while( radius <= radius_max ) {
          node = node + 1;
          x = radius*cos(angle);
          y = radius*sin(angle);

          if ( abs(x) <= 0.0000001 cm ) { x = 0.0 cm; }
          if ( abs(y) <= 0.0000001 cm ) { y = 0.0 cm; }

          AddNode(node, [ x, y]);
          radius = radius + radius_incr;
       }
       angle = angle + angle_incr;
   }

generates the circular grid of 99 nodes

    =================================================
    Node                 x (cm)                y (cm)
    =================================================
       1                  10.0                    0.0
       2                  10.5                    0.0
       3                  11.0                    0.0

       ...........

      98                   0.0                   14.5
      99                   0.0                   15.0
    =================================================

We use the test:

    if ( abs(x) <= 0.0000001 cm ) { x = 0.0 cm; }
    if ( abs(y) <= 0.0000001 cm ) { y = 0.0 cm; }

to ensure that nodes along the horizontal and vertical axes are "exactly" positioned.

Eighty finite elements are attached to the nodes with the block of commands:

    nodeno = 0; elmtno = 0;
    for ( i = 0; i < 8; i = i + 1 ) {
        nodeno = 11*i;
        for ( j = 1; j <= 10; j = j + 1 ) {
            nodeno = nodeno + 1;
            elmtno = elmtno + 1; 
            AddElmt( elmtno, [ nodeno, nodeno + 1, nodeno + 12, nodeno + 11 ], "pipe" );
        }
    }

Section and Material Properties

The block of code:

    ElementAttr("pipe") { type     = "PLANE_STRAIN";
                          section  = "mysection";
                          material = "mymaterial"; }

    SectionAttr("pipesection") { depth = 30 cm;
                                 width = 30 cm; }

    MaterialAttr("pipematerial") { poisson = 1/3;
                                   yield   = 36000;
                                   E       = 200 GPa; }

defines the material properties and plain-strain modeling assumption for the "pipe" element attribute.

Boundary Conditions

We assume that nodes along the vertical axis (i.e., x = 0) are restrained in the x-direction but can freely move in the y-direction. The block of commands:

    for (ii = 1; ii <= 11; ii = ii + 1 ) {
         FixNode( ii , [0,1] );
    }

applies this boundary condition to nodes 1 through 11.

Similarly, nodes along the horizontal axis (i.e., y = 0) are fixed in the vertical direction, but allowed to freely displace in the horizontal direction.

After the boundary conditions have been applied, the finite element model has 176 degrees of freedom.

External Loads

We assume that each half of the pipe section carries 6 kN/cm, exactly, ahd that the loads are carried by equally by nodes in the two uppermost finite elements. The block of commands:

    Fx =  0.0 kN; Fy = 3.0 kN;
    NodeLoad( 88, [  Fx, -Fy ]);
    NodeLoad( 99, [  Fx, -Fy ]);

applies nodal loads of -3.0 kN to nodes 88 and 89.


DISPLACEMENTS

Only three Aladdin statements:

    stiff = Stiff();
    eload = ExternalLoad();
    displ = Solve(stiff, eload);

are needed to for the stiffness matrix, external load vector, and compute the displacements. The command:

    PrintDispl(displ);

generates the output:

   ==========================================
    Node                  Displacement       
      No            displ-x           displ-y
   ==========================================
    units                 m                 m 
      1        -2.60880e-08       0.00000e+00
      2        -2.63854e-08       0.00000e+00
      3        -2.65135e-08       0.00000e+00
      4        -2.63598e-08       0.00000e+00

      ........ 

     97         0.00000e+00      -4.45024e-08
     98         0.00000e+00      -5.45846e-08
     99         0.00000e+00      -9.30605e-08
   ==========================================

As expected, the nodes along the vertical axis move downwards under the vertically applied loads. Intuition also dictates that the nodes along the horizontal axis will move outwards -- the numerical results indicate, however, a small displacement inwards.


Figure 4 : Distribution of sigma_yy Stresses


INPUT AND OUTPUT FILES


Developed in 2000 by Mark Austin,
Copyright © 2000, Mark Austin, University of Maryland.