moveit2
The MoveIt Motion Planning Framework for ROS 2.
Loading...
Searching...
No Matches
prbt_manipulator_ikfast_moveit_plugin.cpp File Reference
#include <cmath>
#include <list>
#include <vector>
#include <limits>
#include <complex>
#include <Eigen/Geometry>
#include <rclcpp/logger.hpp>
#include <rclcpp/logging.hpp>
#include <rclcpp/node.hpp>
#include <rclcpp/parameter_value.hpp>
#include <tf2_eigen/tf2_eigen.hpp>
#include <tf2_eigen_kdl/tf2_eigen_kdl.hpp>
#include <tf2_kdl/tf2_kdl.hpp>
#include <moveit/kinematics_base/kinematics_base.hpp>
#include <moveit/robot_state/robot_state.hpp>
#include <moveit_resources_prbt_ikfast_manipulator_plugin/prbt_ikfast_kinematics_parameters.hpp>
#include "prbt_manipulator_ikfast_solver.cpp"
#include <pluginlib/class_list_macros.hpp>
Include dependency graph for prbt_manipulator_ikfast_moveit_plugin.cpp:

Go to the source code of this file.

Classes

struct  prbt_manipulator::LimitObeyingSol
struct  prbt_manipulator::CheckValue< T >
class  prbt_manipulator::IKSolver
class  prbt_manipulator::IKFastKinematicsPlugin

Namespaces

namespace  prbt_manipulator

Macros

#define IKFAST_NO_MAIN
#define IKFAST_HAS_LIBRARY
#define __PRETTY_FUNCTION__   __func__
#define IKFAST_ASSERT(b)
#define IKFAST_ALIGNED16(x)
#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)

Enumerations

enum  SEARCH_MODE { OPTIMIZE_FREE_JOINT = 1 , OPTIMIZE_MAX_JOINT = 2 }
 Search modes for searchPositionIK(), see there. More...
enum  prbt_manipulator::IkParameterizationType {
  prbt_manipulator::IKP_None = 0 , prbt_manipulator::IKP_Transform6D = 0x67000001 , prbt_manipulator::IKP_Rotation3D = 0x34000002 , prbt_manipulator::IKP_Translation3D = 0x33000003 ,
  prbt_manipulator::IKP_Direction3D = 0x23000004 , prbt_manipulator::IKP_Ray4D = 0x46000005 , prbt_manipulator::IKP_Lookat3D = 0x23000006 , prbt_manipulator::IKP_TranslationDirection5D = 0x56000007 ,
  prbt_manipulator::IKP_TranslationXY2D = 0x22000008 , prbt_manipulator::IKP_TranslationXYOrientation3D = 0x33000009 , prbt_manipulator::IKP_TranslationLocalGlobal6D = 0x3600000a , prbt_manipulator::IKP_TranslationXAxisAngle4D = 0x4400000b ,
  prbt_manipulator::IKP_TranslationYAxisAngle4D = 0x4400000c , prbt_manipulator::IKP_TranslationZAxisAngle4D = 0x4400000d , prbt_manipulator::IKP_TranslationXAxisAngleZNorm4D = 0x4400000e , prbt_manipulator::IKP_TranslationYAxisAngleXNorm4D = 0x4400000f ,
  prbt_manipulator::IKP_TranslationZAxisAngleYNorm4D = 0x44000010 , prbt_manipulator::IKP_NumberOfParameterizations = 16 , prbt_manipulator::IKP_VelocityDataBit , prbt_manipulator::IKP_Transform6DVelocity = IKP_Transform6D | IKP_VelocityDataBit ,
  prbt_manipulator::IKP_Rotation3DVelocity = IKP_Rotation3D | IKP_VelocityDataBit , prbt_manipulator::IKP_Translation3DVelocity = IKP_Translation3D | IKP_VelocityDataBit , prbt_manipulator::IKP_Direction3DVelocity = IKP_Direction3D | IKP_VelocityDataBit , prbt_manipulator::IKP_Ray4DVelocity = IKP_Ray4D | IKP_VelocityDataBit ,
  prbt_manipulator::IKP_Lookat3DVelocity = IKP_Lookat3D | IKP_VelocityDataBit , prbt_manipulator::IKP_TranslationDirection5DVelocity = IKP_TranslationDirection5D | IKP_VelocityDataBit , prbt_manipulator::IKP_TranslationXY2DVelocity = IKP_TranslationXY2D | IKP_VelocityDataBit , prbt_manipulator::IKP_TranslationXYOrientation3DVelocity = IKP_TranslationXYOrientation3D | IKP_VelocityDataBit ,
  prbt_manipulator::IKP_TranslationLocalGlobal6DVelocity = IKP_TranslationLocalGlobal6D | IKP_VelocityDataBit , prbt_manipulator::IKP_TranslationXAxisAngle4DVelocity = IKP_TranslationXAxisAngle4D | IKP_VelocityDataBit , prbt_manipulator::IKP_TranslationYAxisAngle4DVelocity = IKP_TranslationYAxisAngle4D | IKP_VelocityDataBit , prbt_manipulator::IKP_TranslationZAxisAngle4DVelocity = IKP_TranslationZAxisAngle4D | IKP_VelocityDataBit ,
  prbt_manipulator::IKP_TranslationXAxisAngleZNorm4DVelocity = IKP_TranslationXAxisAngleZNorm4D | IKP_VelocityDataBit , prbt_manipulator::IKP_TranslationYAxisAngleXNorm4DVelocity = IKP_TranslationYAxisAngleXNorm4D | IKP_VelocityDataBit , prbt_manipulator::IKP_TranslationZAxisAngleYNorm4DVelocity = IKP_TranslationZAxisAngleYNorm4D | IKP_VelocityDataBit , prbt_manipulator::IKP_UniqueIdMask = 0x0000ffff ,
  prbt_manipulator::IKP_CustomDataBit = 0x00010000
}
 The types of inverse kinematics parameterizations supported. More...

