- 3.0.2 models module.
transform6d.cpp File Reference
#include "ikfast.h"
#include <cmath>
#include <vector>
#include <limits>
#include <algorithm>
#include <complex>
#include <stdexcept>
#include <sstream>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>

Classes

struct  CheckValue< T >
 
class  IKSolver
 

Macros

#define IKFAST_HAS_LIBRARY
 
#define IKFAST_COMPILE_ASSERT(x)   extern int __dummy[(int)x]
 
#define __PRETTY_FUNCTION__   __func__
 
#define IKFAST_ASSERT(b)   { if( !(b) ) { std::stringstream ss; ss << "ikfast exception: " << __FILE__ << ":" << __LINE__ << ": " <<__PRETTY_FUNCTION__ << ": Assertion '" << #b << "' failed"; throw std::runtime_error(ss.str()); } }
 
#define IKFAST_ALIGNED16(x)   x __attribute((aligned(16)))
 
#define IK2PI   ((IkReal)6.28318530717959)
 
#define IKPI   ((IkReal)3.14159265358979)
 
#define IKPI_2   ((IkReal)1.57079632679490)
 
#define IKFAST_SINCOS_THRESH   ((IkReal)1e-7)
 
#define IKFAST_ATAN2_MAGTHRESH   ((IkReal)1e-7)
 
#define IKFAST_SOLUTION_THRESH   ((IkReal)1e-6)
 
#define IKFAST_EVALCOND_THRESH   ((IkReal)0.00001)
 

Functions

 IKFAST_COMPILE_ASSERT (IKFAST_VERSION==0x1000004a)
 
void dgetrf_ (const int *m, const int *n, double *a, const int *lda, int *ipiv, int *info)
 
void zgetrf_ (const int *m, const int *n, std::complex< double > *a, const int *lda, int *ipiv, int *info)
 
void dgetri_ (const int *n, const double *a, const int *lda, int *ipiv, double *work, const int *lwork, int *info)
 
void dgesv_ (const int *n, const int *nrhs, double *a, const int *lda, int *ipiv, double *b, const int *ldb, int *info)
 
void dgetrs_ (const char *trans, const int *n, const int *nrhs, double *a, const int *lda, int *ipiv, double *b, const int *ldb, int *info)
 
void dgeev_ (const char *jobvl, const char *jobvr, const int *n, double *a, const int *lda, double *wr, double *wi, double *vl, const int *ldvl, double *vr, const int *ldvr, double *work, const int *lwork, int *info)
 
float IKabs (float f)
 
double IKabs (double f)
 
float IKsqr (float f)
 
double IKsqr (double f)
 
float IKlog (float f)
 
double IKlog (double f)
 
float IKasin (float f)
 
double IKasin (double f)
 
float IKfmod (float x, float y)
 
double IKfmod (double x, double y)
 
float IKacos (float f)
 
double IKacos (double f)
 
float IKsin (float f)
 
double IKsin (double f)
 
float IKcos (float f)
 
double IKcos (double f)
 
float IKtan (float f)
 
double IKtan (double f)
 
float IKsqrt (float f)
 
double IKsqrt (double f)
 
float IKatan2Simple (float fy, float fx)
 
float IKatan2 (float fy, float fx)
 
double IKatan2Simple (double fy, double fx)
 
double IKatan2 (double fy, double fx)
 
template<typename T >
CheckValue< T > IKatan2WithCheck (T fy, T fx, T epsilon)
 
float IKsign (float f)
 
double IKsign (double f)
 
template<typename T >
CheckValue< T > IKPowWithIntegerCheck (T f, int n)
 
IKFAST_API void ComputeFk (const IkReal *j, IkReal *eetrans, IkReal *eerot)
 
IKFAST_API int GetNumFreeParameters ()
 
IKFAST_API int * GetFreeParameters ()
 
IKFAST_API int GetNumJoints ()
 
IKFAST_API int GetIkRealSize ()
 
IKFAST_API int GetIkType ()
 
IKFAST_API bool ComputeIk (const IkReal *eetrans, const IkReal *eerot, const IkReal *pfree, IkSolutionListBase< IkReal > &solutions)
 
