Robotics StackExchange | Archived questions

error: cannot convert ‘moveit::planning_interface::MoveItErrorCode’ to ‘bool’ in assignment result_ = group.plan(my_plan); and Invoking "make -j8 -l8" failed

Your environment

Im using ubuntu 16.04 to do a kinova arm project and i install kinova package, after when i catkin_make it, it should error from 96%.

and the errir code is

[ 98%] Building CXX object kinova-ros/kinova_moveit/kinova_arm_moveit_demo/CMakeFiles/pick_place.dir/src/pick_place.cpp.o
In file included from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/motion_plan.cpp:1:0:
/opt/ros/kinetic/include/moveit/move_group_interface/move_group.h:43:2: warning: #warning "This header is deprecated and will go away in ROS lunar." "Please use moveit/move_group_interface/move_group_interface.h" "and the class MoveGroupInterface instead of MoveGroup" [-Wcpp]
 #warning "This header is deprecated and will go away in ROS lunar."\
  ^
In file included from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/include/test_accuracy.h:15:0,
                 from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/test_accuracy.cpp:3:
/opt/ros/kinetic/include/moveit/move_group_interface/move_group.h:43:2: warning: #warning "This header is deprecated and will go away in ROS lunar." "Please use moveit/move_group_interface/move_group_interface.h" "and the class MoveGroupInterface instead of MoveGroup" [-Wcpp]
 #warning "This header is deprecated and will go away in ROS lunar."\
  ^
In file included from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/include/pick_place.h:15:0,
                 from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/pick_place.cpp:1:
/opt/ros/kinetic/include/moveit/move_group_interface/move_group.h:43:2: warning: #warning "This header is deprecated and will go away in ROS lunar." "Please use moveit/move_group_interface/move_group_interface.h" "and the class MoveGroupInterface instead of MoveGroup" [-Wcpp]
 #warning "This header is deprecated and will go away in ROS lunar."\
  ^
/home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/motion_plan.cpp: In function ‘int main(int, char**)’:
/home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/motion_plan.cpp:31:46: warning: ‘MoveGroup’ is deprecated [-Wdeprecated-declarations]
   moveit::planning_interface::MoveGroup group("arm");
                                              ^
In file included from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/motion_plan.cpp:1:0:
/opt/ros/kinetic/include/moveit/move_group_interface/move_group.h:56:7: note: declared here
 class MoveGroup : public MoveGroupInterface
       ^
/home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/motion_plan.cpp:76:36: error: cannot convert ‘moveit::planning_interface::MoveItErrorCode’ to ‘bool’ in initialization
   bool success = group.plan(my_plan);
                                    ^
/home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/motion_plan.cpp:126:11: error: cannot convert ‘moveit::planning_interface::MoveItErrorCode’ to ‘bool’ in assignment
   success = group.plan(my_plan);
           ^
/home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/motion_plan.cpp:176:11: error: cannot convert ‘moveit::planning_interface::MoveItErrorCode’ to ‘bool’ in assignment
   success = group.plan(my_plan);
           ^
/home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/motion_plan.cpp:271:11: error: cannot convert ‘moveit::planning_interface::MoveItErrorCode’ to ‘bool’ in assignment
   success = group.plan(my_plan);
           ^
In file included from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/test_accuracy.cpp:3:0:
/home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/include/test_accuracy.h:52:48: warning: ‘MoveGroup’ is deprecated [-Wdeprecated-declarations]
         moveit::planning_interface::MoveGroup* group_;
                                                ^
In file included from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/include/test_accuracy.h:15:0,
                 from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/test_accuracy.cpp:3:
/opt/ros/kinetic/include/moveit/move_group_interface/move_group.h:56:7: note: declared here
 class MoveGroup : public MoveGroupInterface
       ^
In file included from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/test_accuracy.cpp:3:0:
/home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/include/test_accuracy.h:53:48: warning: ‘MoveGroup’ is deprecated [-Wdeprecated-declarations]
         moveit::planning_interface::MoveGroup* gripper_group_;
                                                ^
In file included from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/include/test_accuracy.h:15:0,
                 from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/test_accuracy.cpp:3:
