Coder Social home page Coder Social logo

moveit_ikfast's Introduction

moveit_ikfast's People

Contributors

130s avatar davetcoleman avatar fsuarez6 avatar gavanderhoorn avatar hersh avatar isucan avatar jrgnicho avatar mikeferguson avatar mintar avatar sachinchitta avatar simonschmeisser avatar sjlevine avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

moveit_ikfast's Issues

Missing builddep on cmake_modules in generated ikfast packages

Running catkin_lint on a recently (re)generated ikfast plugin package:

X_moveit_plugins: CMakeLists.txt(4): warning: find_package(Eigen) before find_package(cmake_modules)

This makes sense: FindEigen.cmake is part of the cmake_modules package, which should be find_package()-ed first. It should then also become a build_depend of the plugin package.

Encoding the Base & Tool Frames of the IK Solver Into the Plugin

I've recently run into an issue that I wanted to put to the greater moveit_ikfast audience in the hopes of guidance on the best path to fix my issue: @gavanderhoorn @davetcoleman @jrgnicho

The scenario is this:

We generate an IKFast solution for a given kinematic chain, say base_link to tool0. This plugin will work for planning with respect to tool0. Now let's say that I will add a new frame tool_tip with a fixed transformation relative to tool0 and I wish to plan for this. I change the URDF and MoveIt SRDF configuration to add this new link to the move group, but I do not regenerate the IK. The kinematics will still solve poses as if tool0 was the active point. The plugin remains blissfully unaware of this discrepancy and will tell you that the solver tip frame is tool_tip.

Can you confirm that this behaviour is expected? If so, what do you see as the proposed solution.

It seems as if there is some need to encode the underlying IKFast's base & tool frames into the plugin and perform relevant translations there.

catkin_make plugin fails with ‘kinematics::KinematicsResult’ has not been declared

I'm trying to get my IKFast plugin to build under Ubuntu 14.04 and ROS Indigo debian install. I am using the source install of moveit_ikfast because of a bug in the debian version that has been fixed in source but not yet pushed to the debs.

As for OpenRave, I am using a source install from the master branch which compiles fine and generates my .cpp file.

After creating my empty plugin package, running catkin_make yields the following error which causes the plugin not to be built:

/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:178:42: error: ‘kinematics::KinematicsResult’ has not been declared

