Comparing Impact Equations for Conservation of Angular Momentum to Perfectly Plastic Impacts: Application to a 2-D Point-footed Walker.

Robert D. Gregg
rdgregg@eecs.berkeley.edu
Aaron D. Ames
adames@eecs.berkeley.edu
Center for Hybrid and Embedded Software Systems
Electrical Engineering and Computer Sciences
University of California, Berkeley

Conservation of Angular Momentum

From Goswami et al:

Qbefore  =  {{-m a b,  -m a b + (M L^2 + 
                    2 m a L) Cos[θns[t] - θs[
                      t]]}, {0, - 
                m a b}};
Qafter  =   {{m b (b - 
                  L Cos[θns[t] - θs[t]]),  
            m L (L - b Cos[θns[t] - θs[t]]) +  
              m a^2  +  
              M L^2}, {m b^2,  -m b L Cos[θns[t] - θs[
                    t]]}};
QafterInv  =  Inverse[Qafter];
MatrixForm[H  =  FullSimplify[QafterInv . Qbefore]]

FullSimplify[H . {θns'[t],  θs'[t]}]

angconsimpact  =  % /. {L -> a + b}  // FullSimplify

Perfectly Plastic Impacts

Method obtained from Bullo et al:

Generalized M matrix

MatrixForm[
      Mmatrix  =  {{(b^2) m, -b (a + 
                  b) m Cos[θns[t] - θs[
                    t]], -b m Cos[θns[t]], 0, 
            b m Sin[θns[t]]}, {-b (a + 
                  b) m Cos[θns[t] - θs[t]], (2 (a^2) + 
                    2 a b + 
                    (b^2)) m + (((a + b))^2) M, (b (m + M) + 
                  a (2 m + M)) Cos[θs[t]], 
            0, (-b (m + M) - a (2 m + M)) Sin[θs[
                  t]]}, {-b m Cos[θns[t]], (b (m + M) + 
                  a (2 m + M)) Cos[θs[t]], 2 m + M, 0, 
            0}, {0, 0, 0, 2 m + M, 
            0}, {b m Sin[θns[t]], (-b (m + M) - 
                  a (2 m + M)) Sin[θs[t]], 0, 0, 
            2 m + M}}]

l  =  a + b;
Pos1  = 
        l Sin[θs[t]]  -  l Sin[θns[t]]  +  
          x[t];
Pos2  =  y[t];
Pos3  =  
        l Cos[θs[t]]  -  l Cos[θns[t]] + 
          z[t];
MatrixForm[
      F  =  FullSimplify[
{{D[Pos1, θns[t]], 
              D[Pos1, θs[t]], D[Pos1, x[t]], D[Pos1, y[t]], 
              D[Pos1, z[t]]}, 
{D[Pos2, θns[t]], 
              D[Pos2, θs[t]], D[Pos2, x[t]], D[Pos2, y[t]], 
              D[Pos2, z[t]]}, 
{D[Pos3, θns[t]], 
              D[Pos3, θs[t]], D[Pos3, x[t]], D[Pos3, y[t]], 
              D[Pos3, z[t]]}}]]

MatrixForm[
      nFT  =  Join[-Transpose[F], {{0, 0, 0}, {0, 0, 0}, {0, 0, 
              0}}]]

MatrixForm[
      FullMatrix  =  
        Transpose[
          Join[Transpose[Join[Mmatrix, F]], Transpose[nFT]]]]

MatrixForm[
      DMatrix  =  
        Join[Mmatrix . {θns'[t], θs'[t], 0, 0, 0}, {0, 
            0, 0}]]

K  =  Inverse[FullMatrix] . DMatrix;

plasticimpact  =  {FullSimplify[K[[2]]], 
        FullSimplify[K[[1]]]}

Compared to the angular conservation impact equations...

angconsimpact

The two methods ARE equivalent:

plasticimpact  ==  angconsimpact  // FullSimplify