PilzDE / pilz_robots

PILZ robot manipulator module PRBT 6 in ROS
https://wiki.ros.org/pilz_robots
50 stars 25 forks source link

miss OperationModes.h, GetOperationMode.h, modbus.h #474

Closed lyh458 closed 3 years ago

lyh458 commented 3 years ago

Commit

branch: melodic-devel

Steps to reproduce

  1. git clone https://github.com/PilzDE/pilz_robots.git
  2. cd
  3. catkin_make
  4. install the dependencies by command sudo apt install ros-melodic-pilz-<package>, such as pilz_msgs, etc.

Observed behavior

Could't found some headers when catkin_make, even though I have installed the related packages, and could not foud in the installed packages' folder with command locate <header_name>. Logfiles below.

Logfiles

In file included from /home/lyh/Codes/robot_ws/src/pilz_robots/prbt_hardware_support/src/modbus_adapter_operation_mode_node.cpp:20:0:
/home/lyh/Codes/robot_ws/src/pilz_robots/prbt_hardware_support/include/prbt_hardware_support/modbus_adapter_operation_mode.h:25:10: fatal error: pilz_msgs/OperationModes.h: No such file or directory
 #include <pilz_msgs/OperationModes.h>
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
pilz_robots/prbt_hardware_support/CMakeFiles/modbus_adapter_operation_mode_node.dir/build.make:62: recipe for target 'pilz_robots/prbt_hardware_support/CMakeFiles/modbus_adapter_operation_mode_node.dir/src/modbus_adapter_operation_mode_node.cpp.o' failed
make[2]: *** [pilz_robots/prbt_hardware_support/CMakeFiles/modbus_adapter_operation_mode_node.dir/src/modbus_adapter_operation_mode_node.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from /home/lyh/Codes/robot_ws/src/pilz_robots/prbt_hardware_support/src/modbus_adapter_operation_mode.cpp:19:0:
/home/lyh/Codes/robot_ws/src/pilz_robots/prbt_hardware_support/include/prbt_hardware_support/modbus_adapter_operation_mode.h:25:10: fatal error: pilz_msgs/OperationModes.h: No such file or directory
 #include <pilz_msgs/OperationModes.h>
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
pilz_robots/prbt_hardware_support/CMakeFiles/modbus_adapter_operation_mode_node.dir/build.make:86: recipe for target 'pilz_robots/prbt_hardware_support/CMakeFiles/modbus_adapter_operation_mode_node.dir/src/modbus_adapter_operation_mode.cpp.o' failed
make[2]: *** [pilz_robots/prbt_hardware_support/CMakeFiles/modbus_adapter_operation_mode_node.dir/src/modbus_adapter_operation_mode.cpp.o] Error 1
[ 98%] Building CXX object pilz_robots/prbt_hardware_support/CMakeFiles/pilz_modbus_client_node.dir/src/modbus_check_ip_connection.cpp.o
[ 98%] Building CXX object pilz_robots/prbt_hardware_support/CMakeFiles/pilz_modbus_client_node.dir/src/modbus_msg_in_builder.cpp.o
In file included from /home/lyh/Codes/robot_ws/src/pilz_robots/prbt_hardware_support/src/adapter_operation_mode.cpp:18:0:
/home/lyh/Codes/robot_ws/src/pilz_robots/prbt_hardware_support/include/prbt_hardware_support/adapter_operation_mode.h:25:10: fatal error: pilz_msgs/GetOperationMode.h: No such file or directory
 #include <pilz_msgs/GetOperationMode.h>
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
pilz_robots/prbt_hardware_support/CMakeFiles/modbus_adapter_operation_mode_node.dir/build.make:110: recipe for target 'pilz_robots/prbt_hardware_support/CMakeFiles/modbus_adapter_operation_mode_node.dir/src/adapter_operation_mode.cpp.o' failed
make[2]: *** [pilz_robots/prbt_hardware_support/CMakeFiles/modbus_adapter_operation_mode_node.dir/src/adapter_operation_mode.cpp.o] Error 1
CMakeFiles/Makefile2:19383: recipe for target 'pilz_robots/prbt_hardware_support/CMakeFiles/modbus_adapter_operation_mode_node.dir/all' failed
make[1]: *** [pilz_robots/prbt_hardware_support/CMakeFiles/modbus_adapter_operation_mode_node.dir/all] Error 2
[ 98%] Linking CXX executable /home/lyh/Codes/robot_ws/devel/lib/iiwa_ros/iiwa_ros_test
In file included from /home/lyh/Codes/robot_ws/src/pilz_robots/prbt_hardware_support/src/pilz_modbus_client_node.cpp:25:0:
/home/lyh/Codes/robot_ws/src/pilz_robots/prbt_hardware_support/include/prbt_hardware_support/libmodbus_client.h:21:10: fatal error: modbus/modbus.h: No such file or directory
 #include <modbus/modbus.h>
          ^~~~~~~~~~~~~~~~~
compilation terminated.
pilz_robots/prbt_hardware_support/CMakeFiles/pilz_modbus_client_node.dir/build.make:62: recipe for target 'pilz_robots/prbt_hardware_support/CMakeFiles/pilz_modbus_client_node.dir/src/pilz_modbus_client_node.cpp.o' failed
make[2]: *** [pilz_robots/prbt_hardware_support/CMakeFiles/pilz_modbus_client_node.dir/src/pilz_modbus_client_node.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
[ 98%] Built target iiwa_ros_test
In file included from /home/lyh/Codes/robot_ws/src/pilz_robots/prbt_hardware_support/src/libmodbus_client.cpp:25:0:
/home/lyh/Codes/robot_ws/src/pilz_robots/prbt_hardware_support/include/prbt_hardware_support/libmodbus_client.h:21:10: fatal error: modbus/modbus.h: No such file or directory
 #include <modbus/modbus.h>
          ^~~~~~~~~~~~~~~~~
compilation terminated.
pilz_robots/prbt_hardware_support/CMakeFiles/pilz_modbus_client_node.dir/build.make:110: recipe for target 'pilz_robots/prbt_hardware_support/CMakeFiles/pilz_modbus_client_node.dir/src/libmodbus_client.cpp.o' failed
make[2]: *** [pilz_robots/prbt_hardware_support/CMakeFiles/pilz_modbus_client_node.dir/src/libmodbus_client.cpp.o] Error 1
CMakeFiles/Makefile2:19746: recipe for target 'pilz_robots/prbt_hardware_support/CMakeFiles/pilz_modbus_client_node.dir/all' failed
make[1]: *** [pilz_robots/prbt_hardware_support/CMakeFiles/pilz_modbus_client_node.dir/all] Error 2
[ 98%] Linking CXX shared library /home/lyh/Codes/robot_ws/devel/lib/libiiwa_hw.so
[ 98%] Built target iiwa_hw
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j8 -l8" failed

Reference to test

martiniil commented 3 years ago
  1. Please clone https://github.com/PilzDE/pilz_common into your workspace. We moved some packages to this repository. However this change is not mapped to the apt-packages yet. You can skip this step once ros-melodic-pilz-msgs is at version 0.6.0

  2. You are probably missing further dependencies. Rather than installing them by hand, consider using rosdep (http://wiki.ros.org/rosdep).

lyh458 commented 3 years ago
  1. Please clone https://github.com/PilzDE/pilz_common into your workspace. We moved some packages to this repository. However this change is not mapped to the apt-packages yet. You can skip this step once ros-melodic-pilz-msgs is at version 0.6.0
  2. You are probably missing further dependencies. Rather than installing them by hand, consider using rosdep (http://wiki.ros.org/rosdep).

Thanks your reply. I have solved the problem of missing OperationModes.h, GetOperationMode.h with your suggestion 1, but it still miss modbus.h . I tried to install the relative repo libmodbus in your repo list, another issue happened. Here is the log:

/mnt/WinDisk/Users/liyih/OneDrive - mail2.gdut.edu.cn/Ph.D/Codes/robot_ws/src/pilz_robots/prbt_hardware_support/src/libmodbus_client.cpp: In member function ‘virtual void prbt_hardware_support::LibModbusClient::setResponseTimeoutInMs(long unsigned int)’:
/mnt/WinDisk/Users/liyih/OneDrive - mail2.gdut.edu.cn/Ph.D/Codes/robot_ws/src/pilz_robots/prbt_hardware_support/src/libmodbus_client.cpp:74:51: error: invalid conversion from ‘timeval*’ to ‘uint32_t {aka unsigned int}’ [-fpermissive]
   modbus_set_response_timeout(modbus_connection_, &response_timeout);
                                                   ^~~~~~~~~~~~~~~~~
/mnt/WinDisk/Users/liyih/OneDrive - mail2.gdut.edu.cn/Ph.D/Codes/robot_ws/src/pilz_robots/prbt_hardware_support/src/libmodbus_client.cpp:74:68: error: too few arguments to function ‘int modbus_set_response_timeout(modbus_t*, uint32_t, uint32_t)’
   modbus_set_response_timeout(modbus_connection_, &response_timeout);
                                                                    ^
In file included from /mnt/WinDisk/Users/liyih/OneDrive - mail2.gdut.edu.cn/Ph.D/Codes/robot_ws/src/pilz_robots/prbt_hardware_support/include/prbt_hardware_support/libmodbus_client.h:21:0,
                 from /mnt/WinDisk/Users/liyih/OneDrive - mail2.gdut.edu.cn/Ph.D/Codes/robot_ws/src/pilz_robots/prbt_hardware_support/src/libmodbus_client.cpp:25:
/usr/local/include/modbus/modbus.h:186:16: note: declared here
 MODBUS_API int modbus_set_response_timeout(modbus_t *ctx, uint32_t to_sec, uint32_t to_usec);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/mnt/WinDisk/Users/liyih/OneDrive - mail2.gdut.edu.cn/Ph.D/Codes/robot_ws/src/pilz_robots/prbt_hardware_support/src/libmodbus_client.cpp: In member function ‘virtual long unsigned int prbt_hardware_support::LibModbusClient::getResponseTimeoutInMs()’:
/mnt/WinDisk/Users/liyih/OneDrive - mail2.gdut.edu.cn/Ph.D/Codes/robot_ws/src/pilz_robots/prbt_hardware_support/src/libmodbus_client.cpp:80:68: error: cannot convert ‘timeval*’ to ‘uint32_t* {aka unsigned int*}’ for argument ‘2’ to ‘int modbus_get_response_timeout(modbus_t*, uint32_t*, uint32_t*)’
   modbus_get_response_timeout(modbus_connection_, &response_timeout);
                                                                    ^
pilz_robots/prbt_hardware_support/CMakeFiles/pilz_modbus_client_node.dir/build.make:110: recipe for target 'pilz_robots/prbt_hardware_support/CMakeFiles/pilz_modbus_client_node.dir/src/libmodbus_client.cpp.o' failed
make[2]: *** [pilz_robots/prbt_hardware_support/CMakeFiles/pilz_modbus_client_node.dir/src/libmodbus_client.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....

BTW, I have also update the dependencies with the command rosdep install --from-paths src --ignore-src -r -y.

lyh458 commented 3 years ago
  1. Please clone https://github.com/PilzDE/pilz_common into your workspace. We moved some packages to this repository. However this change is not mapped to the apt-packages yet. You can skip this step once ros-melodic-pilz-msgs is at version 0.6.0
  2. You are probably missing further dependencies. Rather than installing them by hand, consider using rosdep (http://wiki.ros.org/rosdep).

Thanks your reply. I have solved the problem of missing OperationModes.h, GetOperationMode.h with your suggestion 1, but it still miss modbus.h . I tried to install the relative repo libmodbus in your repo list, another issue happened. Here is the log:

/mnt/WinDisk/Users/liyih/OneDrive - mail2.gdut.edu.cn/Ph.D/Codes/robot_ws/src/pilz_robots/prbt_hardware_support/src/libmodbus_client.cpp: In member function ‘virtual void prbt_hardware_support::LibModbusClient::setResponseTimeoutInMs(long unsigned int)’:
/mnt/WinDisk/Users/liyih/OneDrive - mail2.gdut.edu.cn/Ph.D/Codes/robot_ws/src/pilz_robots/prbt_hardware_support/src/libmodbus_client.cpp:74:51: error: invalid conversion from ‘timeval*’ to ‘uint32_t {aka unsigned int}’ [-fpermissive]
   modbus_set_response_timeout(modbus_connection_, &response_timeout);
                                                   ^~~~~~~~~~~~~~~~~
/mnt/WinDisk/Users/liyih/OneDrive - mail2.gdut.edu.cn/Ph.D/Codes/robot_ws/src/pilz_robots/prbt_hardware_support/src/libmodbus_client.cpp:74:68: error: too few arguments to function ‘int modbus_set_response_timeout(modbus_t*, uint32_t, uint32_t)’
   modbus_set_response_timeout(modbus_connection_, &response_timeout);
                                                                    ^
In file included from /mnt/WinDisk/Users/liyih/OneDrive - mail2.gdut.edu.cn/Ph.D/Codes/robot_ws/src/pilz_robots/prbt_hardware_support/include/prbt_hardware_support/libmodbus_client.h:21:0,
                 from /mnt/WinDisk/Users/liyih/OneDrive - mail2.gdut.edu.cn/Ph.D/Codes/robot_ws/src/pilz_robots/prbt_hardware_support/src/libmodbus_client.cpp:25:
/usr/local/include/modbus/modbus.h:186:16: note: declared here
 MODBUS_API int modbus_set_response_timeout(modbus_t *ctx, uint32_t to_sec, uint32_t to_usec);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/mnt/WinDisk/Users/liyih/OneDrive - mail2.gdut.edu.cn/Ph.D/Codes/robot_ws/src/pilz_robots/prbt_hardware_support/src/libmodbus_client.cpp: In member function ‘virtual long unsigned int prbt_hardware_support::LibModbusClient::getResponseTimeoutInMs()’:
/mnt/WinDisk/Users/liyih/OneDrive - mail2.gdut.edu.cn/Ph.D/Codes/robot_ws/src/pilz_robots/prbt_hardware_support/src/libmodbus_client.cpp:80:68: error: cannot convert ‘timeval*’ to ‘uint32_t* {aka unsigned int*}’ for argument ‘2’ to ‘int modbus_get_response_timeout(modbus_t*, uint32_t*, uint32_t*)’
   modbus_get_response_timeout(modbus_connection_, &response_timeout);
                                                                    ^
pilz_robots/prbt_hardware_support/CMakeFiles/pilz_modbus_client_node.dir/build.make:110: recipe for target 'pilz_robots/prbt_hardware_support/CMakeFiles/pilz_modbus_client_node.dir/src/libmodbus_client.cpp.o' failed
make[2]: *** [pilz_robots/prbt_hardware_support/CMakeFiles/pilz_modbus_client_node.dir/src/libmodbus_client.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....

BTW, I have also update the dependencies with the command rosdep install --from-paths src --ignore-src -r -y. I think this issue is similar to the closed issue #56, #143.

martiniil commented 3 years ago

What is your operating system? The problem could be that you have an unsupported version of libmodbus. Currently we have libmodbus version 3.0.6-2 on Ubuntu 18.04.

lyh458 commented 3 years ago

What is your operating system? The problem could be that you have an unsupported version of libmodbus. Currently we have libmodbus version 3.0.6-2 on Ubuntu 18.04.

Yes, the same as yours.

martiniil commented 3 years ago

What is your operating system? The problem could be that you have an unsupported version of libmodbus. Currently we have libmodbus version 3.0.6-2 on Ubuntu 18.04.

Yes, the same as yours.

I have both libmodbus5:amd64 and libmodbus-dev at version 3.0.6-2. Can you check that?

lyh458 commented 3 years ago

What is your operating system? The problem could be that you have an unsupported version of libmodbus. Currently we have libmodbus version 3.0.6-2 on Ubuntu 18.04.

Yes, the same as yours.

I have both libmodbus5:amd64 and libmodbus-dev at version 3.0.6-2. Can you check that?

Same too. libmodbus version

martiniil commented 3 years ago

But this error

/libmodbus_client.cpp:74:68: error: too few arguments to function ‘int modbus_set_response_timeout(modbus_t*, uint32_t, uint32_t)

indicates that you have a higher version. Maybe you got your installations mixed up. Try to remove all libmodbus installations, run the rosdep command again and clean your workspace. Then it should hopefully work.

lyh458 commented 3 years ago

But this error

/libmodbus_client.cpp:74:68: error: too few arguments to function ‘int modbus_set_response_timeout(modbus_t*, uint32_t, uint32_t)

indicates that you have a higher version. Maybe you got your installations mixed up. Try to remove all libmodbus installations, run the rosdep command again and clean your workspace. Then it should hopefully work.

Problem solved. I uninstalled all libmodbus and installed again, then catkin_make, it worked! Thanks!