[770c98]: / Application / Examples / BikeModel2D / Model / BikeFrameAndWheels.any

Download this file

87 lines (74 with data), 2.7 kB

/** This folder contains the definition of the bicycle
- GlobalRefFrame
- BikeFrame
- Crank motion and loading
- Rear wheel definition   
*/
AnyFolder BikeModel = {
  
  //Bike Segment
  AnySeg BikeFrame = {
    Jii = {0.00,0.00,0.00};
    Mass =0.0; 
    AnyRefNode SaddelPos = {
      AnyDrawNode SaddelNode={};
      sRel = {Main.BikeParameters.SaddlePos,Main.BikeParameters.SaddleHeight,0}; 
    };
    AnyRefNode Crank = { sRel = {0,0,0}; };
    AnyRefNode Wheel = { sRel = {-0.45,0.01,0}; };
    
    AnyDrawSurf BikeFrameSurf ={
      FileName = "../Input/bikeframe";
      ScaleXYZ={0.9,0.9,0.9};
      RGB=....DrawSettings.Colors.AnyBodyBlue;
    };  
  };  // BikeFrame
  
  AnySeg Crank = {
    Mass=0.5;
    Jii = {0.001,0.001,0.001};
    
    AnyRefNode CrankJoint = { sRel = {0,0,0}; };
    AnyRefNode RPedal = { sRel = {0,....BikeParameters.PedalArmLength,....BikeParameters.PedalArmWidth}; };      
    AnyRefNode LPedal = { sRel = {0,-....BikeParameters.PedalArmLength,-....BikeParameters.PedalArmWidth}; };      
    AnyDrawSurf CrankSurf ={
      FileName = "../Input/crank";
      ScaleXYZ={0.9,0.9,0.9};
      RGB=....DrawSettings.Colors.AnyBodyGreen; 
    };
  };//Crank
  
  AnyRevoluteJoint CrankJoint ={
    Axis = z;
    AnyRefNode &Ground = .BikeFrame.Crank;
    AnyRefNode &Crank = .Crank.CrankJoint;     
  };
  
  AnyKinEqSimpleDriver CrankRotation = {
    AnyRevoluteJoint &Jnt = .CrankJoint;
    DriverPos = {0};
    DriverVel = {-(...BikeParameters.Cadence/60)*pi*2};
    Reaction.Type = {Off}; //This has to be zero otherwise the driver will carry the applied moment
  };
  
  //This is the definiton of the crank moment
  AnyForce CrankMoment ={
    AnyJoint &Jnt=.CrankJoint;
    F={...BikeParameters.CrankMomentOffset-...BikeParameters.CrankMomentAmp*cos(4*pi*t/...BikeParameters.T+ ...BikeParameters.CrankMomentPhase)};
  };
  
  // This is the definition of the rear wheel. It is pure graphics!
  AnySeg RearWheel = {
    Mass=0.0;
    Jii = {0.00,0.00,0.00};
    AnyRefNode Wheel = { sRel = {0,0,0}; };
    
    AnyDrawSurf CrankSTL ={
      FileName = "../Input/wheel";
      ScaleXYZ={0.9,0.9,0.9};
      RGB=....DrawSettings.Colors.AnyBodyGreen;
    };  
  };
  
  AnyRevoluteJoint WheelJoint ={
    Axis = z;
    AnyRefNode& Ground = .BikeFrame.Wheel;
    AnyRefNode &Wheel = .RearWheel.Wheel;     
  };
  
  AnyKinEqSimpleDriver WheelRotation = {
    AnyRevoluteJoint &Jnt = .WheelJoint;
    DriverPos = {0};
    DriverVel = -{0.9*(...BikeParameters.Cadence/60)*pi*2};
    Reaction.Type = {On}; //Setting Reaction.Type=1 means the joint should provide the needed moment to turn the wheel
  };
}; //Bikemodel