1 package com.neuronrobotics.sdk.addons.kinematics;
3 import com.neuronrobotics.sdk.addons.kinematics.math.TransformNR;
25 double[] jointSpaceVector;
44 int integralSize = 100;
47 int integralIndexVect = 0;
50 int integralIndexOrent = 0;
53 double integralTotalVect = 0;
56 double integralTotalOrent = 0;
59 double intVect[] =
new double[integralSize];
62 double intOrent[] =
new double[integralSize];
84 this.jointSpaceVector=jointSpaceVector;
85 target = cartesianSpace;
86 myStart = jointSpaceVector[
index];
89 for(
int i=0;i<integralSize;i++){
101 double none = myStart+offset;
102 double start = offset;
103 jointSpaceVector[
getIndex()]= bound (none);
108 double incOrentP = (noneOrent*10);
110 integralTotalOrent-=intOrent[integralIndexOrent];
112 intOrent[integralIndexOrent] =incOrentP;
114 integralTotalOrent+=intOrent[integralIndexOrent];
116 integralIndexOrent++;
117 if(integralIndexOrent==integralSize){
118 integralIndexOrent=0;
122 incOrent = incOrentP*Kp + (integralTotalOrent/integralSize)*Ki;
124 double upO = myStart+offset+incOrent;
125 double downO =myStart+offset-incOrent;
127 jointSpaceVector[
getIndex()]= bound (upO);
131 jointSpaceVector[
getIndex()]= bound (downO);
136 if( (upOrent>noneOrent && downOrent>noneOrent)){
140 if(( noneOrent>upOrent && downOrent>upOrent)){
144 if((upOrent>downOrent && noneOrent>downOrent )){
149 jointSpaceVector[
getIndex()] = myStart+offset;
161 double none = myStart+offset;
162 double start = offset;
163 jointSpaceVector[
getIndex()]= bound (none);
168 double incVectP = (nonevect/1000);
170 integralTotalVect-=intVect[integralIndexVect];
172 intVect[integralIndexVect] =incVectP;
174 integralTotalVect+=intVect[integralIndexVect];
177 if(integralIndexVect==integralSize){
182 incVect = incVectP*Kp + (integralTotalVect/integralSize)*Ki;
184 double up = myStart+offset+incVect;
185 double down =myStart+offset-incVect;
187 jointSpaceVector[
getIndex()]= bound (up);
192 jointSpaceVector[
getIndex()]= bound (down);
197 if((upvect>nonevect && downvect>nonevect) ){
200 if((nonevect>upvect && downvect>upvect ) ){
204 if((upvect>downvect && nonevect>downvect) ){
209 jointSpaceVector[
getIndex()] = myStart+offset;
229 double jitterAmmount = 10;
230 double jitter=(Math.random()*jitterAmmount)-(jitterAmmount /2) ;
231 System.out.println(
"Jittering Link #"+
getIndex()+
" jitter:"+
jitter+
" current offset:"+offset);
233 jointSpaceVector[
getIndex()] = myStart+offset;
242 double bound(
double in){
TransformNR forwardKinematics(double[] jointSpaceVector)
GradiantDecentNode(DHChain chain, int index, double[] jointSpaceVector, TransformNR cartesianSpace, double u, double l)