IKFAST_API bool ComputeIk2 (const IkReal *eetrans, const IkReal *eerot, const IkReal *pfree, IkSolutionListBase< IkReal > &solutions, void *pOpenRAVEManip)
 
IKFAST_API const char * GetKinematicsHash ()
 
IKFAST_API const char * GetIkFastVersion ()
 
int main (int argc, char **argv)
 

Macro Definition Documentation

◆ IKFAST_HAS_LIBRARY

#define IKFAST_HAS_LIBRARY

autogenerated analytical inverse kinematics code from ikfast program part of OpenRAVE

Author
Rosen Diankov

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

ikfast version 0x1000004a generated on 2017-12-12 14:08:54.348797 Generated using solver transform6d To compile with gcc: gcc -lstdc++ ik.cpp To compile without any main function as a shared object (might need -llapack): gcc -fPIC -lstdc++ -DIKFAST_NO_MAIN -DIKFAST_CLIBRARY -shared -Wl,-soname,libik.so -o libik.so ik.cpp

◆ IKFAST_COMPILE_ASSERT

#define IKFAST_COMPILE_ASSERT (   x)    extern int __dummy[(int)x]

◆ __PRETTY_FUNCTION__

#define __PRETTY_FUNCTION__   __func__

◆ IKFAST_ASSERT

#define IKFAST_ASSERT (   b)    { if( !(b) ) { std::stringstream ss; ss << "ikfast exception: " << __FILE__ << ":" << __LINE__ << ": " <<__PRETTY_FUNCTION__ << ": Assertion '" << #b << "' failed"; throw std::runtime_error(ss.str()); } }

◆ IKFAST_ALIGNED16

#define IKFAST_ALIGNED16 (   x)    x __attribute((aligned(16)))

◆ IK2PI

#define IK2PI   ((IkReal)6.28318530717959)

◆ IKPI

#define IKPI   ((IkReal)3.14159265358979)

◆ IKPI_2

#define IKPI_2   ((IkReal)1.57079632679490)

Referenced by IKasin(), and IKatan2().

◆ IKFAST_SINCOS_THRESH

#define IKFAST_SINCOS_THRESH   ((IkReal)1e-7)

◆ IKFAST_ATAN2_MAGTHRESH

#define IKFAST_ATAN2_MAGTHRESH   ((IkReal)1e-7)

◆ IKFAST_SOLUTION_THRESH

#define IKFAST_SOLUTION_THRESH   ((IkReal)1e-6)

◆ IKFAST_EVALCOND_THRESH

#define IKFAST_EVALCOND_THRESH   ((IkReal)0.00001)

Function Documentation

◆ IKFAST_COMPILE_ASSERT()

IKFAST_COMPILE_ASSERT ( IKFAST_VERSION  = =0x1000004a)

◆ dgetrf_()

void dgetrf_ ( const int *  m,
const int *  n,
double *  a,
const int *  lda,
int *  ipiv,
int *  info 
)

◆ zgetrf_()

void zgetrf_ ( const int *  m,
const int *  n,
std::complex< double > *  a,
const int *  lda,
int *  ipiv,
int *  info 
)

◆ dgetri_()

void dgetri_ ( const int *  n,
const double *  a,
const int *  lda,
int *  ipiv,
double *  work,
const int *  lwork,
int *  info 
)

◆ dgesv_()

void dgesv_ ( const int *  n,
const int *  nrhs,
double *  a,
const int *  lda,
int *  ipiv,
double *  b,
const int *  ldb,
int *  info 
)

◆ dgetrs_()

void dgetrs_ ( const char *  trans,
const int *  n,
const int *  nrhs,
double *  a,
const int *  lda,
int *  ipiv,
double *  b,
const int *  ldb,
int *  info 
)

◆ dgeev_()

void dgeev_ ( const char *  jobvl,
const char *  jobvr,
const int *  n,
double *  a,
const int *  lda,
double *  wr,
double *  wi,
double *  vl,
const int *  ldvl,
double *  vr,
const int *  ldvr,
double *  work,
const int *  lwork,
int *  info 
)

◆ IKabs() [1/2]

