ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Build kuka_experimental package on Windows 10 ROS1 noetic

asked 2020-10-17 02:39:38 -0500

matthias88 gravatar image

updated 2020-10-17 04:56:19 -0500

gvdhoorn gravatar image

I'm new to ROS and i am trying to build kuka_experimental package on Windows 10 ROS Noetic. I managed to install the dependencies with branch, but catkin_make throws following error, if i try to build kuka_experimental package:

C:\catkin_ws>rosdep install --from-paths src --ignore-src

# All required rosdeps installed successfully

Base path: C:\catkin_ws
Source space: C:\catkin_ws\src
Build space: C:\catkin_ws\build
Devel space: C:\catkin_ws\devel
Install space: C:\catkin_ws\install
#### Running command: "nmake cmake_check_build_system" in "C:\catkin_ws\build"

Microsoft (R) Program Maintenance Utility, Version 14.27.29112.0
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.

#### Running command: "nmake" in "C:\catkin_ws\build"

Microsoft (R) Program Maintenance Utility, Version 14.27.29112.0
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.

[  0%] Built target Project__setup_util.py_exec_install_python
[  0%] Built target _industrial_msgs_generate_messages_check_deps_RobotMode
[  0%] Built target _industrial_msgs_generate_messages_check_deps_TriState
[  0%] Built target trajectory_msgs_generate_messages_eus
[  0%] Built target std_msgs_generate_messages_eus
[  0%] Built target _industrial_msgs_generate_messages_check_deps_SetRemoteLoggerLevel
[  0%] Built target _industrial_msgs_generate_messages_check_deps_DeviceInfo
[  0%] Built target _industrial_msgs_generate_messages_check_deps_SetDrivePower
[  0%] Built target _industrial_msgs_generate_messages_check_deps_StartMotion
[  0%] Built target _industrial_msgs_generate_messages_check_deps_RobotStatus
[  0%] Built target _industrial_msgs_generate_messages_check_deps_CmdJointTrajectory
[  0%] Built target _industrial_msgs_generate_messages_check_deps_DebugLevel
[  0%] Built target _industrial_msgs_generate_messages_check_deps_GetRobotInfo
[  0%] Built target _industrial_msgs_generate_messages_check_deps_StopMotion
[  0%] Built target _industrial_msgs_generate_messages_check_deps_ServiceReturnCode
[  6%] Built target industrial_msgs_generate_messages_eus
[  6%] Built target std_msgs_generate_messages_lisp
[  6%] Built target trajectory_msgs_generate_messages_lisp
[ 11%] Built target industrial_msgs_generate_messages_lisp
[ 11%] Built target std_msgs_generate_messages_nodejs
[ 11%] Built target trajectory_msgs_generate_messages_nodejs
[ 18%] Built target industrial_msgs_generate_messages_nodejs
[ 18%] Built target trajectory_msgs_generate_messages_cpp
[ 18%] Built target std_msgs_generate_messages_cpp
[ 25%] Built target industrial_msgs_generate_messages_cpp
[ 25%] Built target std_msgs_generate_messages_py
[ 25%] Built target trajectory_msgs_generate_messages_py
[ 31%] Built target industrial_msgs_generate_messages_py
[ 31%] Built target industrial_msgs_generate_messages
[ 32%] Built target industrial_robot_simulator_industrial_robot_simulator_exec_install_python
[ 33%] Built target industrial_robot_simulator_industrial_robot_simulator_exec_cip_devel_python
[ 35%] Built target industrial_trajectory_filters
[ 36%] Built target industrial_utils
[ 36%] Building CXX object kuka_experimental/kuka_eki_hw_interface/CMakeFiles/kuka_eki_hw_interface.dir/src/kuka_eki_hw_interface.cpp.obj
cl : Befehlszeile warning D9002 : Unbekannte Option "-std=c++11" wird ignoriert.
C:\opt\ros\noetic\x64\include\boost/bind.hpp(41): note: The practice of declaring the Bind placeholders (_1, _2, ...) in the global namespace is deprecated. Please use <boost/bind/bind.hpp> + using namespace boost::placeholders, or define BOOST_BIND_GLOBAL_PLACEHOLDERS to retain the current behavior.
Please define _WIN32_WINNT or _WIN32_WINDOWS appropriately. For example:
- add -D_WIN32_WINNT=0x0601 to the compiler command line; or
- add _WIN32_WINNT=0x0601 to your project's Preprocessor Definitions.
Assuming _WIN32_WINNT=0x0601 (i.e. Windows 7 target).
C:\opt\ros\noetic\x64\include\controller_manager/controller_spec.h(33): warning C4068: Unbekanntes Pragma "GCC".
C:\opt\ros\noetic\x64\include\hardware_interface/robot_hw.h(142): error C2143: Syntaxfehler: Es fehlt "}" vor "Konstante"
C:\opt\ros\noetic\x64\include\hardware_interface/robot_hw.h(142): error C2059: Syntaxfehler: "Konstante"
C:\opt\ros\noetic\x64\include\hardware_interface/robot_hw.h(143): error C2143: Syntaxfehler: Es fehlt ";" vor "}"
C:\opt\ros\noetic\x64\include\hardware_interface/robot_hw.h(143): error C2238: Unerwartete(s) Token vor ";"
C:\opt\ros\noetic\x64\include\hardware_interface/robot_hw.h(146): error C2433: "SwitchState": "virtual" bei der Deklaration von Daten nicht zulässig
C:\opt\ros\noetic\x64\include\hardware_interface/robot_hw.h(146): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
C:\opt\ros\noetic\x64\include\hardware_interface/robot_hw.h(146): error ...
edit retag flag offensive close merge delete