Functions

float prbt_manipulator::IKabs (float f)
double prbt_manipulator::IKabs (double f)
float prbt_manipulator::IKsqr (float f)
double prbt_manipulator::IKsqr (double f)
float prbt_manipulator::IKlog (float f)
double prbt_manipulator::IKlog (double f)
float prbt_manipulator::IKasin (float f)
double prbt_manipulator::IKasin (double f)
float prbt_manipulator::IKfmod (float x, float y)
double prbt_manipulator::IKfmod (double x, double y)
float prbt_manipulator::IKacos (float f)
double prbt_manipulator::IKacos (double f)
float prbt_manipulator::IKsin (float f)
double prbt_manipulator::IKsin (double f)
float prbt_manipulator::IKcos (float f)
double prbt_manipulator::IKcos (double f)
float prbt_manipulator::IKtan (float f)
double prbt_manipulator::IKtan (double f)
float prbt_manipulator::IKsqrt (float f)
double prbt_manipulator::IKsqrt (double f)
float prbt_manipulator::IKatan2Simple (float fy, float fx)
float prbt_manipulator::IKatan2 (float fy, float fx)
double prbt_manipulator::IKatan2Simple (double fy, double fx)
double prbt_manipulator::IKatan2 (double fy, double fx)
template<typename T>
CheckValue< T > prbt_manipulator::IKatan2WithCheck (T fy, T fx, T)
float prbt_manipulator::IKsign (float f)
double prbt_manipulator::IKsign (double f)
template<typename T>
CheckValue< T > prbt_manipulator::IKPowWithIntegerCheck (T f, int n)
IKFAST_API void prbt_manipulator::ComputeFk (const IkReal *j, IkReal *eetrans, IkReal *eerot)
IKFAST_API int prbt_manipulator::GetNumFreeParameters ()
IKFAST_API int * prbt_manipulator::GetFreeParameters ()
IKFAST_API int prbt_manipulator::GetNumJoints ()
IKFAST_API int prbt_manipulator::GetIkRealSize ()
IKFAST_API int prbt_manipulator::GetIkType ()
IKFAST_API bool prbt_manipulator::ComputeIk (const IkReal *eetrans, const IkReal *eerot, const IkReal *pfree, IkSolutionListBase< IkReal > &solutions)
IKFAST_API bool prbt_manipulator::ComputeIk2 (const IkReal *eetrans, const IkReal *eerot, const IkReal *pfree, IkSolutionListBase< IkReal > &solutions, void *)
IKFAST_API const char * prbt_manipulator::GetKinematicsHash ()
IKFAST_API const char * prbt_manipulator::GetIkFastVersion ()
 PLUGINLIB_EXPORT_CLASS (prbt_manipulator::IKFastKinematicsPlugin, kinematics::KinematicsBase)

Variables

const double LIMIT_TOLERANCE = .0000001

Macro Definition Documentation

◆ __PRETTY_FUNCTION__

#define __PRETTY_FUNCTION__   __func__

◆ IK2PI

#define IK2PI   ((IkReal)6.28318530717959)

◆ IKFAST_ALIGNED16

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

◆ IKFAST_ASSERT

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

◆ IKFAST_ATAN2_MAGTHRESH

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

◆ IKFAST_EVALCOND_THRESH

#define IKFAST_EVALCOND_THRESH   ((IkReal)0.00001)

◆ IKFAST_HAS_LIBRARY

#define IKFAST_HAS_LIBRARY

◆ IKFAST_NO_MAIN

#define IKFAST_NO_MAIN

Definition at line 76 of file prbt_manipulator_ikfast_moveit_plugin.cpp.

◆ IKFAST_SINCOS_THRESH

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

◆ IKFAST_SOLUTION_THRESH

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

◆ IKPI

#define IKPI   ((IkReal)3.14159265358979)

◆ IKPI_2

#define IKPI_2   ((IkReal)1.57079632679490)

Enumeration Type Documentation

◆ SEARCH_MODE

Search modes for searchPositionIK(), see there.

Enumerator
OPTIMIZE_FREE_JOINT 
OPTIMIZE_MAX_JOINT 

Definition at line 68 of file prbt_manipulator_ikfast_moveit_plugin.cpp.

Function Documentation

◆ PLUGINLIB_EXPORT_CLASS()

Variable Documentation

◆ LIMIT_TOLERANCE

const double LIMIT_TOLERANCE = .0000001

Definition at line 66 of file prbt_manipulator_ikfast_moveit_plugin.cpp.