float IKabs ( float  f)
inline

◆ IKabs() [2/2]

double IKabs ( double  f)
inline

◆ IKsqr() [1/2]

float IKsqr ( float  f)
inline

◆ IKsqr() [2/2]

double IKsqr ( double  f)
inline

◆ IKlog() [1/2]

float IKlog ( float  f)
inline

◆ IKlog() [2/2]

double IKlog ( double  f)
inline

◆ IKasin() [1/2]

float IKasin ( float  f)
inline

◆ IKasin() [2/2]

double IKasin ( double  f)
inline

◆ IKfmod() [1/2]

float IKfmod ( float  x,
float  y 
)
inline

◆ IKfmod() [2/2]

double IKfmod ( double  x,
double  y 
)
inline

◆ IKacos() [1/2]

float IKacos ( float  f)
inline

◆ IKacos() [2/2]

double IKacos ( double  f)
inline

◆ IKsin() [1/2]

float IKsin ( float  f)
inline

◆ IKsin() [2/2]

double IKsin ( double  f)
inline

◆ IKcos() [1/2]

float IKcos ( float  f)
inline

◆ IKcos() [2/2]

double IKcos ( double  f)
inline

◆ IKtan() [1/2]

float IKtan ( float  f)
inline

◆ IKtan() [2/2]

double IKtan ( double  f)
inline

◆ IKsqrt() [1/2]

float IKsqrt ( float  f)
inline

◆ IKsqrt() [2/2]

double IKsqrt ( double  f)
inline

◆ IKatan2Simple() [1/2]

float IKatan2Simple ( float  fy,
float  fx 
)
inline

◆ IKatan2() [1/2]

float IKatan2 ( float  fy,
float  fx 
)
inline

References IKFAST_ASSERT, and IKPI_2.

◆ IKatan2Simple() [2/2]

double IKatan2Simple ( double  fy,
double  fx 
)
inline

◆ IKatan2() [2/2]

double IKatan2 ( double  fy,
double  fx 
)
inline

References IKFAST_ASSERT, and IKPI_2.

◆ IKatan2WithCheck()

template<typename T >
CheckValue<T> IKatan2WithCheck ( fy,
fx,
epsilon 
)
inline

◆ IKsign() [1/2]

float IKsign ( float  f)
inline

◆ IKsign() [2/2]

double IKsign ( double  f)
inline

◆ IKPowWithIntegerCheck()

template<typename T >
CheckValue<T> IKPowWithIntegerCheck ( f,
int  n 
)
inline

◆ ComputeFk()

IKFAST_API void ComputeFk ( const IkReal *  j,
IkReal *  eetrans,
IkReal *  eerot 
)

solves the forward kinematics equations.

Parameters
pfreeis an array specifying the free joints of the chain.

References IKcos(), IKsin(), and x0.

◆ GetNumFreeParameters()

IKFAST_API int GetNumFreeParameters ( )

◆ GetFreeParameters()

IKFAST_API int* GetFreeParameters ( )

◆ GetNumJoints()

IKFAST_API int GetNumJoints ( )

◆ GetIkRealSize()

IKFAST_API int GetIkRealSize ( )

◆ GetIkType()

IKFAST_API int GetIkType ( )

◆ ComputeIk()

IKFAST_API bool ComputeIk ( const IkReal *  eetrans,
const IkReal *  eerot,
const IkReal *  pfree,
IkSolutionListBase< IkReal > &  solutions 
)

solves the inverse kinematics equations.

Parameters
pfreeis an array specifying the free joints of the chain.

References IKSolver::ComputeIk().

◆ ComputeIk2()

IKFAST_API bool ComputeIk2 ( const IkReal *  eetrans,
const IkReal *  eerot,
const IkReal *  pfree,
IkSolutionListBase< IkReal > &  solutions,
void *  pOpenRAVEManip 
)

References IKSolver::ComputeIk().

◆ GetKinematicsHash()

IKFAST_API const char* GetKinematicsHash ( )

◆ GetIkFastVersion()

IKFAST_API const char* GetIkFastVersion ( )

References IKFAST_NAMESPACE.

◆ main()