[38ba34]: / Body / AAUHuman / Leg / Interface.any

Download this file

162 lines (131 with data), 3.5 kB

//This file contains the interface to the leg it consist of joints and
//nodes which can be used for defining contact with the sorroundings




#if BM_FOOT_MODEL == _FOOT_MODEL_DEFAULT_

AnyKinMeasureLinComb AnklePlantarFlexion =
{

  AnyFolder &Shank = ..Seg.Shank.AnkleJoint;
  Shank =
  {
    AnyRefNode RotNode={ARel={{0,....Sign*-1,0},{....Sign*1,0,0},{0,0,1}};};
  };

  AnyFolder &Foot = ..Seg.Foot.AnkleJoint;
  Foot =
  {
    AnyRefNode RotNode = {ARel={{....Sign*1,0,0},{0,....Sign*1,0},{0,0,1}};};
  };

  AnyKinRotational Ankle =
  {
    Type=RotAxesAngles;
    AnyRefNode &ShankNode = ...Seg.Shank.AnkleJoint.RotNode;
    AnyRefNode &FootNode  = ...Seg.Foot.AnkleJoint.RotNode;
  }; // End of Ankle
  Coef = {{-1,0,0}};
  OutDim = 1;
};

AnyKinMeasureOrg AnkleEversion=
{
  AnyKinRotational &Ankle = .AnklePlantarFlexion.Ankle;
  MeasureOrganizer={1};
};


AnyKinMeasureLinComb AnklePlantarFlexionJntMus=
{
  AnyKinRotational RotMeasure =
  {
    Type=RotAxesAngles;
    AngVelOnOff = On;
    AnyRefNode &ShankNode = ...Seg.Shank.AnkleJoint.RotNode;
    AnyRefNode &FootNode  = ...Seg.Foot.AnkleJoint.RotNode;
  };
  Coef = {{0,0,-1}};
  OutDim = 1;
};


AnyKinMeasureOrg AnkleEversionJntMus=
{
  AnyKinRotational &Ankle = .AnklePlantarFlexionJntMus.RotMeasure;
  MeasureOrganizer={1};
};
#endif

AnyKinMeasureOrg KneeFlexion =
{
  AnyFolder &Thigh = ..Seg.Thigh.KneeJoint;
  Thigh =
  {
    AnyRefNode RotNode={
      ARel={{....Sign*1,0,0},{0,....Sign*1,0},{0,0,1}};
    };
  };
  AnyFolder &Shank = ..Seg.Shank.KneeJoint;
  Shank =
  {
    AnyRefNode RotNode=
    {
      ARel={{....Sign*1,0,0},{0,....Sign*1,0},{0,0,1}};
    };
  };
  AnyKinRotational KneeRot=
  {
    AnyRefNode &ShankNode = ...Seg.Shank.KneeJoint.RotNode;
    AnyRefNode &ThighNode = ...Seg.Thigh.KneeJoint.RotNode;
    Type=RotAxesAngles;
  };
  MeasureOrganizer={0};
};



AnyKinMeasureOrg HipFlexion =
{
  //create new rotated node
  AnyFolder &HipNodeRef=..HipNodeRef;
  HipNodeRef=
  {
    AnyRefNode RotNode=
    {
      ARel={{....Sign*-1,0,0},{0,....Sign*-1,0},{0,0,1}};
    };
  };
  
  AnyFolder &ThighNodeRef = ..Seg.Thigh.HipJoint;
  ThighNodeRef =
  {
    AnyRefNode RotNode=
    {
      ARel={{....Sign*-1,0,0},{0,....Sign*-1,0},{0,0,1}};
    };
  };
  
  AnyKinRotational HipMeasure =
  {
    AnyRefNode &PelvisNode = ...HipNodeRef.RotNode;
    AnyRefNode &ThighNode = ...Seg.Thigh.HipJoint.RotNode;
    Axis1 = z; Axis2 = x;  Axis3 = y;
    Type=RotAxesAngles;
  };    
  MeasureOrganizer={0};
};


AnyKinMeasureOrg HipAbduction =
{
  AnyKinRotational &HipJoint =.HipFlexion.HipMeasure;
  MeasureOrganizer={1};
};

AnyKinMeasureOrg HipExternalRotation =
{
  AnyKinRotational &HipJoint =.HipFlexion.HipMeasure;
  MeasureOrganizer={2};
};


AnyKinMeasureOrg HipFlexionJntMus =
{
  AnyKinRotational HipMeasure =
  {
    AnyRefNode &PelvisNode = ...HipNodeRef.RotNode;
    AnyRefNode &ThighNode = ...Seg.Thigh.HipJoint.RotNode;
    Type=RotAxesAngles;
    AngVelOnOff = On;
  };
  MeasureOrganizer={2}; // AngVelOnOff = On use the normal xyz sequence
};

AnyKinMeasureOrg HipAbductionJntMus =
{
  AnyKinRotational &HipJoint =.HipFlexionJntMus.HipMeasure;
  MeasureOrganizer={0};
};

AnyKinMeasureOrg HipExternalRotationJntMus =
{
  AnyKinRotational &HipJoint =.HipFlexionJntMus.HipMeasure;
  MeasureOrganizer={1};
};