/opt/ros/kinetic/include/moveit/move_group_interface/move_group.h:56:7: note: declared here
 class MoveGroup : public MoveGroupInterface
       ^
In file included from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/test_accuracy.cpp:3:0:
/home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/include/test_accuracy.h:130:72: warning: ‘MoveGroup’ is deprecated [-Wdeprecated-declarations]
         void evaluate_plan(moveit::planning_interface::MoveGroup &group);
                                                                        ^
In file included from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/include/test_accuracy.h:15:0,
                 from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/test_accuracy.cpp:3:
/opt/ros/kinetic/include/moveit/move_group_interface/move_group.h:56:7: note: declared here
 class MoveGroup : public MoveGroupInterface
       ^
/home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/test_accuracy.cpp: In constructor ‘kinova::PickPlace::PickPlace(ros::NodeHandle&)’:
/home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/test_accuracy.cpp:62:46: warning: ‘MoveGroup’ is deprecated [-Wdeprecated-declarations]
     group_ = new moveit::planning_interface::MoveGroup("arm");
                                              ^
In file included from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/include/test_accuracy.h:15:0,
                 from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/test_accuracy.cpp:3:
/opt/ros/kinetic/include/moveit/move_group_interface/move_group.h:56:7: note: declared here
 class MoveGroup : public MoveGroupInterface
       ^
/home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/test_accuracy.cpp:63:54: warning: ‘MoveGroup’ is deprecated [-Wdeprecated-declarations]
     gripper_group_ = new moveit::planning_interface::MoveGroup("gripper");
                                                      ^
In file included from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/include/test_accuracy.h:15:0,
                 from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/test_accuracy.cpp:3:
/opt/ros/kinetic/include/moveit/move_group_interface/move_group.h:56:7: note: declared here
 class MoveGroup : public MoveGroupInterface
       ^
In file included from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/pick_place.cpp:1:0:
/home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/include/pick_place.h:49:48: warning: ‘MoveGroup’ is deprecated [-Wdeprecated-declarations]
         moveit::planning_interface::MoveGroup* group_;
                                                ^
In file included from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/include/pick_place.h:15:0,
                 from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/pick_place.cpp:1:
/opt/ros/kinetic/include/moveit/move_group_interface/move_group.h:56:7: note: declared here
 class MoveGroup : public MoveGroupInterface
       ^
In file included from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/pick_place.cpp:1:0:
/home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/include/pick_place.h:50:48: warning: ‘MoveGroup’ is deprecated [-Wdeprecated-declarations]
         moveit::planning_interface::MoveGroup* gripper_group_;
                                                ^
In file included from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/include/pick_place.h:15:0,
                 from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/pick_place.cpp:1:
/opt/ros/kinetic/include/moveit/move_group_interface/move_group.h:56:7: note: declared here
 class MoveGroup : public MoveGroupInterface
       ^
In file included from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/pick_place.cpp:1:0:
/home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/include/pick_place.h:125:72: warning: ‘MoveGroup’ is deprecated [-Wdeprecated-declarations]
         void evaluate_plan(moveit::planning_interface::MoveGroup &group);
                                                                        ^
In file included from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/include/pick_place.h:15:0,
                 from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/pick_place.cpp:1:
/opt/ros/kinetic/include/moveit/move_group_interface/move_group.h:56:7: note: declared here
 class MoveGroup : public MoveGroupInterface
       ^
/home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/pick_place.cpp: In constructor ‘kinova::PickPlace::PickPlace(ros::NodeHandle&)’:
/home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/pick_place.cpp:60:46: warning: ‘MoveGroup’ is deprecated [-Wdeprecated-declarations]
     group_ = new moveit::planning_interface::MoveGroup("arm");
                                              ^
In file included from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/include/pick_place.h:15:0,
                 from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/pick_place.cpp:1:
/opt/ros/kinetic/include/moveit/move_group_interface/move_group.h:56:7: note: declared here
 class MoveGroup : public MoveGroupInterface
       ^
