MAMBO logo MAMBO & the MAMBO Toolbox MAMBO logo

Sample project - Saw

To illustrate the geometric structure of an open-loop mechanism.

This Mambo project contains a non-stationary radial arm saw and a stationary table. The configuration of the non-stationary saw may be specified in four independent steps, namely
  1. Position the arm vertically relative to the table.
  2. Orient the arm relative to the vertical bench support.
  3. Position the blade trolley relative to the arm.
  4. Orient the blade support relative to the trolley.
  5. Orient the blade relative to the trolley.

p1 and p2: displacements of the centers of the blade support relative to the tool arm and of the blade relative to the blade support.

q1: vertical displacement of the arm.

q2: rotation angle of the arm about the vertical direction.

q3: displacement of the trolley from the bench support.

q4: rotation angle of the blade support about the direction parallel to the arm.

q5: rotation angle of the blade relative to the blade support.

saw.zip (zip file, 8 kb, December 30, 2012)
This zip archive contains MAMBO and the MAMBO toolbox source files to visualize the MAMBO project and regenerate visualization files using maple 16, mupad 5.6.0 (matlab R2011a), and mathematica 8.0 versions of the code found below.


Click here to expand/contract!
>Restart():

Click here to expand/contract!
>DeclareObservers(W,A,B,C,D):
>DeclarePoints(W,A,B,C,D):
>DeclareTriads(w,a,b,c,d):
>DefineObservers([W,W,w],[A,A,a],[B,B,b],[C,C,c],[D,D,d]):
>DefinePoints([W,A,w,0,0,q1],[A,B,a,0,q3,0],[B,C,a,0,0,-p1],[C,D,c,0,0,p2]):
>DefineTriads([w,a,q2,3],[a,b,0,1],[b,c,q4,2],[c,d,q5,3]):
>DefineNeighbors([W,A],[A,B],[B,C],[C,D]):

Click here to expand/contract!
>DefineObjects(
   [W,'Block',point=MakeTranslations(w,0,5.6,-1/10),xlength=16,ylength=10,zlength=1/5,color=green],
   [W,'Block',point=MakeTranslations(w,-7.6,1,-2.51),xlength=1/3,ylength=1/3,zlength=5,color=green],
   [W,'Block',point=MakeTranslations(w,-7.6,10.2,-2.51),xlength=1/3,ylength=1/3,zlength=5,color=green],
   [W,'Block',point=MakeTranslations(w,7.6,10.2,-2.51),xlength=1/3,ylength=1/3,zlength=5,color=green],
   [W,'Block',point=MakeTranslations(w,7.6,1,-2.51),xlength=1/3,ylength=1/3,zlength=5,color=green],
   [W,'Cylinder',point=MakeTranslations(w,0,0,2),radius=.4,length=6,color="{.8,.8,.8}"],
   [W,'Block',point=MakeTranslations(w,0,.4,-1/10),xlength=1.4,ylength=2.6,zlength=1,color="{1,1,0.5}"]): #Bench
>DefineObjects([A,'Block',point=MakeTranslations(a,0,2.4,0),xlength=1.4,ylength=8,zlength=1,color="{1,1,0.5}"]): #Arm
>DefineObjects(
   [B,'Block',point=MakeTranslations(b,0,1.4,-1.5),xlength=1.72,ylength=.2,zlength=2,color=magenta],
   [B,'Block',point=MakeTranslations(b,0,-1.4,-1.5),xlength=1.72,ylength=.2,zlength=2,color=magenta],
   [B,'Block',point=MakeTranslations(b,0,0,-.7),xlength=1.72,ylength=3,zlength=.4,color=magenta],
   [B,'Block',point=MakeTranslations(b,.8,-1.4,0),xlength=.12,ylength=.2,zlength=1.2,color=magenta],
   [B,'Block',point=MakeTranslations(b,-.8,-1.4,0),xlength=.12,ylength=.2,zlength=1.2,color=magenta],
   [B,'Block',point=MakeTranslations(b,-.8,1.4,0),xlength=.12,ylength=.2,zlength=1.2,color=magenta],
   [B,'Block',point=MakeTranslations(b,.8,1.4,0),xlength=.12,ylength=.2,zlength=1.2,color=magenta],
   [B,'Cylinder',point=MakeTranslations(b,0,0,-1.5),orient=MakeRotations(Pi/2,1),length=3.4,radius=.15,color="{.5,.25,.8}"]): #Trolley
>DefineObjects(
   [C,'Block',point=MakeTranslations(c,0,0,.3),xlength=.8,ylength=1.7,zlength=2,color="{1,.5,0.5}"],
   [C,'Cylinder',point=MakeTranslations(c,0,0,.5),length=2.5,radius=.15,color="{.5,.25,.8}"]): #Blade support
>elements:=20:
>DefineObjects(
   [D,'Block',xlength=1,ylength=1/15,zlength=1/10,color=black],
   [D,'Cylinder',radius=1,length=1/15,color="{1,.5,.5}"],
   seq([D,'Block',point=MakeTranslations(d,.93*cos((i-1)/elements*2*Pi),.93*sin((i-1)/elements*2*Pi),0),orient=MakeRotations((i-1)/elements*2*Pi-1,3),xlength=.4,ylength=1/7,zlength=1/16,color="{1,.5,.5}"],i=1..elements)): #Blade

Click here to expand/contract!
>GeometryOutput(main=W,states=[q1,q2,q3,q4,q5],parameters=[p1,p2,Pi],checktree,checkargs,filename="saw.geo");
>MotionOutput(ode={q1t=u1,q2t=u2,q3t=u3,q4t=u4,q5t=u5},insignals=[u1=(t&>=0)*(t&<1),u2=-.5*(t&>=1)*(t&<2),u3=3*(t&>=2)*(t&<3)+cos(t-4)*(t&>=4),u4=.5*(t&>=3)*(t&<4),u5=-2.0],parameters=[p1=1.5,p2=1.75,Pi=3.1416],states=[q1=2,q2,q3,q4=1.6,q5],checksings,checkargs,filename="saw.dyn");

Sample projects