The rest of the output is as follows:

                              kinematics::KinematicsResult& result,
                                          ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:302:41: error: ‘kinematics::DiscretizationMethod’ has not been declared
   bool sampleRedundantJoint(kinematics::DiscretizationMethod method, std::vector<double>& sampled_joint_vals) const;
                                         ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp: In constructor ‘ikfast_kinematics_plugin::IKFastKinematicsPlugin::IKFastKinematicsPlugin()’:
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:139:5: error: ‘supported_methods_’ was not declared in this scope
     supported_methods_.push_back(kinematics::DiscretizationMethods::NO_DISCRETIZATION);
     ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:139:46: error: ‘kinematics::DiscretizationMethods’ has not been declared
     supported_methods_.push_back(kinematics::DiscretizationMethods::NO_DISCRETIZATION);
                                              ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:140:46: error: ‘kinematics::DiscretizationMethods’ has not been declared
     supported_methods_.push_back(kinematics::DiscretizationMethods::ALL_DISCRETIZED);
                                              ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:141:46: error: ‘kinematics::DiscretizationMethods’ has not been declared
     supported_methods_.push_back(kinematics::DiscretizationMethods::ALL_RANDOM_SAMPLED);
                                              ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp: In member function ‘void ikfast_kinematics_plugin::IKFastKinematicsPlugin::setSearchDiscretization(const std::map<int, double>&)’:
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:456:3: error: ‘redundant_joint_discretization_’ was not declared in this scope
   redundant_joint_discretization_.clear();
   ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp: At global scope:
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:1058:56: error: ‘kinematics::KinematicsResult’ has not been declared
                                            kinematics::KinematicsResult& result,
                                                        ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp: In member function ‘bool ikfast_kinematics_plugin::IKFastKinematicsPlugin::getPositionIK(const std::vector<geometry_msgs::Pose_<std::allocator<void> > >&, const std::vector<double>&, std::vector<std::vector<double> >&, int&, const kinematics::KinematicsQueryOptions&) const’:
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:1066:12: error: request for member ‘kinematic_error’ in ‘result’, which is of non-class type ‘int’
     result.kinematic_error = kinematics::KinematicErrors::SOLVER_NOT_ACTIVE;
            ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:1066:42: error: ‘kinematics::KinematicErrors’ has not been declared
     result.kinematic_error = kinematics::KinematicErrors::SOLVER_NOT_ACTIVE;
                                          ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:1073:12: error: request for member ‘kinematic_error’ in ‘result’, which is of non-class type ‘int’
     result.kinematic_error = kinematics::KinematicErrors::EMPTY_TIP_POSES;
            ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:1073:42: error: ‘kinematics::KinematicErrors’ has not been declared
     result.kinematic_error = kinematics::KinematicErrors::EMPTY_TIP_POSES;
                                          ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:1080:12: error: request for member ‘kinematic_error’ in ‘result’, which is of non-class type ‘int’
     result.kinematic_error = kinematics::KinematicErrors::MULTIPLE_TIPS_NOT_SUPPORTED;
            ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:1080:42: error: ‘kinematics::KinematicErrors’ has not been declared
     result.kinematic_error = kinematics::KinematicErrors::MULTIPLE_TIPS_NOT_SUPPORTED;
                                          ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:1105:16: error: ‘const struct kinematics::KinematicsQueryOptions’ has no member named ‘discretization_method’
     if(options.discretization_method == kinematics::DiscretizationMethods::NO_DISCRETIZATION &&
                ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:1105:53: error: ‘kinematics::DiscretizationMethods’ has not been declared
     if(options.discretization_method == kinematics::DiscretizationMethods::NO_DISCRETIZATION &&
                                                     ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:1114:16: error: request for member ‘kinematic_error’ in ‘result’, which is of non-class type ‘int’
         result.kinematic_error = kinematics::KinematicErrors::IK_SEED_OUTSIDE_LIMITS;
                ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:1114:46: error: ‘kinematics::KinematicErrors’ has not been declared
         result.kinematic_error = kinematics::KinematicErrors::IK_SEED_OUTSIDE_LIMITS;
                                              ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:1123:38: error: ‘const struct kinematics::KinematicsQueryOptions’ has no member named ‘discretization_method’
     if(!sampleRedundantJoint(options.discretization_method,sampled_joint_vals))
                                      ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:1125:14: error: request for member ‘kinematic_error’ in ‘result’, which is of non-class type ‘int’
       result.kinematic_error = kinematics::KinematicErrors::UNSUPORTED_DISCRETIZATION_REQUESTED;
              ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:1125:44: error: ‘kinematics::KinematicErrors’ has not been declared
       result.kinematic_error = kinematics::KinematicErrors::UNSUPORTED_DISCRETIZATION_REQUESTED;
                                            ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:1191:14: error: request for member ‘kinematic_error’ in ‘result’, which is of non-class type ‘int’
       result.kinematic_error = kinematics::KinematicErrors::OK;
              ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:1191:44: error: ‘kinematics::KinematicErrors’ has not been declared
       result.kinematic_error = kinematics::KinematicErrors::OK;
                                            ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:1200:10: error: request for member ‘kinematic_error’ in ‘result’, which is of non-class type ‘int’
   result.kinematic_error = kinematics::KinematicErrors::NO_SOLUTION;
          ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:1200:40: error: ‘kinematics::KinematicErrors’ has not been declared
   result.kinematic_error = kinematics::KinematicErrors::NO_SOLUTION;
                                        ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp: At global scope:
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:1204:63: error: ‘bool ikfast_kinematics_plugin::IKFastKinematicsPlugin::sampleRedundantJoint’ is not a static member of ‘class ikfast_kinematics_plugin::IKFastKinematicsPlugin’
 bool IKFastKinematicsPlugin::sampleRedundantJoint(kinematics::DiscretizationMethod method, std::vector<double>& sampled_joint_vals) const
                                                               ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:1204:51: error: ‘DiscretizationMethod’ is not a member of ‘kinematics’
 bool IKFastKinematicsPlugin::sampleRedundantJoint(kinematics::DiscretizationMethod method, std::vector<double>& sampled_joint_vals) const
                                                   ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:1204:111: error: expected primary-expression before ‘&’ token
 bool IKFastKinematicsPlugin::sampleRedundantJoint(kinematics::DiscretizationMethod method, std::vector<double>& sampled_joint_vals) const
                                                                                                               ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:1204:113: error: ‘sampled_joint_vals’ was not declared in this scope
 bool IKFastKinematicsPlugin::sampleRedundantJoint(kinematics::DiscretizationMethod method, std::vector<double>& sampled_joint_vals) const
                                                                                                                 ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:1204:131: error: expression list treated as compound expression in initializer [-fpermissive]
 bool IKFastKinematicsPlugin::sampleRedundantJoint(kinematics::DiscretizationMethod method, std::vector<double>& sampled_joint_vals) const
                                                                                                                                   ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:1204:133: error: expected ‘,’ or ‘;’ before ‘const’
 bool IKFastKinematicsPlugin::sampleRedundantJoint(kinematics::DiscretizationMethod method, std::vector<double>& sampled_joint_vals) const
                                                                                                                                     ^
/home/patrick/catkin_ws/src/pi_robot_ikfast_right_arm_plugin/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp:1258:101: error: expected ‘}’ at end of input
 PLUGINLIB_EXPORT_CLASS(ikfast_kinematics_plugin::IKFastKinematicsPlugin, kinematics::KinematicsBase);
                                                                                                     ^
make[2]: *** [pi_robot_ikfast_right_arm_plugin/CMakeFiles/pi_robot_right_arm_moveit_ikfast_plugin.dir/src/pi_robot_right_arm_ikfast_moveit_plugin.cpp.o] Error 1
make[1]: *** [pi_robot_ikfast_right_arm_plugin/CMakeFiles/pi_robot_right_arm_moveit_ikfast_plugin.dir/all] Error 2
make: *** [all] Error 2
Invoking "make -j4 -l4" failed

‘kinematics::KinematicsResult’ has not been declared

Hi!
All in all similar to #54 however I'm using ROS Jade on trusty. So the jade branch should be the right one for me.
Any suggestions?

Output as follows:

[...]
[100%] Built target moveit_setup_assistant
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:178:42: error: ‘kinematics::KinematicsResult’ has not been declared
                              kinematics::KinematicsResult& result,
                                          ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:302:41: error: ‘kinematics::DiscretizationMethod’ has not been declared
   bool sampleRedundantJoint(kinematics::DiscretizationMethod method, std::vector<double>& sampled_joint_vals) const;
                                         ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp: In constructor ‘ikfast_kinematics_plugin::IKFastKinematicsPlugin::IKFastKinematicsPlugin()’:
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:139:5: error: ‘supported_methods_’ was not declared in this scope
     supported_methods_.push_back(kinematics::DiscretizationMethods::NO_DISCRETIZATION);
     ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:139:46: error: ‘kinematics::DiscretizationMethods’ has not been declared
     supported_methods_.push_back(kinematics::DiscretizationMethods::NO_DISCRETIZATION);
                                              ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:140:46: error: ‘kinematics::DiscretizationMethods’ has not been declared
     supported_methods_.push_back(kinematics::DiscretizationMethods::ALL_DISCRETIZED);
                                              ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:141:46: error: ‘kinematics::DiscretizationMethods’ has not been declared
     supported_methods_.push_back(kinematics::DiscretizationMethods::ALL_RANDOM_SAMPLED);
                                              ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp: In member function ‘void ikfast_kinematics_plugin::IKFastKinematicsPlugin::setSearchDiscretization(const std::map<int, double>&)’:
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:456:3: error: ‘redundant_joint_discretization_’ was not declared in this scope
   redundant_joint_discretization_.clear();
   ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp: At global scope:
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:1058:56: error: ‘kinematics::KinematicsResult’ has not been declared
                                            kinematics::KinematicsResult& result,
                                                        ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp: In member function ‘bool ikfast_kinematics_plugin::IKFastKinematicsPlugin::getPositionIK(const std::vector<geometry_msgs::Pose_<std::allocator<void> > >&, const std::vector<double>&, std::vector<std::vector<double> >&, int&, const kinematics::KinematicsQueryOptions&) const’:
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:1066:12: error: request for member ‘kinematic_error’ in ‘result’, which is of non-class type ‘int’
     result.kinematic_error = kinematics::KinematicErrors::SOLVER_NOT_ACTIVE;
            ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:1066:42: error: ‘kinematics::KinematicErrors’ has not been declared
     result.kinematic_error = kinematics::KinematicErrors::SOLVER_NOT_ACTIVE;
                                          ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:1073:12: error: request for member ‘kinematic_error’ in ‘result’, which is of non-class type ‘int’
     result.kinematic_error = kinematics::KinematicErrors::EMPTY_TIP_POSES;
            ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:1073:42: error: ‘kinematics::KinematicErrors’ has not been declared
     result.kinematic_error = kinematics::KinematicErrors::EMPTY_TIP_POSES;
                                          ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:1080:12: error: request for member ‘kinematic_error’ in ‘result’, which is of non-class type ‘int’
     result.kinematic_error = kinematics::KinematicErrors::MULTIPLE_TIPS_NOT_SUPPORTED;
            ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:1080:42: error: ‘kinematics::KinematicErrors’ has not been declared
     result.kinematic_error = kinematics::KinematicErrors::MULTIPLE_TIPS_NOT_SUPPORTED;
                                          ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:1105:16: error: ‘const struct kinematics::KinematicsQueryOptions’ has no member named ‘discretization_method’
     if(options.discretization_method == kinematics::DiscretizationMethods::NO_DISCRETIZATION &&
                ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:1105:53: error: ‘kinematics::DiscretizationMethods’ has not been declared
     if(options.discretization_method == kinematics::DiscretizationMethods::NO_DISCRETIZATION &&
                                                     ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:1114:16: error: request for member ‘kinematic_error’ in ‘result’, which is of non-class type ‘int’
         result.kinematic_error = kinematics::KinematicErrors::IK_SEED_OUTSIDE_LIMITS;
                ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:1114:46: error: ‘kinematics::KinematicErrors’ has not been declared
         result.kinematic_error = kinematics::KinematicErrors::IK_SEED_OUTSIDE_LIMITS;
                                              ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:1123:38: error: ‘const struct kinematics::KinematicsQueryOptions’ has no member named ‘discretization_method’
     if(!sampleRedundantJoint(options.discretization_method,sampled_joint_vals))
                                      ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:1125:14: error: request for member ‘kinematic_error’ in ‘result’, which is of non-class type ‘int’
       result.kinematic_error = kinematics::KinematicErrors::UNSUPORTED_DISCRETIZATION_REQUESTED;
              ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:1125:44: error: ‘kinematics::KinematicErrors’ has not been declared
       result.kinematic_error = kinematics::KinematicErrors::UNSUPORTED_DISCRETIZATION_REQUESTED;
                                            ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:1191:14: error: request for member ‘kinematic_error’ in ‘result’, which is of non-class type ‘int’
       result.kinematic_error = kinematics::KinematicErrors::OK;
              ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:1191:44: error: ‘kinematics::KinematicErrors’ has not been declared
       result.kinematic_error = kinematics::KinematicErrors::OK;
                                            ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:1200:10: error: request for member ‘kinematic_error’ in ‘result’, which is of non-class type ‘int’
   result.kinematic_error = kinematics::KinematicErrors::NO_SOLUTION;
          ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:1200:40: error: ‘kinematics::KinematicErrors’ has not been declared
   result.kinematic_error = kinematics::KinematicErrors::NO_SOLUTION;
                                        ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp: At global scope:
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:1204:63: error: ‘bool ikfast_kinematics_plugin::IKFastKinematicsPlugin::sampleRedundantJoint’ is not a static member of ‘class ikfast_kinematics_plugin::IKFastKinematicsPlugin’
 bool IKFastKinematicsPlugin::sampleRedundantJoint(kinematics::DiscretizationMethod method, std::vector<double>& sampled_joint_vals) const
                                                               ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:1204:51: error: ‘DiscretizationMethod’ is not a member of ‘kinematics’
 bool IKFastKinematicsPlugin::sampleRedundantJoint(kinematics::DiscretizationMethod method, std::vector<double>& sampled_joint_vals) const
                                                   ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:1204:111: error: expected primary-expression before ‘&’ token
 bool IKFastKinematicsPlugin::sampleRedundantJoint(kinematics::DiscretizationMethod method, std::vector<double>& sampled_joint_vals) const
                                                                                                               ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:1204:113: error: ‘sampled_joint_vals’ was not declared in this scope
 bool IKFastKinematicsPlugin::sampleRedundantJoint(kinematics::DiscretizationMethod method, std::vector<double>& sampled_joint_vals) const
                                                                                                                 ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:1204:131: error: expression list treated as compound expression in initializer [-fpermissive]
 bool IKFastKinematicsPlugin::sampleRedundantJoint(kinematics::DiscretizationMethod method, std::vector<double>& sampled_joint_vals) const
                                                                                                                                   ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:1204:133: error: expected ‘,’ or ‘;’ before ‘const’
 bool IKFastKinematicsPlugin::sampleRedundantJoint(kinematics::DiscretizationMethod method, std::vector<double>& sampled_joint_vals) const
                                                                                                                                     ^
/media/jph/linuxOnlyData/spacebot/src/crustcrawler_arm/moveit_ik_plugin/src/arm_manipulator_ikfast_moveit_plugin.cpp:1258:101: error: expected ‘}’ at end of input
 PLUGINLIB_EXPORT_CLASS(ikfast_kinematics_plugin::IKFastKinematicsPlugin, kinematics::KinematicsBase);
                                                                                                     ^
make[2]: *** [crustcrawler_arm/moveit_ik_plugin/CMakeFiles/arm_manipulator_moveit_ikfast_plugin.dir/src/arm_manipulator_ikfast_moveit_plugin.cpp.o] Error 1
make[1]: *** [crustcrawler_arm/moveit_ik_plugin/CMakeFiles/arm_manipulator_moveit_ikfast_plugin.dir/all] Error 2
make: *** [all] Error 2
Invoking "make -j4 -l4" failed

ikfast61_moveit_plugin_template.cpp not installed

$ rosrun moveit_ikfast create_ikfast_moveit_plugin.py korus arm korus_moveit_ikfast_plugin /home/marcus/.openrave/kinematics.e949180cc0c529f8201273314f70614a/ikfast61.TranslationZAxisAngle4D.0_2_3_4_f1.cpp 

IKFast Plugin Generator
Loading robot from 'korus_moveit_config' package ... 
Creating plugin in 'korus_moveit_ikfast_plugin' package ... 
  found 3 planning groups: arm, gripper, head
  found group 'arm'
  found source code generated by IKFast version 61

ERROR: can't find template file at '/opt/ros/hydro/share/moveit_ikfast/templates/ikfast61_moveit_plugin_template.cpp'

IKFast is not easily used as a library

The current package generated by moveit_ikfast is not easily used as a library. Some ikfast functionality, such as returning multiple IK results, may be useful. Because such functionality is outside the IK plugin definition, it is not generally available. The following is a list of issues that prevent a generated package from being included as a library:

  • The generated package does not include any headers. Instead method prototypes are embedded in the source file (*_manipulator_ikfast_moveit_plugin.cpp).
  • Namespace name(ikfast_kinematics_plugin) is not globally unique and does not follow the ROS convention of using the package name for namespacing
  • Loading a package as both a library and a plugin results in a DEBUG message that indicates this shouldn't be done (more research required).
  • CMakeList would need to be modified.

support for flipping j1 as required for kuka

Kuka has weired ideas about axis of rotation, with j1, j4, and j6 being left-handed while j2, j3 and j5 are normal right handed. ikfast fails to generate a solution for j1 being left-handed (ie axis of rotation is negative). See rdiankov/openrave#385 for a upstream bug report. I worked around this by creating a ikfast solution with a right handed j1 and flipping values in IKFastKinematicsPlugin::getPositionIK.

Do you think I should generalize my hack and open a pull request? Read in a value from parameter server and flip j1 according to this? (it does not seem necessary to flip other axis)

see my kuka_experimental fork for the current hack
https://github.com/simonschmeisser/kuka_experimental/blob/hydro-devel/kuka_kr60ha_moveit_plugins/src/kuka_kr60ha_manipulator_ikfast_moveit_plugin.cpp

Plugins no longer build after latest Groovy Debian update

Following the latest Groovy Debian update (ros_comm version 1.9.47), my moveit_ikfast plugins no longer build. Below is a sample output when I run catkin_make:

Base path: /home/patrick/catkin_ws
Source space: /home/patrick/catkin_ws/src
Build space: /home/patrick/catkin_ws/build
Devel space: /home/patrick/catkin_ws/devel
Install space: /home/patrick/catkin_ws/install

Running command: "cmake /home/patrick/catkin_ws/src -DCATKIN_DEVEL_PREFIX=/home/patrick/catkin_ws/devel -DCMAKE_INSTALL_PREFIX=/home/patrick/catkin_ws/install" in "/home/patrick/catkin_ws/build"

-- Using CATKIN_DEVEL_PREFIX: /home/patrick/catkin_ws/devel
-- Using CMAKE_PREFIX_PATH: /home/patrick/catkin_ws/devel;/opt/ros/groovy
-- This workspace overlays: /home/patrick/catkin_ws/devel;/opt/ros/groovy
-- Using Debian Python package layout
-- Using CATKIN_ENABLE_TESTING: ON
-- Call enable_testing()
-- Using CATKIN_TEST_RESULTS_DIR: /home/patrick/catkin_ws/build/test_results
-- Found gtest sources under '/usr/src/gtest': gtests will be built
-- catkin 0.5.71
-- BUILD_SHARED_LIBS is on
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~ traversing 5 packages in topological order:
-- ~~ - moveit_ikfast
-- ~~ - moveit_plugins (metapackage)
-- ~~ - moveit_simple_controller_manager
-- ~~ - pedestal_pi_head
-- ~~ - pedestal_pi_right_arm
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- +++ processing catkin package: 'moveit_ikfast'
-- ==> add_subdirectory(moveit_ikfast)
-- +++ processing catkin metapackage: 'moveit_plugins'
-- ==> add_subdirectory(moveit_plugins/moveit_plugins)
-- +++ processing catkin package: 'moveit_simple_controller_manager'
-- ==> add_subdirectory(moveit_plugins/moveit_simple_controller_manager)
-- +++ processing catkin package: 'pedestal_pi_head'
-- ==> add_subdirectory(pedestal_pi_head)
-- Eigen found (include: /usr/include/eigen3)
-- A library with BLAS API found.
-- A library with LAPACK API found.
-- +++ processing catkin package: 'pedestal_pi_right_arm'
-- ==> add_subdirectory(pedestal_pi_right_arm)
-- Eigen found (include: /usr/include/eigen3)
-- A library with BLAS API found.
-- A library with LAPACK API found.
-- Configuring done
-- Generating done
-- Build files have been written to: /home/patrick/catkin_ws/build

Running command: "make -j4 -l4" in "/home/patrick/catkin_ws/build"

[ 33%] [ 66%] [100%] Building CXX object pedestal_pi_right_arm/CMakeFiles/pedestal_pi_no_gripper_right_arm_moveit_ikfast_plugin.dir/src/pedestal_pi_no_gripper_right_arm_ikfast_moveit_plugin.cpp.o
Building CXX object moveit_plugins/moveit_simple_controller_manager/CMakeFiles/moveit_simple_controller_manager.dir/src/moveit_simple_controller_manager.cpp.o
Building CXX object pedestal_pi_head/CMakeFiles/pedestal_pi_no_gripper_head_moveit_ikfast_plugin.dir/src/pedestal_pi_no_gripper_head_ikfast_moveit_plugin.cpp.o
Linking CXX shared library /home/patrick/catkin_ws/devel/lib/libmoveit_simple_controller_manager.so
[100%] Built target moveit_simple_controller_manager
In file included from /opt/ros/groovy/include/class_loader/class_loader_core.h:39:0,
from /opt/ros/groovy/include/class_loader/class_loader_register_macro.h:33,
from /opt/ros/groovy/include/class_loader/class_loader.h:39,
from /opt/ros/groovy/include/pluginlib/class_list_macros.h:40,
from /home/patrick/catkin_ws/src/pedestal_pi_head/src/pedestal_pi_no_gripper_head_ikfast_moveit_plugin.cpp:827:
/opt/ros/groovy/include/class_loader/meta_object.h: In member function ‘B* class_loader::class_loader_private::MetaObject<C, B>::create() const [with C = ikfast_kinematics_plugin::IKFastKinematicsPlugin, B = kinematics::KinematicsBase]’:
/home/patrick/catkin_ws/src/pedestal_pi_head/src/pedestal_pi_no_gripper_head_ikfast_moveit_plugin.cpp:828:559: instantiated from here
/opt/ros/groovy/include/class_loader/meta_object.h:193:17: error: cannot allocate an object of abstract type ‘ikfast_kinematics_plugin::IKFastKinematicsPlugin’
/home/patrick/catkin_ws/src/pedestal_pi_head/src/pedestal_pi_no_gripper_head_ikfast_moveit_plugin.cpp:64:7: note: because the following virtual functions are pure within ‘ikfast_kinematics_plugin::IKFastKinematicsPlugin’:
/opt/ros/groovy/include/moveit/kinematics_base/kinematics_base.h:90:16: note: virtual bool kinematics::KinematicsBase::getPositionIK(const Pose&, const std::vector&, std::vector&, moveit_msgs::MoveItErrorCodes&, const kinematics::KinematicsQueryOptions&) const
/opt/ros/groovy/include/moveit/kinematics_base/kinematics_base.h:108:16: note: virtual bool kinematics::KinematicsBase::searchPositionIK(const Pose&, const std::vector&, double, std::vector&, moveit_msgs::MoveItErrorCodes&, const kinematics::KinematicsQueryOptions&) const
/opt/ros/groovy/include/moveit/kinematics_base/kinematics_base.h:128:16: note: virtual bool kinematics::KinematicsBase::searchPositionIK(const Pose&, const std::vector&, double, const std::vector&, std::vector&, moveit_msgs::MoveItErrorCodes&, const kinematics::KinematicsQueryOptions&) const
/opt/ros/groovy/include/moveit/kinematics_base/kinematics_base.h:150:16: note: virtual bool kinematics::KinematicsBase::searchPositionIK(const Pose&, const std::vector&, double, std::vector&, const IKCallbackFn&, moveit_msgs::MoveItErrorCodes&, const kinematics::KinematicsQueryOptions&) const
/opt/ros/groovy/include/moveit/kinematics_base/kinematics_base.h:173:16: note: virtual bool kinematics::KinematicsBase::searchPositionIK(const Pose&, const std::vector&, double, const std::vector&, std::vector&, const IKCallbackFn&, moveit_msgs::MoveItErrorCodes&, const kinematics::KinematicsQueryOptions&) const
make[2]: *** [pedestal_pi_head/CMakeFiles/pedestal_pi_no_gripper_head_moveit_ikfast_plugin.dir/src/pedestal_pi_no_gripper_head_ikfast_moveit_plugin.cpp.o] Error 1
make[1]: *** [pedestal_pi_head/CMakeFiles/pedestal_pi_no_gripper_head_moveit_ikfast_plugin.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
In file included from /opt/ros/groovy/include/class_loader/class_loader_core.h:39:0,
from /opt/ros/groovy/include/class_loader/class_loader_register_macro.h:33,
from /opt/ros/groovy/include/class_loader/class_loader.h:39,
from /opt/ros/groovy/include/pluginlib/class_list_macros.h:40,
from /home/patrick/catkin_ws/src/pedestal_pi_right_arm/src/pedestal_pi_no_gripper_right_arm_ikfast_moveit_plugin.cpp:827:
/opt/ros/groovy/include/class_loader/meta_object.h: In member function ‘B* class_loader::class_loader_private::MetaObject<C, B>::create() const [with C = ikfast_kinematics_plugin::IKFastKinematicsPlugin, B = kinematics::KinematicsBase]’:
/home/patrick/catkin_ws/src/pedestal_pi_right_arm/src/pedestal_pi_no_gripper_right_arm_ikfast_moveit_plugin.cpp:828:569: instantiated from here
/opt/ros/groovy/include/class_loader/meta_object.h:193:17: error: cannot allocate an object of abstract type ‘ikfast_kinematics_plugin::IKFastKinematicsPlugin’
/home/patrick/catkin_ws/src/pedestal_pi_right_arm/src/pedestal_pi_no_gripper_right_arm_ikfast_moveit_plugin.cpp:64:7: note: because the following virtual functions are pure within ‘ikfast_kinematics_plugin::IKFastKinematicsPlugin’:
/opt/ros/groovy/include/moveit/kinematics_base/kinematics_base.h:90:16: note: virtual bool kinematics::KinematicsBase::getPositionIK(const Pose&, const std::vector&, std::vector&, moveit_msgs::MoveItErrorCodes&, const kinematics::KinematicsQueryOptions&) const
/opt/ros/groovy/include/moveit/kinematics_base/kinematics_base.h:108:16: note: virtual bool kinematics::KinematicsBase::searchPositionIK(const Pose&, const std::vector&, double, std::vector&, moveit_msgs::MoveItErrorCodes&, const kinematics::KinematicsQueryOptions&) const
/opt/ros/groovy/include/moveit/kinematics_base/kinematics_base.h:128:16: note: virtual bool kinematics::KinematicsBase::searchPositionIK(const Pose&, const std::vector&, double, const std::vector&, std::vector&, moveit_msgs::MoveItErrorCodes&, const kinematics::KinematicsQueryOptions&) const
/opt/ros/groovy/include/moveit/kinematics_base/kinematics_base.h:150:16: note: virtual bool kinematics::KinematicsBase::searchPositionIK(const Pose&, const std::vector&, double, std::vector&, const IKCallbackFn&, moveit_msgs::MoveItErrorCodes&, const kinematics::KinematicsQueryOptions&) const
/opt/ros/groovy/include/moveit/kinematics_base/kinematics_base.h:173:16: note: virtual bool kinematics::KinematicsBase::searchPositionIK(const Pose&, const std::vector&, double, const std::vector&, std::vector&, const IKCallbackFn&, moveit_msgs::MoveItErrorCodes&, const kinematics::KinematicsQueryOptions&) const
make[2]: *** [pedestal_pi_right_arm/CMakeFiles/pedestal_pi_no_gripper_right_arm_moveit_ikfast_plugin.dir/src/pedestal_pi_no_gripper_right_arm_ikfast_moveit_plugin.cpp.o] Error 1
make[1]: *** [pedestal_pi_right_arm/CMakeFiles/pedestal_pi_no_gripper_right_arm_moveit_ikfast_plugin.dir/all] Error 2
make: *** [all] Error 2
Invoking "make" failed

templates: plugin desc CMake install target missing 'planning group name'

As per subject.

The generated CMakeLists.txt does not take the planning group name into account when setting up the install rule for the *_plugin_description.xml file. The group name is used when creating the plugin description file itself in create_ikfast_moveit_plugin.py, causing errors upon trying to install the package.

Generated packages append catkin_LIBRARY_DIRS to linker path

The CMakeLists.txt of generated packages contains the following line:

link_directories(${catkin_LIBRARY_DIRS})

This would seem to be unnecessary as catkin / cmake link all libraries using absolute paths. According to the docs, it could also lead to subtle bugs trying to find libraries and resolving symbols.

Can this line be removed from the generated CMakeLists.txt? Or is it required to compile the plugin packages? Some simple tests suggest it is not.

Bug: Search for cheapest IK solution

I finally got around to updating Baxter's ikfast plugins using the new #37 but unfortuantly I have found that the change has caused the IK solver to be incredibly slow. I suspect the robot the PR was tested on had much less redudancy, and so no performance difference was experienced. With the 7dof Baxter arms I am finding that ikfast will loop through ~530 ik solutions each request, requiring the cost of each solution to be calculated. I dug deeper into the code and I found that the best "cheapest" solution is almost always found between 1 and 30 iterations - meaning the remaining 500 checks are a waste of time.

The MoveIt Motion Planning Plugin using IKFast is now almost unusable.

These are preliminary ideas, but with Baxter I have added the following logic:

  • If a solution has been found after 30 iterations, stop and use that one
  • If the difference in costs between best solution improvements drops below 0.01, return that solution

You can see a messy hack for this in this commit:
davetcoleman/baxter_cpp@407d72d

Note that I also had to reduce the kinematic.yaml settings for better performance.

Even with these changes response time is slower for Baxter, though the solutions are much smoother/better.

@nalt

IKTYPE not defined

The treatment of different IK types introduced in commit 50a7e29 spawns error messages like "You need to #define a IKTYPE_!" because nowhere in the process described in http://moveit.ros.org/wiki/Kinematics/IKFast any IKTYPE like IKTYPE_TRANSFORM_6D is defined in a generated source file.

I tried to track down the place where this define should be set, but couldn't figure out whether the error originally stems from the OpenRave IKFast package or from moveit_ikfast.

Use of StringStream in new "GetAllIK" Function

So I've been building the software on the Descartes side necessary to interface with the changes in #57 and it's Jade equivalent.

One of the debug statements is built from a std::stringstream, and in an optimized build of a workspace, running on a representative problem, this stringstream is eating more than 60% of the runtime involved with the IK calls.
ikfast_plugin

All of this for:

ROS_DEBUG_NAMED("ikfast","Sol %d: %s", s, ss.str().c_str());

ikfast-kinetic

I recently run into issue with generating ikfast on ros-kinetic. I downloaded and compiled moveit_ikfast kinetic devel. I also generated my ikfast.cpp file and created ikfast plugin. When trying to build ikfast package I am getting following error.

In file included from /opt/ros/kinetic/include/moveit/macros/class_forward.h:40:0,
from /opt/ros/kinetic/include/moveit/kinematics_base/kinematics_base.h:42,
from /root/catkin_ws/src/abb/abb_irb1600_ikfast_plugin/src/abb_irb1600_mts_manipulator_ikfast_moveit_plugin.cpp:49:
/opt/ros/kinetic/include/moveit/macros/declare_ptr.h:52:16: error: ‘shared_ptr’ in namespace ‘std’ does not name a template type
typedef std::shared_ptr Name##Ptr;
^
/opt/ros/kinetic/include/moveit/macros/class_forward.h:51:3: note: in expansion of macro ‘MOVEIT_DECLARE_PTR’
MOVEIT_DECLARE_PTR(C, C);
^
/opt/ros/kinetic/include/moveit/kinematics_base/kinematics_base.h:137:1: note: in expansion of macro ‘MOVEIT_CLASS_FORWARD’
MOVEIT_CLASS_FORWARD(KinematicsBase);
^
/opt/ros/kinetic/include/moveit/macros/declare_ptr.h:53:16: error: ‘shared_ptr’ in namespace ‘std’ does not name a template type
typedef std::shared_ptr Name##ConstPtr;
^
/opt/ros/kinetic/include/moveit/macros/class_forward.h:51:3: note: in expansion of macro ‘MOVEIT_DECLARE_PTR’
MOVEIT_DECLARE_PTR(C, C);
^
/opt/ros/kinetic/include/moveit/kinematics_base/kinematics_base.h:137:1: note: in expansion of macro ‘MOVEIT_CLASS_FORWARD’
MOVEIT_CLASS_FORWARD(KinematicsBase);
^
abb/abb_irb1600_ikfast_plugin/CMakeFiles/abb_irb1600_mts_manipulator_moveit_ikfast_plugin.dir/build.make:62: recipe for target 'abb/abb_irb1600_ikfast_plugin/CMakeFiles/abb_irb1600_mts_manipulator_moveit_ikfast_plugin.dir/src/abb_irb1600_mts_manipulator_ikfast_moveit_plugin.cpp.o' failed
make[2]: *** [abb/abb_irb1600_ikfast_plugin/CMakeFiles/abb_irb1600_mts_manipulator_moveit_ikfast_plugin.dir/src/abb_irb1600_mts_manipulator_ikfast_moveit_plugin.cpp.o] Error 1
CMakeFiles/Makefile2:13767: recipe for target 'abb/abb_irb1600_ikfast_plugin/CMakeFiles/abb_irb1600_mts_manipulator_moveit_ikfast_plugin.dir/all' failed
make[1]: *** [abb/abb_irb1600_ikfast_plugin/CMakeFiles/abb_irb1600_mts_manipulator_moveit_ikfast_plugin.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[100%] Built target binpicking_demo
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j8 -l8" failed

Thank you for your help

ValueError when creating plugin under Ubuntu 14.04 and ROS Indigo

My setup is Ubuntu 14.04 and ROS Indigo Debian install. I am using version 0.9 of OpenRave, source install since Debian packages for Ubuntu 14.04 are not yet available.

After building the .cpp file using OpenRave's ipfast.py utility, I get the following error when trying to build the plugin:

$ rosrun moveit_ikfast create_ikfast_moveit_plugin.py pi_robot right_arm pi_robot_ikfast_right_arm_plugin `pwd`/output_ikfast61.cpp
Warning: The default search has changed from OPTIMIZE_FREE_JOINT to now OPTIMIZE_MAX_JOINT!

IKFast Plugin Generator
Loading robot from 'pi_robot_moveit_config' package ... 
Creating plugin in 'pi_robot_ikfast_right_arm_plugin' package ... 
  found 2 planning groups: right_arm, right_gripper
  found group 'right_arm'
Traceback (most recent call last):
  File "/opt/ros/indigo/lib/moveit_ikfast/create_ikfast_moveit_plugin.py", line 178, in <module>
    solver_version = int(line_search.group(1))
ValueError: invalid literal for int() with base 10: '0x10000048'

My output_ikfast.cpp file can be found here.

remove obsolete IKTYPE_TRANSFORM_6D defines

IKFastKinematicsPlugin::getPositionFK(...) still relies on the IKTYPE_TRANSFORM_6D define which was otherwise eliminated by @mintar in pull request #13. Probably, GetIkType() would work here as well similar to #13.
I'd have removed it myself, but don't know what the implications are, so I'd rather let it to someone who is sure of what they are doing.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.