micro-ROS_moveit2_demo icon indicating copy to clipboard operation
micro-ROS_moveit2_demo copied to clipboard

Colcon Build Fail with latest version of Moveit2

Open Kelly-Coffey opened this issue 4 years ago • 13 comments

Issue template

  • Hardware description: Ubuntu 20.04 i386 Machine
  • RTOS: Linux
  • Installation type: micro-ROS_moveit2_demo
  • Version or commit hash: Foxy

Steps to reproduce the issue

Reproduce the steps for the MoveIt 2 + micro-ROS demo https://github.com/micro-ROS/micro-ROS_moveit2_demo

Expected behavior

After confirming Moveit is properly installed upon installing the micro-ROS_moveit2_demo from git I would expect the build to succeed.

Actual behavior

Colcon build fails with....

ubu@ubu:~/microros_Zephyr_ws$ colcon build --event-handlers desktop_notification- status- --packages-select microros_moveit2_demo --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
Starting >>> microros_moveit2_demo
[Processing: microros_moveit2_demo]
--- stderr: microros_moveit2_demo
CMake Warning at /home/ubu/ws_moveit2/install/moveit_servo/share/moveit_servo/cmake/ament_cmake_export_libraries-extras.cmake:116 (message):
  Package 'moveit_servo' exports library 'export_moveit_servo' which couldn't
  be found
Call Stack (most recent call first):
  /home/ubu/ws_moveit2/install/moveit_servo/share/moveit_servo/cmake/moveit_servoConfig.cmake:41 (include)
  CMakeLists.txt:26 (find_package)


/home/ubu/microros_Zephyr_ws/micro-ROS_moveit2_demo/src/microros_moveit2servo_demo.cpp:47:10: fatal error: moveit_servo/servo_parameters.cpp: No such file or directory
   47 | #include <moveit_servo/servo_parameters.cpp>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [CMakeFiles/microros_moveit2servo_demo.dir/build.make:63: CMakeFiles/microros_moveit2servo_demo.dir/src/microros_moveit2servo_demo.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:80: CMakeFiles/microros_moveit2servo_demo.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
/home/ubu/microros_Zephyr_ws/micro-ROS_moveit2_demo/src/microros_moveit2_demo.cpp: In lambda function:
/home/ubu/microros_Zephyr_ws/micro-ROS_moveit2_demo/src/microros_moveit2_demo.cpp:34:74: warning: unused parameter ‘msg’ [-Wunused-parameter]
   34 |     auto trigger_callback = [this](const std_msgs::msg::Empty::SharedPtr msg) -> void
      |                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
make: *** [Makefile:141: all] Error 2
---
Failed   <<< microros_moveit2_demo [35.4s, exited with code 2]

Summary: 0 packages finished [35.6s]
  1 package failed: microros_moveit2_demo
  1 package had stderr output: microros_moveit2_demo

Thank you Kelly

Kelly-Coffey avatar Mar 23 '21 03:03 Kelly-Coffey

Once I hard code all the missing includes I get to the same build issue as described in issue #4

Kelly-Coffey avatar Mar 23 '21 04:03 Kelly-Coffey

Could you open a PR with the missing headers?

pablogs9 avatar Mar 23 '21 06:03 pablogs9

The changes are in two repos. Let me know if you want me to create PRs for both, I can.

,,, From micro-ROS/micro-ROS_moveit2_demo The file changes are in src/microros_moveit2servo_demo.cpp /********************************************************************/ / Title : servo_cpp_interface_demo.cpp

  • Project : moveit_servo
  • Created : 07/13/2020
  • Author : Adam Pettinger */

// ROS #include <rclcpp/rclcpp.hpp> #include <tf2_msgs/msg/tf_message.hpp> #include <std_msgs/msg/empty.hpp>

// Servo //#include <moveit_servo/servo_parameters.cpp> #include </home/ubu/ws_moveit2/src/moveit2/moveit_ros/moveit_servo/src/servo_parameters.cpp> //#include <moveit_servo/servo.h> #include </home/ubu/ws_moveit2/install/moveit_servo/include/moveit_servo/servo.h> #include <moveit/planning_scene_monitor/planning_scene_monitor.h>

... Using a ROS 2 Foxy installation install MoveIt2 The file changes are in /home/ubu/ws_moveit2/src/moveit2/moveit_ros/moveit_servo/src/servo_parameters.cpp

*********************************************************************/

/* Author : Adam Pettinger Desc : Declares, loads, and checks ServoParameters for Servo Title : servo_parameters.cpp Project : moveit_servo Created : 07/02/2020 */

#include <type_traits> #include <rclcpp/rclcpp.hpp> //#include <moveit_servo/servo_parameters.h> #include </home/ubu/ws_moveit2/install/moveit_servo/include/moveit_servo/servo_parameters.h>

Kelly-Coffey avatar Mar 25 '21 03:03 Kelly-Coffey

yes please open a PR with the fix

pablogs9 avatar Mar 25 '21 06:03 pablogs9

OK, I will get it done this weekend.

Kelly-Coffey avatar Mar 26 '21 04:03 Kelly-Coffey

I have create the PR for this repo. I have not created the PR for the ros-planning/moveit2 yet but everything is staged at https://github.com/Kelly-Coffey/moveit2 Thanks

Kelly-Coffey avatar Mar 27 '21 19:03 Kelly-Coffey

I just checked and it looks like MoveIt2 fixed their build as this build issue (missing header files) does not occur any longer. I am going to close. I'll close the PR I created too.

Kelly-Coffey avatar Mar 31 '21 19:03 Kelly-Coffey

I see you have merged by hard code to headers so of course it works on my system. Reopening.

Kelly-Coffey avatar Mar 31 '21 19:03 Kelly-Coffey

I have been trying to solve this, but the executable cannot find the moveit_servo includes. I have the moveit_servo included as ament_target_dependencies. @Kelly-Coffey do you have any idea?

pablogs9 avatar Apr 07 '21 08:04 pablogs9

I don't know either. I will work on identifying what could be the issue. I am a novice with Moveit2. I will let you know once I have exhausted all my debugging ideas. I am planning to use Moveit2 to send ros commands to my MicroROS node, so I need to spend the time learning Moveit2.

Kelly-Coffey avatar Apr 07 '21 22:04 Kelly-Coffey

Cool, thanks a lot.

pablogs9 avatar Apr 08 '21 05:04 pablogs9

After "commit Fix EXPORT install in CMake" (https://github.com/ros-planning/moveit2/pull/372)
I am able to the reproduce error of not found moveit_servor include files. Prior to this commit the executable can find the include files during the build.

I don't know what exactly is broken, but the following ament_export_... commands ament_export_include_directories(include) ament_export_libraries(${SERVO_LIB_NAME}) ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS})

were move from the bottom of up to the install section in /home/.../ws_moveit2/src/moveit2/moveit_ros/moveit_servo/CMakeLists.txt

once I put them back at the bottom (an left the same command in the install section) the include files are found my the executable.

Kelly-Coffey avatar Apr 11 '21 00:04 Kelly-Coffey

@Kelly-Coffey I've just noticed this issue by coincidence. Could you confirm if https://github.com/ros-planning/moveit2/pull/448 fixes your problem?

henningkayser avatar May 03 '21 14:05 henningkayser