--- a +++ b/Application/Examples/BikeModel2D/Model/BikeFrameAndWheels.any @@ -0,0 +1,86 @@ +/** 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 +