/// See the License for the specific language governing permissions and
/// limitations under the License.
///
-/// ikfast version 0x10000049 generated on 2020-01-01 11:08:21.983960
+/// ikfast version 0x10000049 generated on 2021-08-14 17:43:05.445798
/// To compile with gcc:
/// gcc -lstdc++ ik.cpp
/// To compile without any main function as a shared object (might need -llapack):
/// \param pfree is an array specifying the free joints of the chain.
IKFAST_API void ComputeFk(const IkReal* j, IkReal* eetrans, IkReal* eerot) {
for(int dummyiter = 0; dummyiter < 1; ++dummyiter) {
-IkReal x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19;
+IkReal x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16,x17,x18;
x0=IKcos(j[0]);
x1=IKcos(j[2]);
x2=IKcos(j[1]);
x8=((0.126)*x4);
x9=((0.124)*x1);
x10=((1.0)*x4);
-x11=((0.128)*x3);
-x12=((0.124)*x4);
-x13=((0.126)*x1);
-x14=(x2*x6);
-x15=(x1*x2);
-x16=(x0*x2);
-x17=(x0*x3);
-x18=(x1*x3);
-x19=(x3*x6);
-IkReal x20=((1.0)*x17);
-eetrans[0]=((0.012)+((x0*x11))+((x16*x9))+((x7*(((((-1.0)*x20*x8))+((x13*x16))))))+(((0.024)*x16))+((x5*(((((-1.0)*x16*x8))+(((-1.0)*x13*x20))))))+(((-1.0)*x12*x20)));
+x11=((0.124)*x4);
+x12=((0.126)*x1);
+x13=(x2*x6);
+x14=(x1*x2);
+x15=(x0*x2);
+x16=(x0*x3);
+x17=(x1*x3);
+x18=(x3*x6);
+IkReal x19=((1.0)*x8);
+IkReal x20=((1.0)*x16);
+eetrans[0]=((0.012)+(((0.132)*x16))+((x7*(((((-1.0)*x16*x19))+((x12*x15))))))+(((-1.0)*x11*x20))+(((0.024)*x15))+((x5*(((((-1.0)*x15*x19))+(((-1.0)*x12*x20))))))+((x15*x9)));
IkReal x21=((1.0)*x8);
-IkReal x22=((1.0)*x19);
-eetrans[1]=(((x5*(((((-1.0)*x14*x21))+(((-1.0)*x13*x22))))))+((x14*x9))+((x11*x6))+((x7*(((((-1.0)*x19*x21))+((x13*x14))))))+(((0.024)*x14))+(((-1.0)*x12*x22)));
-IkReal x23=((1.0)*x2);
-IkReal x24=((1.0)*x3);
-eetrans[2]=((0.0765)+(((0.128)*x2))+((x7*(((((-1.0)*x23*x8))+(((-1.0)*x13*x24))))))+(((-1.0)*x24*x9))+((x5*((((x3*x8))+(((-1.0)*x13*x23))))))+(((-0.024)*x3))+(((-1.0)*x12*x23)));
+IkReal x22=((1.0)*x18);
+eetrans[1]=((((0.132)*x18))+((x7*(((((-1.0)*x18*x21))+((x12*x13))))))+(((-1.0)*x11*x22))+(((0.024)*x13))+((x5*(((((-1.0)*x13*x21))+(((-1.0)*x12*x22))))))+((x13*x9)));
+IkReal x23=((1.0)*x3);
+IkReal x24=((1.0)*x2);
+eetrans[2]=((0.0875)+(((-1.0)*x23*x9))+((x5*((((x3*x8))+(((-1.0)*x12*x24))))))+((x7*(((((-1.0)*x24*x8))+(((-1.0)*x12*x23))))))+(((0.132)*x2))+(((-1.0)*x11*x24))+(((-0.024)*x3)));
IkReal x25=((1.0)*x10);
-if( ((((x5*(((((-1.0)*x18))+(((-1.0)*x2*x25))))))+((x7*(((((1.0)*x15))+(((-1.0)*x25*x3)))))))) < -1-IKFAST_SINCOS_THRESH || ((((x5*(((((-1.0)*x18))+(((-1.0)*x2*x25))))))+((x7*(((((1.0)*x15))+(((-1.0)*x25*x3)))))))) > 1+IKFAST_SINCOS_THRESH )
+if( ((((x5*(((((-1.0)*x17))+(((-1.0)*x2*x25))))))+((x7*(((((1.0)*x14))+(((-1.0)*x25*x3)))))))) < -1-IKFAST_SINCOS_THRESH || ((((x5*(((((-1.0)*x17))+(((-1.0)*x2*x25))))))+((x7*(((((1.0)*x14))+(((-1.0)*x25*x3)))))))) > 1+IKFAST_SINCOS_THRESH )
continue;
-eerot[0]=IKacos((((x5*(((((-1.0)*x18))+(((-1.0)*x2*x25))))))+((x7*(((((1.0)*x15))+(((-1.0)*x25*x3))))))));
+eerot[0]=IKacos((((x5*(((((-1.0)*x17))+(((-1.0)*x2*x25))))))+((x7*(((((1.0)*x14))+(((-1.0)*x25*x3))))))));
return;
}
IKFAST_ASSERT(0);
IkReal op[162], zeror[48];
int numroots;;
IkReal x28=IKcos(j0);
-IkReal x29=((0.409)*pz);
-IkReal x30=((0.024)*px);
+IkReal x29=((0.024)*px);
+IkReal x30=((0.439)*pz);
IkReal x31=IKsin(j0);
-IkReal x32=((0.101432)+(((-0.496)*pz)));
-IkReal x33=((-0.2045)+pz);
+IkReal x32=((0.108872)+(((-0.496)*pz)));
+IkReal x33=((-0.2195)+pz);
IkReal x34=((2.0)*pz);
-IkReal x35=((0.153)+(((-1.0)*x34)));
-IkReal x36=((0.103)*pz);
+IkReal x35=((0.175)+(((-1.0)*x34)));
+IkReal x36=((0.089)*pz);
IkReal x37=((0.496)*pz);
-IkReal x38=((-0.103)+(((-1.0)*x34)));
-IkReal x39=((-0.0515)+(((-1.0)*pz)));
+IkReal x38=((-0.089)+(((-1.0)*x34)));
+IkReal x39=((-0.0445)+(((-1.0)*pz)));
IkReal x40=((1.0)*(px*px));
IkReal x41=((1.0)*(py*py));
IkReal x42=((1.0)*(pz*pz));
IkReal x44=((-1.0)+(((-1.0)*x43)));
IkReal x45=((1.0)+(((-1.0)*x43)));
IkReal x46=((0.012)*x28);
-IkReal x47=((-0.409)+x34);
+IkReal x47=((-0.439)+x34);
IkReal x48=(py*x31);
IkReal x49=(px*x28);
-IkReal x50=((0.006144)*x28);
-IkReal x51=((-0.153)+x34);
+IkReal x50=((0.006336)*x28);
+IkReal x51=((-0.175)+x34);
IkReal x52=((0.000576)*x28);
IkReal x53=((0.003552)*x28);
-IkReal x54=((0.025544)+x37);
+IkReal x54=((0.022072)+x37);
IkReal x55=((0.0024)*x28);
IkReal x56=((0.048)*x48);
IkReal x57=((0.048)*x49);
-IkReal x58=((0.512)*x49);
-IkReal x59=((0.512)*x48);
+IkReal x58=((0.528)*x49);
+IkReal x59=((0.528)*x48);
IkReal x60=((0.296)*x48);
IkReal x61=((0.296)*x49);
IkReal x62=((0.2)*x48);
IkReal x63=((0.2)*x49);
IkReal x64=(x30+x29);
-IkReal x65=(x30+x52);
+IkReal x65=(x52+x29);
IkReal x66=(x48+x49);
IkReal x67=((((1.0)*x48))+(((1.0)*x49)));
-IkReal x68=(x59+x58);
-IkReal x69=(x62+x63);
+IkReal x68=(x62+x63);
+IkReal x69=(x60+x61);
IkReal x70=(x57+x56);
-IkReal x71=(x60+x61);
+IkReal x71=(x59+x58);
IkReal x72=((0.274)+(((-1.0)*x46))+x66);
IkReal x73=((0.022)+(((-1.0)*x46))+x66);
IkReal x74=(x42+x40+x41);
IkReal x79=((0.022)+x46+(((-1.0)*x67)));
IkReal x80=(x74+x36);
IkReal x81=(x74+x52);
-IkReal x82=((0.007344)+(((-0.096)*pz))+x68+(((-1.0)*x50)));
-IkReal x83=((0.045288)+(((-0.592)*pz))+x68+(((-1.0)*x50)));
-IkReal x84=((-0.0306)+(((0.4)*pz))+x68+(((-1.0)*x50)));
+IkReal x82=((0.0084)+(((-0.096)*pz))+x71+(((-1.0)*x50)));
+IkReal x83=((0.0518)+(((-0.592)*pz))+x71+(((-1.0)*x50)));
+IkReal x84=((-0.035)+(((0.4)*pz))+x71+(((-1.0)*x50)));
IkReal x85=(x70+x80);
-IkReal x86=((0.01995975)+x70+x64+(((-1.0)*x81)));
-IkReal x87=((-0.04253625)+x70+x64+(((-1.0)*x81)));
-IkReal x88=((-0.04799225)+(((-1.0)*x74))+x71+x64+(((-1.0)*x53)));
-IkReal x89=((-0.03608825)+(((-1.0)*x74))+x55+x64+(((-1.0)*x69)));
-IkReal x90=((0.05912775)+x65+(((-1.0)*x85)));
-IkReal x91=((-0.00336825)+x65+(((-1.0)*x85)));
-IkReal x92=((-0.00882425)+(((-1.0)*x71))+x30+x53+(((-1.0)*x80)));
-IkReal x93=((0.00307975)+x30+x69+(((-1.0)*x80))+(((-1.0)*x55)));
+IkReal x86=((0.01359975)+x70+x64+(((-1.0)*x81)));
+IkReal x87=((-0.04889625)+x70+x64+(((-1.0)*x81)));
+IkReal x88=((-0.05435225)+(((-1.0)*x74))+x64+x69+(((-1.0)*x53)));
+IkReal x89=((-0.04244825)+(((-1.0)*x74))+x55+x64+(((-1.0)*x68)));
+IkReal x90=((0.05979975)+x65+(((-1.0)*x85)));
+IkReal x91=((-0.00269625)+x65+(((-1.0)*x85)));
+IkReal x92=((-0.00815225)+x53+x29+(((-1.0)*x69))+(((-1.0)*x80)));
+IkReal x93=((0.00375175)+x68+x29+(((-1.0)*x80))+(((-1.0)*x55)));
op[0]=x86;
op[1]=0;
op[2]=x87;
return solver.ComputeIk(eetrans,eerot,pfree,solutions);
}
-IKFAST_API const char* GetKinematicsHash() { return "2062b4aa7fde98f002602493c9ba542a"; }
+IKFAST_API const char* GetKinematicsHash() { return "f8e185c58eba9ecf036d09a0db9b2f5b"; }
IKFAST_API const char* GetIkFastVersion() { return "0x10000049"; }