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