moveit / moveit_ikfast

THIS REPO HAS MOVED TO https://github.com/ros-planning/moveit
12 stars 20 forks source link

Plugins no longer build after latest Groovy Debian update #7

Closed pirobot closed 11 years ago

pirobot commented 11 years ago

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

isucan commented 11 years ago

The base class in kinematics_base changed a little while back, and it now made it to public debs. I am sorry for the inconvenience, but unfortunately the generated plugin needs to be updated: https://groups.google.com/forum/?hl=en#!searchin/moveit-users/kinematics/moveit-users/948Z-CD8WSw/NINoAWH04PIJ

You can manually update, looking at the changes applied to the template: https://github.com/ros-planning/moveit_ikfast/commit/8230ace255bfcc23665ddf6aa894e76858870b9e https://github.com/ros-planning/moveit_ikfast/commit/e0d1b58e05da5a39e4a428ed654c81d83651864e

pirobot commented 11 years ago

Checking out the latest moveit-ikfast source from Github and regenerating the plugins seems to have worked--almost. The plugin builds fine but I get the following runtime error whenever IK is called:

[ERROR] [1374972953.912798295]: You need to #define a IKTYPE_!

I was able to fix this by adding the following line to my *_ikfast_moveit_plugin.cpp file:

define IKTYPE_TRANSFORM_6D