error: cannot convert ‘moveit::planning_interface::MoveItErrorCode’ to ‘bool’ in assignment result_ = group.plan(my_plan); and Invoking "make -j8 -l8" failed
Your environment
- ROS Distro: [Kinetic]
- OS Version: Ubuntu 16.04
- Source or Binary build?
- If binary, which release version?
- If source, which git commit or tag?
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
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
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
Comments