/home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/pick_place.cpp:61:54: warning: ‘MoveGroup’ is deprecated [-Wdeprecated-declarations]
     gripper_group_ = new moveit::planning_interface::MoveGroup("gripper");
                                                      ^
In file included from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/include/pick_place.h:15:0,
                 from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/pick_place.cpp:1:
/opt/ros/kinetic/include/moveit/move_group_interface/move_group.h:56:7: note: declared here
 class MoveGroup : public MoveGroupInterface
       ^
/home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/test_accuracy.cpp: At global scope:
/home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/test_accuracy.cpp:641:75: warning: ‘MoveGroup’ is deprecated [-Wdeprecated-declarations]
 void PickPlace::evaluate_plan(moveit::planning_interface::MoveGroup &group)
                                                                           ^
In file included from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/include/test_accuracy.h:15:0,
                 from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/test_accuracy.cpp:3:
/opt/ros/kinetic/include/moveit/move_group_interface/move_group.h:56:7: note: declared here
 class MoveGroup : public MoveGroupInterface
       ^
/home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/test_accuracy.cpp: In member function ‘void kinova::PickPlace::evaluate_plan(moveit::planning_interface::MoveGroup&)’:
/home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/test_accuracy.cpp:662:21: error: cannot convert ‘moveit::planning_interface::MoveItErrorCode’ to ‘bool’ in assignment
             result_ = group.plan(my_plan);
                     ^
/home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/pick_place.cpp: At global scope:
/home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/pick_place.cpp:637:75: warning: ‘MoveGroup’ is deprecated [-Wdeprecated-declarations]
 void PickPlace::evaluate_plan(moveit::planning_interface::MoveGroup &group)
                                                                           ^
In file included from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/include/pick_place.h:15:0,
                 from /home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/pick_place.cpp:1:
/opt/ros/kinetic/include/moveit/move_group_interface/move_group.h:56:7: note: declared here
 class MoveGroup : public MoveGroupInterface
       ^
/home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/pick_place.cpp: In member function ‘void kinova::PickPlace::evaluate_plan(moveit::planning_interface::MoveGroup&)’:
/home/ruxuan/catkin_ws/src/kinova-ros/kinova_moveit/kinova_arm_moveit_demo/src/pick_place.cpp:658:21: error: cannot convert ‘moveit::planning_interface::MoveItErrorCode’ to ‘bool’ in assignment
             result_ = group.plan(my_plan);
                     ^
