1 package com.neuronrobotics.sdk.addons.kinematics;
3 import java.util.ArrayList;
5 import com.neuronrobotics.sdk.addons.kinematics.math.TransformNR;
26 double startingIncrement = 1.5;
50 ArrayList<DHLink> links = chain.
getLinks();
66 if(vect<10 && orent< .05){
68 System.out.println(
"SearchTreeSolver Success stats: \n\tIterations = "+i+
" out of "+iter+
"\n"+conf);
72 System.err.println(
"SearchTreeSolver FAILED stats: \n\tIterations = "+i+
" out of "+iter+
"\n"+conf);
140 public searchTree(
double[] jointSpaceVector,
double startingIncrement){
141 nodes =
new searchNode [jointSpaceVector.length];
142 for(
int i=0;i<jointSpaceVector.length;i++){
143 nodes[i] =
new searchNode(i,jointSpaceVector[i],startingIncrement);
155 ArrayList<configuration> configurations =
new ArrayList<configuration> ();
156 for(
int i=0;i<jointSpaceVector.length;i++){
159 double [] tmp =
new double[6];
161 for(
int i=0;i<num;i++){
163 tmp[0]=nodes[0].get(i);
164 for(
int i1=0;i1<num;i1++){
166 tmp[1]=nodes[1].get(i1);
167 for(
int i2=0;i2<num;i2++){
169 tmp[2]=nodes[2].get(i2);
170 for(
int i3=0;i3<num;i3++){
172 tmp[3]=nodes[3].get(i3);
173 for(
int i4=0;i4<num;i4++){
175 tmp[4]=nodes[4].get(i4);
176 for(
int i5=0;i5<num;i5++){
178 tmp[5]=nodes[5].get(i5);
179 boolean same =
false;
186 configurations.add(tempConf);
187 }
catch(Exception ex){}
189 }
catch(Exception ex){}
191 }
catch(Exception ex){}
193 }
catch(Exception ex){}
195 }
catch(Exception ex){}
197 }
catch(Exception ex){}
202 double orent=configurations.get(0).getOffsetOrentationMagnitude();
203 double vect =configurations.get(0).getOffsetVectorMagnitude();
205 double tmpOrent = c.getOffsetOrentationMagnitude();
206 double tmpVector= c.getOffsetVectorMagnitude();
217 return configurations.get(best);
248 this.joints =
joints.clone();
302 for(
int i=0;i<6;i++){
347 throw new RuntimeException(
"Increment must be positive");
369 throw new RuntimeException(
"Limit bounded");
385 throw new RuntimeException(
"Limit bounded");
405 double get(
int index){
414 throw new RuntimeException(
"Index must be 0-2");
TransformNR forwardKinematics(double[] jointSpaceVector)
double[] getlowerLimits()
ArrayList< DHLink > getLinks()
double[] getUpperLimits()
TransformNR getTransform()
double getOffsetVectorMagnitude()
configuration(double[] joints, TransformNR t)
double getOffsetOrentationMagnitude()
boolean same(configuration c)
final double startingIncrement
searchNode(int link, double start, double inc)
void setCurrent(double d)
searchTree(double[] jointSpaceVector, double startingIncrement)
configuration getBest(double[] jointSpaceVector)
double[] inverseKinematics(TransformNR target, double[] jointSpaceVector, DHChain chain)
void setTarget(TransformNR target)
TransformNR fk(double[] jointSpaceVector)
void setDhChain(DHChain dhChain)
SearchTreeSolver(DHChain dhChain, boolean debug)