I'm not really surprised this doesn't build on Windows. These packages were not developed with Windows in mind, so you'll likely run into Linux-isms (or GCC-isms).

Two comments:

  1. it would be good to post build output in English
  2. if you could clarify what exactly you are intending to do after you've built the packages (ie: which packages do you intend to use), perhaps we can provide a work-around

Fixing Windows build-errors is not on the roadmap right now, so unless there are community contributors who are willing to do that, these errors will most likely not be resolved.

gvdhoorn gravatar image gvdhoorn  ( 2020-10-17 04:58:55 -0500 )edit

I managed to install the dependencies with branch

This does not seem to be needed: all that's used from industrial_core is an RViz configuration file (here fi in the KR16 .launch file).

gvdhoorn gravatar image gvdhoorn  ( 2020-10-17 05:00:50 -0500 )edit

Thanks for your prompt answer and hints. I would like to use the kuka_eki_hw_interface to send a planned path (MoveIt) to KUKA controllers (KRC 4 and KRC5). Up to now we didn't use ROS and wrote our own C# application for these purposes, but ROS has developed great over the last years, so that I would like to give it at try with the intention to contribute to the kuka_experimental package in future. Unfortunately our requirement is to run it under Windows due to 3rd party dependencies / developed interfaces to PLC and so on. We have the hardware to test, but I am (currently) not that experienced in ROS to port the packages to Windows.

matthias88 gravatar image matthias88  ( 2020-10-17 08:28:39 -0500 )edit

1 Answer

Sort by » oldest newest most voted

answered 2020-10-17 08:34:57 -0500

gvdhoorn gravatar image

The EKI hw interface depends on ros_control. I'm not sure whether that already supports Windows. It might be as simple as compiler flags not being correctly set for Windows use (in kuka_experimental packages), but I don't know.

Perhaps @OoeyGUI can say something about ros_control on Windows in general.

If he doesn't see this notification, perhaps an issue on their issue tracker could help.

General comment: we typically use this driver on systems with either real-time kernels or with suitably high priorities. That's on Linux systems. You'll have to make sure not to treat this as "just another node", as otherwise I would expect things to not work smoothly.

edit flag offensive delete link more


Unfortunately our requirement is to run it under Windows due to 3rd party dependencies / developed interfaces to PLC and so on

ROS is distributed by nature. Why not run the driver on a small Linux system, and keep the rest of your application on Windows?

Perhaps WSL might already be good enough. EKI isn't too demanding (but no guarantees).

gvdhoorn gravatar image gvdhoorn  ( 2020-10-17 08:35:41 -0500 )edit

It could be you only need to fix this line: -std=c++11 is for GCC.

gvdhoorn gravatar image gvdhoorn  ( 2020-10-17 08:37:10 -0500 )edit

@gvdhoorn Thanks for looping me into this thread. I created a task for this on github: I'll follow up with ROSi a Gijs offline.

OoeyGUI gravatar image OoeyGUI  ( 2020-10-17 13:58:37 -0500 )edit

Thanks for creating a task for this and the hint for WSL(2) - I am going to test it. Unfortunately to fix the line of code wasn't sufficient enough to resolve the errors

matthias88 gravatar image matthias88  ( 2020-10-17 15:25:51 -0500 )edit

Just a short update: with WSL2 it works like a charm :-)

matthias88 gravatar image matthias88  ( 2020-10-30 15:16:15 -0500 )edit

Good to hear.

I also understand @OoeyGUI is close to having a working setup under Windows natively, so that would be interesting to test as well.

gvdhoorn gravatar image gvdhoorn  ( 2020-10-31 09:38:34 -0500 )edit

As soon as it is available, we will test it under Windows. What do you think about the effort to port the kuka_eki_hw_interface directly to ROS2? Our intention is to use ROS2 directly from the beginning, so that we are future proof. As I mentioned before we have to consider various 3rd party dependencies and at the moment we are verifying possible interfaces (.NET rosbridge client, cls etc.)

matthias88 gravatar image matthias88  ( 2020-10-31 10:27:55 -0500 )edit

ros_control works on Windows, as does MoveIt. I've created a staging fork: There are also some dependencies which need to be updated, including realtime_tools.

I'm happy to hear that WSL2 works. Have you had any problems with extended usage?

OoeyGUI gravatar image OoeyGUI  ( 2020-11-01 19:10:09 -0500 )edit

Question Tools

1 follower


Asked: 2020-10-17 02:39:38 -0500

Seen: 268 times

Last updated: Oct 17 '20