drive positions 3d

Hi again, thanks for the previous speedy response,
I have another simple example with a revolute joint, and then a
spherical joint, i’m getting an error ‘Motion2.Reaction.Type’ :
Number of elements in type specification must match number of
elements in force vector (num. elem = 3) for the driver of the
second segments node, i’ve pasted my code below, any thoughts?

// 3d joint driven by 3 dimensional data

Main = {

//
AnyFolder MyModel = {

 // Global Reference Frame
 AnyFixedRefFrame GlobalRef = {
   AnyDrawRefFrame DrwGlobalRef = {
     ScaleXYZ = {0.1, 0.1, 0.1};
     RGB = {0,1,0};
   };
         AnyRefNode bla1 = {
     sRel = {0,0,0};
   };



 };  // Global reference frame
 AnyFolder Segs = {
   AnySeg Alpha ={
     r0 = {0.1, 0, 0};
     Mass = 2;
     Jii = {0.001, 0.01, 0.01};
     AnyDrawSeg drw = {};

     AnyRefNode base = {
       sRel = {0,0,0};
     };

     AnyRefNode end = {
       sRel = {.2,0,0};
     };
     };//alpha
     AnySeg Beta ={
     r0 = {.4, 0, 0};
     Mass = 2;
     Jii = {0.001, 0.01, 0.01};
     AnyDrawSeg drw = {};

     AnyRefNode base = {
       sRel = {0,0,0};
     };

     AnyRefNode end = {
       sRel = {0.2,0,0};
     };
   };//beta

 };//segs
 AnyFolder Jnts = {
   //---------------------------------
   AnyRevoluteJoint jntbla = {
     Axis = z;
     AnyRefNode &basenode = ..GlobalRef.bla1;
     AnyRefNode &uppernode = ..Segs.Alpha.base;
   };//jntbla
   AnySphericalJoint jntbla2 = {
     AnyRefNode &basenode = ..Segs.Alpha.end;
     AnyRefNode &uppernode =..Segs.Beta.base;
   };//jntbla2
 };//Jnts
 AnyFolder Drivers = {

   AnyFolder KinematicMeasures = {
     AnyKinLinear Pos = {
       // These are the nodes that the measure refers to
       AnyRefNode &Ground = Main.MyModel.GlobalRef.bla1;
       AnyRefNode &LowerArmNode = Main.MyModel.Segs.Alpha.end;
       Ref = 0;


     };//pos
   };//kinematicmeasure
   AnyFolder KinematicMeasures2 = {
     AnyKinLinear Pos = {
       // These are the nodes that the measure refers to
       AnyRefNode &Ground = Main.MyModel.GlobalRef.bla1;
       AnyRefNode &UpperArmNode = Main.MyModel.Segs.Beta.end;
       Ref = 0;

     };//pos
   };//kinematicmeasure2
   AnyVector Time = { 0,5,10};

   AnyKinEqInterPolDriver Motion = {
     AnyKinLinear &bla=.KinematicMeasures.Pos;

     MeasureOrganizer = {1};
     T = .Time;
     Type = PiecewiseLinear;
     Data = {{0,
         .1,
         .0
       }} ;

     Reaction.Type = {Off};
   };//motion kineqinterpoldriver
   AnyKinEqInterPolDriver Motion2 = {
     AnyKinLinear &bla2=.KinematicMeasures2.Pos;

     T = .Time;
     Type = PiecewiseLinear;
     Data = {{0,0,0},{0,0,0},{0,0,0}
       } ;

     Reaction.Type = {Off};
   };//motion kineqinterpoldriver
 };  //drivers

}; // MyModel

// The study: Operations to be performed on the model
AnyBodyStudy MyStudy = {
AnyFolder &Model = .MyModel;
RecruitmentSolver = MinMaxSimplex;
Gravity = {0.0, -9.81, 0.0};
tEnd = 10;

};

}; // Main

Hi Atlas?

In the Motion2 driver you have listed an AnyKinLinear with three
dofs, by writing so you also have to set three reaction types when
you try to change the reaction settings. So instead of Reaction.Type
= {Off}; it should be Reaction.Type={Off,Off,Off};

