ros-industrial / staubli_val3_driver

ROS-Industrial (simple message) driver for Stäubli CS8 and CS9 robot controllers (VAL 3 application)
Apache License 2.0
26 stars 21 forks source link

Building-issue with simple_message trying to integrate IO control #41

Closed IvoD1998 closed 3 years ago

IvoD1998 commented 3 years ago

Hi

We are trying to integrate IO control for the CS9 controller in the driver using the FAU-FAPS driver as inspiration (https://github.com/FAU-FAPS/staubli_val3_driver/tree/faps-devel). When we try to build our workspace, we run into the following issue:

Errors     << staubli_val3_driver:make /home/ivo/staubli_pfizer_ws/logs/staubli_val3_driver/build.make.002.log                                                                                            
In file included from /home/ivo/staubli_pfizer_ws/src/staubli_val3_driver_adapted/staubli_val3_driver/include/io_interface.h:23,
                 from /home/ivo/staubli_pfizer_ws/src/staubli_val3_driver_adapted/staubli_val3_driver/src/io_interface.cpp:17:
/home/ivo/staubli_pfizer_ws/src/industrial_core/simple_message/include/simple_message/socket/simple_socket.h:205:3: error: ‘sockaddr_in’ does not name a type
  205 |   sockaddr_in sockaddr_;
      |   ^~~~~~~~~~~
/home/ivo/staubli_pfizer_ws/src/industrial_core/simple_message/include/simple_message/socket/simple_socket.h: In constructor ‘industrial::simple_socket::SimpleSocket::SimpleSocket()’:
/home/ivo/staubli_pfizer_ws/src/industrial_core/simple_message/include/simple_message/socket/simple_socket.h:159:19: error: ‘class industrial::simple_socket::SimpleSocket’ has no member named ‘sockaddr_’
  159 |     memset(&this->sockaddr_, 0, sizeof(this->sockaddr_));
      |                   ^~~~~~~~~
/home/ivo/staubli_pfizer_ws/src/industrial_core/simple_message/include/simple_message/socket/simple_socket.h:159:46: error: ‘class industrial::simple_socket::SimpleSocket’ has no member named ‘sockaddr_’
  159 |     memset(&this->sockaddr_, 0, sizeof(this->sockaddr_));
      |                                              ^~~~~~~~~
/home/ivo/staubli_pfizer_ws/src/industrial_core/simple_message/include/simple_message/socket/simple_socket.h: In member function ‘void industrial::simple_socket::SimpleSocket::logSocketError(const char*, int)’:
/home/ivo/staubli_pfizer_ws/src/industrial_core/simple_message/include/simple_message/socket/simple_socket.h:256:29: error: ‘errno’ was not declared in this scope
  256 |     logSocketError(msg, rc, errno);
      |                             ^~~~~
In file included from /home/ivo/staubli_pfizer_ws/src/staubli_val3_driver_adapted/staubli_val3_driver/include/io_interface.h:23,
                 from /home/ivo/staubli_pfizer_ws/src/staubli_val3_driver_adapted/staubli_val3_driver/src/io_interface.cpp:17:
/home/ivo/staubli_pfizer_ws/src/industrial_core/simple_message/include/simple_message/socket/simple_socket.h:37:1: note: ‘errno’ is defined in header ‘<cerrno>’; did you forget to ‘#include <cerrno>’?
   36 | #include "simple_message/log_wrapper.h"
  +++ |+#include <cerrno>
   37 | #include "simple_message/shared_types.h"
In file included from /home/ivo/staubli_pfizer_ws/src/staubli_val3_driver_adapted/staubli_val3_driver/include/io_interface.h:23,
                 from /home/ivo/staubli_pfizer_ws/src/staubli_val3_driver_adapted/staubli_val3_driver/src/io_interface_node.cpp:17:
/home/ivo/staubli_pfizer_ws/src/industrial_core/simple_message/include/simple_message/socket/simple_socket.h:205:3: error: ‘sockaddr_in’ does not name a type
  205 |   sockaddr_in sockaddr_;
      |   ^~~~~~~~~~~
/home/ivo/staubli_pfizer_ws/src/industrial_core/simple_message/include/simple_message/socket/simple_socket.h: In constructor ‘industrial::simple_socket::SimpleSocket::SimpleSocket()’:
/home/ivo/staubli_pfizer_ws/src/industrial_core/simple_message/include/simple_message/socket/simple_socket.h:159:19: error: ‘class industrial::simple_socket::SimpleSocket’ has no member named ‘sockaddr_’
  159 |     memset(&this->sockaddr_, 0, sizeof(this->sockaddr_));
      |                   ^~~~~~~~~
/home/ivo/staubli_pfizer_ws/src/industrial_core/simple_message/include/simple_message/socket/simple_socket.h:159:46: error: ‘class industrial::simple_socket::SimpleSocket’ has no member named ‘sockaddr_’
  159 |     memset(&this->sockaddr_, 0, sizeof(this->sockaddr_));
      |                                              ^~~~~~~~~
/home/ivo/staubli_pfizer_ws/src/industrial_core/simple_message/include/simple_message/socket/simple_socket.h: In member function ‘void industrial::simple_socket::SimpleSocket::logSocketError(const char*, int)’:
/home/ivo/staubli_pfizer_ws/src/industrial_core/simple_message/include/simple_message/socket/simple_socket.h:256:29: error: ‘errno’ was not declared in this scope
  256 |     logSocketError(msg, rc, errno);
      |                             ^~~~~
In file included from /home/ivo/staubli_pfizer_ws/src/staubli_val3_driver_adapted/staubli_val3_driver/include/io_interface.h:23,
                 from /home/ivo/staubli_pfizer_ws/src/staubli_val3_driver_adapted/staubli_val3_driver/src/io_interface_node.cpp:17:
/home/ivo/staubli_pfizer_ws/src/industrial_core/simple_message/include/simple_message/socket/simple_socket.h:37:1: note: ‘errno’ is defined in header ‘<cerrno>’; did you forget to ‘#include <cerrno>’?
   36 | #include "simple_message/log_wrapper.h"
  +++ |+#include <cerrno>
   37 | #include "simple_message/shared_types.h"
make[2]: *** [CMakeFiles/staubli_io_interface.dir/build.make:63: CMakeFiles/staubli_io_interface.dir/src/io_interface_node.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [CMakeFiles/staubli_io_interface.dir/build.make:76: CMakeFiles/staubli_io_interface.dir/src/io_interface.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:529: CMakeFiles/staubli_io_interface.dir/all] Error 2
make: *** [Makefile:141: all] Error 2

On its own, the simple_message package does build without any issues, so we suspect it to be a CMake issue, but are uncertain on how to fix it. Does anybody know a solution?

Thank you in advance! Kind regards

gavanderhoorn commented 3 years ago

First: please do not post screenshots of terminals. It's all text, so just copy-paste the text into a markdown code block.

As to your problem, see https://github.com/ros-industrial/abb_driver/pull/12 for a fix in another simple_message/industrial_robot_client based driver.