kinova-ros/kinova_moveit/kinova_arm_moveit_demo/CMakeFiles/motion_plan.dir/build.make:62: recipe for target 'kinova-ros/kinova_moveit/kinova_arm_moveit_demo/CMakeFiles/motion_plan.dir/src/motion_plan.cpp.o' failed
make[2]: *** [kinova-ros/kinova_moveit/kinova_arm_moveit_demo/CMakeFiles/motion_plan.dir/src/motion_plan.cpp.o] Error 1
CMakeFiles/Makefile2:6248: recipe for target 'kinova-ros/kinova_moveit/kinova_arm_moveit_demo/CMakeFiles/motion_plan.dir/all' failed
make[1]: *** [kinova-ros/kinova_moveit/kinova_arm_moveit_demo/CMakeFiles/motion_plan.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
kinova-ros/kinova_moveit/kinova_arm_moveit_demo/CMakeFiles/pick_place.dir/build.make:62: recipe for target 'kinova-ros/kinova_moveit/kinova_arm_moveit_demo/CMakeFiles/pick_place.dir/src/pick_place.cpp.o' failed
make[2]: *** [kinova-ros/kinova_moveit/kinova_arm_moveit_demo/CMakeFiles/pick_place.dir/src/pick_place.cpp.o] Error 1
CMakeFiles/Makefile2:6354: recipe for target 'kinova-ros/kinova_moveit/kinova_arm_moveit_demo/CMakeFiles/pick_place.dir/all' failed
make[1]: *** [kinova-ros/kinova_moveit/kinova_arm_moveit_demo/CMakeFiles/pick_place.dir/all] Error 2
kinova-ros/kinova_moveit/kinova_arm_moveit_demo/CMakeFiles/test_accuracy.dir/build.make:62: recipe for target 'kinova-ros/kinova_moveit/kinova_arm_moveit_demo/CMakeFiles/test_accuracy.dir/src/test_accuracy.cpp.o' failed
make[2]: *** [kinova-ros/kinova_moveit/kinova_arm_moveit_demo/CMakeFiles/test_accuracy.dir/src/test_accuracy.cpp.o] Error 1
CMakeFiles/Makefile2:6423: recipe for target 'kinova-ros/kinova_moveit/kinova_arm_moveit_demo/CMakeFiles/test_accuracy.dir/all' failed
make[1]: *** [kinova-ros/kinova_moveit/kinova_arm_moveit_demo/CMakeFiles/test_accuracy.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j8 -l8" failed

How do i solve this probelm?

Asked by ruxuan.kuang521 on 2018-11-01 07:37:59 UTC

Comments

Answers

So the main issue here is that at one point, MoveGroupInterface::plan() returned a bool: true if successful, and false otherwise. However, MoveGroupInterface::plan() now returns a MoveItErrorCode (see here), which is much more detailed and can say why a plan failed. However, code written to expect a bool won't compile anymore with this change, as the MoveItErrorCode type is not implicitly convertible to a bool.

As mentioned in the Migration document of MoveIt, this can be fixed by changing the code that compiles with MoveIt to use static_cast<bool>(move_group.plan()), instead of the old move_group.plan(). Since you are trying to compile with the Kinova Robot project, you would have to go to the lines shown in the above compile error, say motion.plan.cpp:76, and replace

bool success = group.plan(my_plan);

with

bool success = static_cast<bool>(group.plan(my_plan);

Changing all of those errors should allow the Kinova project to compile.

Asked by BryceWilley on 2018-11-01 08:28:58 UTC

Comments

Hi, So that means I should check all cpp files in the Kinova MoveIt folder right? Sincerely

Asked by ruxuan.kuang521 on 2018-11-01 09:00:18 UTC

Just the ones that are mentioned in the compiler errors above: It seems to be only kinova_moveit/kinova_arm_moveit_demo/src/motion_plan.cpp.

Asked by BryceWilley on 2018-11-01 09:24:24 UTC

will do! ill keep you update, recently im struggling with midterm not really have much time to continue this, but ill definitely let you know when i got time to fix this at the end of this week. really appreciated!

Asked by ruxuan.kuang521 on 2018-11-01 10:01:17 UTC

Hi, i think another issue comes up. /home/ruxuan/catkin_ws/src/kinovaros/kinova_moveit/kinova_arm_moveit_demo/src/pick_place.cpp:658:21: error: cannot convert ‘moveit::planning_interface::MoveItErrorCode’ to ‘bool’ in assignment result_ = group.plan(my_plan); whats the solution for this?

Asked by ruxuan.kuang521 on 2018-11-07 21:19:33 UTC

It seems the motion_plan.cpp file in the Kinova project only includes the move_group.h file, even though the code that allows you to use a static_cast<bool>(...) lives in...

Asked by BryceWilley on 2018-11-07 22:14:20 UTC

moveit_group_interface.h. Try adding #include <moveit/move_group_interface/move_group_interface.h> at the top or ...

Asked by BryceWilley on 2018-11-07 22:15:49 UTC

Simply use the equivalent expression instead: group.plan(my_plan) == moveit_msgs::MoveItErrorCodes::SUCCESS;

Asked by BryceWilley on 2018-11-07 22:18:21 UTC

hi, i add static_cast(...) on those and the cmake works fine right now. and now a new problem comes out. could u please check this issue? https://answers.ros.org/question/307850/the-kinematics-plugin-arm-failed-to-load-and-kinematics-solver-could-not-be-instantiated-for-joint-group-arm/

Asked by ruxuan.kuang521 on 2018-11-07 23:23:41 UTC

Hi, I got the same problem i tried to add the including, didnt help. How do u mean group.plan(..)==... statement, where should i write it, replace all the error places or where?

Asked by kijisa on 2018-11-09 06:42:57 UTC