Best regards
Søren, AnyBody Support

>
— In anyscript@yahoogroups.com, “atlas242131” <atlas242131@…>
wrote:
>
> Hi again, thanks for the previous speedy response,
> I have another simple example with a revolute joint, and then a
> spherical joint, i’m getting an error ‘Motion2.Reaction.Type’ :
> Number of elements in type specification must match number of
> elements in force vector (num. elem = 3) for the driver of the
> second segments node, i’ve pasted my code below, any thoughts?
>
> // 3d joint driven by 3 dimensional data
>
> Main = {
>
> //
> AnyFolder MyModel = {
>
> // Global Reference Frame
> AnyFixedRefFrame GlobalRef = {
> AnyDrawRefFrame DrwGlobalRef = {
> ScaleXYZ = {0.1, 0.1, 0.1};
> RGB = {0,1,0};
> };
> AnyRefNode bla1 = {
> sRel = {0,0,0};
> };
>
>
>
> }; // Global reference frame
> AnyFolder Segs = {
> AnySeg Alpha ={
> r0 = {0.1, 0, 0};
> Mass = 2;
> Jii = {0.001, 0.01, 0.01};
> AnyDrawSeg drw = {};
>
> AnyRefNode base = {
> sRel = {0,0,0};
> };
>
> AnyRefNode end = {
> sRel = {.2,0,0};
> };
> };//alpha
> AnySeg Beta ={
> r0 = {.4, 0, 0};
> Mass = 2;
> Jii = {0.001, 0.01, 0.01};
> AnyDrawSeg drw = {};
>
> AnyRefNode base = {
> sRel = {0,0,0};
> };
>
> AnyRefNode end = {
> sRel = {0.2,0,0};
> };
> };//beta
>
> };//segs
> AnyFolder Jnts = {
> //---------------------------------
> AnyRevoluteJoint jntbla = {
> Axis = z;
> AnyRefNode &basenode = …GlobalRef.bla1;
> AnyRefNode &uppernode = …Segs.Alpha.base;
> };//jntbla
> AnySphericalJoint jntbla2 = {
> AnyRefNode &basenode = …Segs.Alpha.end;
> AnyRefNode &uppernode =…Segs.Beta.base;
> };//jntbla2
> };//Jnts
> AnyFolder Drivers = {
>
> AnyFolder KinematicMeasures = {
> AnyKinLinear Pos = {
> // These are the nodes that the measure refers to
> AnyRefNode &Ground = Main.MyModel.GlobalRef.bla1;
> AnyRefNode &LowerArmNode = Main.MyModel.Segs.Alpha.end;
> Ref = 0;
>
>
> };//pos
> };//kinematicmeasure
> AnyFolder KinematicMeasures2 = {
> AnyKinLinear Pos = {
> // These are the nodes that the measure refers to
> AnyRefNode &Ground = Main.MyModel.GlobalRef.bla1;
> AnyRefNode &UpperArmNode = Main.MyModel.Segs.Beta.end;
> Ref = 0;
>
> };//pos
> };//kinematicmeasure2
> AnyVector Time = { 0,5,10};
>
> AnyKinEqInterPolDriver Motion = {
> AnyKinLinear &bla=.KinematicMeasures.Pos;
>
> MeasureOrganizer = {1};
> T = .Time;
> Type = PiecewiseLinear;
> Data = {{0,
> .1,
> .0
> }} ;
>
> Reaction.Type = {Off};
> };//motion kineqinterpoldriver
> AnyKinEqInterPolDriver Motion2 = {
> AnyKinLinear &bla2=.KinematicMeasures2.Pos;
>
> T = .Time;
> Type = PiecewiseLinear;
> Data = {{0,0,0},{0,0,0},{0,0,0}
> } ;
>
> Reaction.Type = {Off};
> };//motion kineqinterpoldriver
> }; //drivers
>
>
> }; // MyModel
>
> // The study: Operations to be performed on the model
> AnyBodyStudy MyStudy = {
> AnyFolder &Model = .MyModel;
> RecruitmentSolver = MinMaxSimplex;
> Gravity = {0.0, -9.81, 0.0};
> tEnd = 10;
>
> };
>
> }; // Main
>