--- a +++ b/Application/Examples/WheelChairRancho/Model/JointsAndDrivers.any @@ -0,0 +1,195 @@ +/* ---------------------------------------------------------------- +Drivers for the model: + +-The model is driven by connecting recorded markers with equivalnet markers on the body + +Soeren, March 15, 2006. +---------------------------------------------------------------- */ + +AnyFolder Drivers = { + + // Aliases for convenient referencing + AnyFolder &JntPos=..Mannequin.Posture; + AnyFolder &JntVel=..Mannequin.PostureVel; + + AnyFolder &Thorax = ..BodyModel.Trunk.SegmentsThorax.ThoraxSeg; + AnyFolder &ref=Main.Model.BodyModel.Trunk; + + + // ************************************ + // Drivers for attaching the pelvis to the global reference system + // ************************************ + + AnyKinEqSimpleDriver PelvisGroundDriver ={ + AnyKinRotational rot ={ + AnyFixedRefFrame &ref1 =....EnvironmentModel.GlobalRef; + AnySeg &ref2 =....BodyModel.Trunk.SegmentsLumbar.PelvisSeg; + Type=RotAxesAngles; + }; + DriverPos={ + + pi/180*.JntPos.PelvisRotZ, + pi/180*.JntPos.PelvisRotY, + pi/180*.JntPos.PelvisRotX + }; + DriverVel={ + + pi/180*.JntVel.PelvisRotX, + pi/180*.JntVel.PelvisRotY, + pi/180*.JntVel.PelvisRotZ + }; + + Reaction.Type={On,On,On}; + + }; + + AnyReacForce PelvisGroundLinReac={ + AnyKinLinear lin ={ + AnyFixedRefFrame &ref1 =....EnvironmentModel.GlobalRef; + AnySeg &ref2 =....BodyModel.Trunk.SegmentsLumbar.PelvisSeg; + }; + }; + + + + AnyKinEqSimpleDriver IncisuraJungularisDrv = { + AnyKinLinear lin = { + Ref=1; + AnySeg &ref1 = Main.Model.Markers.MAN.Seg; + AnyRefNode &ref2 = Main.Model.BodyModel.Trunk.SegmentsThorax.ThoraxSeg.IncisuraJungularisMarker; + }; + MeasureOrganizer={0,1,2}; + DriverPos={0,0.0,0}; + DriverVel={0,0,0}; + Reaction.Type={Off,Off,Off}; + }; + + + + AnyKinEqSimpleDriver ProcessusXiphoideus = { + AnyKinLinear lin = { + Ref=0; + AnyRefNode &ref2 = Main.Model.BodyModel.Trunk.SegmentsThorax.ThoraxSeg.ProcessusXiphoideusMarker; + AnySeg &ref1 = Main.Model.Markers.XIP.Seg; + //ref2={AnyDrawRefFrame drwq={};}; + + }; + MeasureOrganizer={0,2}; + DriverPos={0.0,0}; + DriverVel={0,0}; + Reaction.Type={Off,Off}; + }; + + + AnyKinEqSimpleDriver T10Drv = { + AnyKinLinear lin = { + Ref=1; + AnySeg &ref1 = Main.Model.Markers.T10.Seg; + AnyRefNode &ref2 = Main.Model.BodyModel.Trunk.SegmentsThorax.ThoraxSeg.T10Marker; + }; + MeasureOrganizer={2}; + DriverPos={0}; + DriverVel={0}; + Reaction.Type={Off}; + }; + + + + // ************************************ + // Drivers for the spine + // ************************************ + + //Neck driver + AnyKinEqSimpleDriver NeckJntDriver = { + AnyKinMeasure& lb = ...BodyModel.Interface.Trunk.SkullThoraxLateralBending; + AnyKinMeasure& ar = ...BodyModel.Interface.Trunk.SkullThoraxRotation; + AnyKinMeasure& fe = ...BodyModel.Interface.Trunk.SkullThoraxFlexion; + DriverPos = pi/180*{.JntPos.NeckLateralBending, .JntPos.NeckRotation, -1*.JntPos.NeckExtension}; + DriverVel = pi/180*{.JntVel.NeckLateralBending, .JntVel.NeckRotation, -1*.JntVel.NeckExtension}; + Reaction.Type = {Off, Off, Off}; + }; + + + + // ************************************ + // Drivers for the right arm + // ************************************ + + + //Sterno clavicular joint driver + AnyKinEqSimpleDriver SCDriverRight ={ + AnyKinMeasure& ref1 =...BodyModel.Interface.Right.SternoClavicularProtraction; + AnyKinMeasure& ref2 =...BodyModel.Interface.Right.SternoClavicularElevation; + DriverPos = pi/180*{ + .JntPos.Right.SternoClavicularProtraction, + .JntPos.Right.SternoClavicularElevation + }; + DriverVel = { + .JntVel.Right.SternoClavicularProtraction, + .JntVel.Right.SternoClavicularElevation + }; + Reaction.Type={Off,Off}; + }; + + + AnyKinEqSimpleDriver RightLateralEpicondyleDrv ={ + AnyKinLinear Lin={ + Ref=0; + AnyRefFrame &ref1 = Main.Model.BodyModel.Right.ShoulderArm.Seg.Humerus.LateralEpicondyleMarker; + AnyRefFrame &ref2=Main.Model.Markers.RLEP.Seg; + }; + MeasureOrganizer={0,2}; + DriverPos={0,0}; + DriverVel={0,0}; + Reaction.Type={Off,Off}; + }; + + + + AnyKinEqSimpleDriver RadialStyloidMarkerDrv ={ + AnyKinLinear Lin={ + Ref=0; + //ref1={AnyDrawRefFrame drw2={};}; + AnyRefFrame &ref1 = Main.Model.BodyModel.Right.ShoulderArm.Seg.Radius.RadialStyloidMarker; + AnyRefFrame &ref2=Main.Model.Markers.RRSP.Seg; + + }; + MeasureOrganizer={2}; + DriverPos={0}; + DriverVel={0}; + Reaction.Type={Off}; + + + + }; + + + + AnyKinEqSimpleDriver UlnaStyloidMarkerDrv ={ + AnyKinLinear Lin={ + Ref=0; + AnyRefFrame &ref1 = Main.Model.BodyModel.Right.ShoulderArm.Seg.Ulna.UlnaStyloidMarker; + AnyRefFrame &ref2=Main.Model.Markers.RUSP.Seg; + }; + MeasureOrganizer={0,2}; + DriverPos={0,0}; + DriverVel={0,0}; + Reaction.Type={Off,Off}; + + }; + + AnyKinEqSimpleDriver RightMetacarpophalangelJoint3Drv ={ + AnyKinLinear Lin={ + Ref=0; + AnyRefFrame &ref1 = Main.Model.BodyModel.Right.ShoulderArm.Seg.Hand.MetacarpophalangealJoint3Marker; + AnyRefFrame &ref2=Main.Model.Markers.RM3.Seg; + }; + MeasureOrganizer={1,2}; + DriverPos={0,0}; + DriverVel={0,0}; + Reaction.Type={Off,Off}; + }; + + +};//Drivers +