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

Georg Bartels's profile - activity

2022-05-23 12:25:59 -0500 commented answer ros2 topic empty with fastdds discovery server

I encounter the same behavior as described in the original question in May 2022 on ROS2 Galactic. Has this issue been fi

2022-02-02 03:04:44 -0500 commented question audio_common for ROS2

I have the same question and am not sure whether the project linked in the accepted answer actually addresses this. Henc

2022-02-02 03:00:55 -0500 commented answer audio_common for ROS2

Hi BrettRD, thanks for starting and sharing such an ambitious project! My use-case is closer to the original audio_commo

2021-04-07 17:49:36 -0500 received badge  Necromancer (source)
2021-02-04 15:31:17 -0500 received badge  Famous Question (source)
2020-07-25 13:01:15 -0500 marked best answer How to include external automake/autoconf projects into ament_cmake?

Hi guys,

I'm porting a package from ROS1 to ROS2 that builds and exposes a 3rd-party project to the ROS world. That external library uses automake and autoconf, and I do not want to change that to stay compatible with upstream provider of the lib. In the past, I used the cmake macro ExternalProject_Add to do this. Now, I am having trouble porting this functionality to ament_cmake.

My initial questions are: 1) What is the preferred way to build, install, and export 3rd-party non-cmake source projects for ament_cmake? 2) Has anybody successfully compiled, installed, and exported such an library using ExternalProject_Add?

I will refine my questions, once the issue has become clearer. ;)

For reference, this is the catkin CMakeLists that I want to port to ROS2: CMakeLists

2020-07-25 12:59:30 -0500 edited answer How to include external automake/autoconf projects into ament_cmake?

After some months, I am revisiting this question, and I found a solution. For completeness sake, I post my solution here

2020-07-25 12:59:01 -0500 answered a question How to include external automake/autoconf projects into ament_cmake?

After some months, I am revisiting this question, and I found a solution to my question from last September. For complet

2020-04-21 21:21:47 -0500 received badge  Nice Answer (source)
2020-01-06 01:18:13 -0500 received badge  Famous Question (source)
2020-01-06 01:18:13 -0500 received badge  Notable Question (source)
2020-01-06 01:18:13 -0500 received badge  Popular Question (source)
2019-09-20 01:46:13 -0500 marked best answer pre-release tests on buildfarm

Hi all,

I just went over the tutorials for pre-release tests on the website:

http://wiki.ros.org/bloom/Tutorials/PrereleaseTest

It refers to the possibility of running pre-release tests on the buildfarm, i.e. non-locally. However, the link pointing to the buildfarm's pre-release page is broken:

"Then go to buildfarm's pre-release web site: wiki.ros.org/prerelease.ros.org "

Is this feature deprecated? If yes, oh no! Is this feature not available, yet? If yes, I can't wait. If the feature is around, where can I find the page of the buildfarm's pre-release site? A quick google search did not help me... Thanks already.

Cheers, Georg.

2019-09-20 01:44:20 -0500 commented question How do I set up a ROS repository for coveralls.io?

It's been a long time, and this question went without much activity. By now, a lot of people use coveralls, and there ar

2019-09-17 05:42:08 -0500 commented answer ros2 roscd feature

That would be great! I'll make sure to watch that issue. :)

2019-09-17 05:40:13 -0500 commented question How to include external automake/autoconf projects into ament_cmake?

@gvdhoorn Thank you for the fast response and the link to yamlccp. That looks great! I will provide a more detailed desc

2019-09-16 08:04:10 -0500 commented answer ros2 roscd feature

Thank you for the answer! From the accepted answer it was not 100% clear to me whether this verb was in the development

2019-09-16 07:55:41 -0500 asked a question How to include external automake/autoconf projects into ament_cmake?

How to include external automake/autoconf projects into ament_cmake? Hi guys, I'm porting a package from ROS1 to ROS2 t

2019-09-05 02:49:07 -0500 commented answer ros2 roscd feature

Any news on this feature? I couldn't find it as a verb of the ros2 command.

2019-06-14 03:52:56 -0500 received badge  Enthusiast
2019-06-13 02:31:35 -0500 received badge  Notable Question (source)
2019-06-13 02:30:49 -0500 received badge  Famous Question (source)
2019-06-13 02:28:54 -0500 commented question Tf_echo missing timestamp

To help you, could you please provide a bit more information such that the problem can be reproduced? 1) Which ROS ver

2018-12-06 13:28:07 -0500 answered a question Java Exception in roslaunch json_prolog project

I encountered the same problem. This seems to be a known and fixed bug. It seems to come from a Java API changes between

2018-11-07 06:29:26 -0500 received badge  Notable Question (source)
2018-09-13 01:10:07 -0500 answered a question Collision detection in Python

There are python bindings for the Bullet Physics engine, called PyBullet. PyBullet comes with various collision checking

2018-07-12 02:03:47 -0500 commented answer how to visualize pcd file.??

Indeed, Felix' comment was very helpful. I was also looking for the name of that package. Thanks!

2018-07-04 09:08:15 -0500 received badge  Popular Question (source)
2017-07-05 19:15:19 -0500 received badge  Popular Question (source)
2017-06-13 01:39:53 -0500 asked a question Does the robot_state_publisher support sensor_msgs/MultiDOFJointState messages?

Does the robot_state_publisher support sensor_msgs/MultiDOFJointState messages? Hi, I found the message definition sens

2016-09-23 07:06:34 -0500 asked a question How do I set up a ROS repository for coveralls.io?

I have a github repository with a catkin package inside which only holds C++ code. I have already set it up for travis-ci, and now want to further configure it for coveralls.io to analyse the coverage of my tests. How do I do that?

I have already read through coverall.io's examples here, and tried to find other ROS repos which use Coveralls.io. Unfortunately, none of those approaches helped me.

Any help is welcome!

P.S.: I use ROS Indigo, Ubuntu 14.04.

2016-07-04 07:58:06 -0500 received badge  Self-Learner (source)
2016-07-04 07:54:35 -0500 received badge  Famous Question (source)
2016-06-08 06:22:27 -0500 received badge  Notable Question (source)
2016-05-03 09:54:59 -0500 received badge  Popular Question (source)
2016-05-03 06:49:17 -0500 answered a question How let other catkin packages depend on a library built with ExternalProject_Add(...)?

gvdhoorn's answer pointed me into the right direction. I provide my own solution for documentation.

Here is the CMakeLists of igh_eml which checks out and builds the external mercurial repository:

cmake_minimum_required(VERSION 2.8.3)
project(igh_eml)

find_package(catkin REQUIRED)

include(ExternalProject)
ExternalProject_Add(upstream_igh_eml
  HG_REPOSITORY http://hg.code.sf.net/p/etherlabmaster/code
  HG_TAG 792892ab4806
  TIMEOUT 30
  UPDATE_COMMAND touch <SOURCE_DIR>/config.h COMMAND mkdir -p <SOURCE_DIR>/include <SOURCE_DIR>/lib
  CONFIGURE_COMMAND touch <SOURCE_DIR>/ChangeLog COMMAND autoreconf -i <SOURCE_DIR> COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR> --disable-kernel --enable-hrtimer --enable-tool
  BUILD_IN_SOURCE 1
  INSTALL_DIR ${CATKIN_DEVEL_PREFIX}
)

add_library(ethercat SHARED IMPORTED)
set_target_properties(ethercat PROPERTIES IMPORTED_LOCATION ${CATKIN_DEVEL_PREFIX}/lib/libethercat.so)
add_dependencies(ethercat upstream_igh_eml)

catkin_package(
    LIBRARIES ethercat
)

Important notes: (1) catkin_package has to be called AFTER the build and import calls. (2) Exporting the include files at ${CATKIN_DEVEL_PREFIX}/include with catkin_package was not possible, that directory does not exist when catkin_package is interpreted.

The depending package omnidrive_ethercat has the following CMakeLIsts:

cmake_minimum_required(VERSION 2.8.3)
project(omni_ethercat)

find_package(catkin REQUIRED COMPONENTS ... igh_eml ...)

catkin_package(
  CATKIN_DEPENDS ... igh_eml ...)

include_directories(include ${catkin_INCLUDE_DIRS})

add_executable(omni_ethercat src/omni_ethercat.cpp src/omnilib/omnilib.c src/omnilib/realtime.c)
target_link_libraries(omni_ethercat ${catkin_LIBRARIES})
add_dependencies(omni_ethercat upstream_igh_eml)

Important note: I have to directly depend on the build target upstream_igh_eml to halt compilation until all the h-files and so-files in igh_eml have been downloaded and built. The target ethercat was not enough. Also, I did not find out how to export this target through a CMake variable.

So, this a working solution, but there is room for improvement...

2016-05-03 06:37:38 -0500 commented answer How let other catkin packages depend on a library built with ExternalProject_Add(...)?

Thank you for your answer! It pointed me into the right direction.

2016-05-03 06:37:38 -0500 received badge  Commentator
2016-05-02 07:57:30 -0500 asked a question How let other catkin packages depend on a library built with ExternalProject_Add(...)?

Hi,

I encountered difficulties wrapping an external driver into a catkin package such that other catkin packages can depend on it. The driver is provided by a company as open-source, it builds without cmake, and it is distributed through a public mercurial repository.

To conveniently pull in upstream updates, I wanted to have the build process checkout and build a specific commit. I know this is discouraged behavior for releasing ROS packages through the build-farm. But for the moment I do not intend to release the package through the build-farm.

I tried using the CMake command ExternalProject_Add because of the following question: http://answers.ros.org/question/63259...

Building the driver library works fine, but any depending catkin package is not aware of the build target for the library. Does anybody know how to properly expose the library and the build target itself to other catkin packages?

Here are the details. In my package igh_eml I successfully build a library called ethercat. igh_eml's CMakeLists.txt looks like this:

project(igh_eml)

find_package(catkin REQUIRED)

catkin_package(
  INCLUDE_DIRS ${CATKIN_DEVEL_PREFIX}/include
  LIBRARIES ethercat)

include(ExternalProject)
ExternalProject_Add(upstream_igh_eml
# #--Download step----------
  HG_REPOSITORY http://hg.code.sf.net/p/etherlabmaster/code         # URL of mercurial repo
  HG_TAG 792892ab4806                # Mercurial branch name, commit id or tag
  TIMEOUT 30           # Time allowed for file download operations
  # #--Update/Patch step----------
  UPDATE_COMMAND touch <SOURCE_DIR>/config.h COMMAND mkdir -p <SOURCE_DIR>/include <SOURCE_DIR>/lib    # Source work-tree update command
  # #--Configure step-------------
  CONFIGURE_COMMAND touch <SOURCE_DIR>/ChangeLog COMMAND autoreconf -i <SOURCE_DIR> COMMAND <SOURCE_DIR>/configure --prefix=<INSTALL_DIR> --disable-kernel --enable-hrtimer --enable-tool  # Build tree configuration command
  # #--Build step-----------------
  BUILD_IN_SOURCE 1         # Use source dir for build dir
)

ExternalProject_Get_Property(upstream_igh_eml source_dir)

add_custom_command(TARGET upstream_igh_eml POST_BUILD
    COMMAND cp 
      ${source_dir}/../../include/ecrt.h 
      ${CATKIN_DEVEL_PREFIX}/include/
)

add_custom_command(TARGET upstream_igh_eml POST_BUILD
     COMMAND cp 
     ${source_dir}/../../include/ectty.h
     ${CATKIN_DEVEL_PREFIX}/include
)

add_custom_command(TARGET upstream_igh_eml POST_BUILD
    COMMAND cp 
    ${source_dir}/../../lib/libethercat.so
    ${CATKIN_DEVEL_PREFIX}/lib
 )

Here is a link to the actual file: https://github.com/code-iai/iai_robot...

My second package omnidriver_ethercat depends on igh_eml on gives this error:

CMake Error at /home/georg/ros/indigo/boxy_refactoring/devel/share/igh_eml/cmake/igh_emlConfig.cmake:141 (message):
  Project 'omni_ethercat' tried to find library 'ethercat'.  The library is
  neither a target nor built/installed properly.  Did you compile project
  'igh_eml'? Did you find_package() it before the subdirectory containing its
  code is included?

Here is a link to CMakeLists of omnidrive_ethercat : https://github.com/code-iai/iai_robot...

Does anybody know how I declare that the library ethercat will be build through ExternalProject_Add? Furthermore, how can I make other catkin packages wait for that build target to finish? Thanks in advance for any help!

2016-01-30 04:15:49 -0500 received badge  Taxonomist
2015-10-20 10:04:31 -0500 received badge  Notable Question (source)
2014-10-16 03:30:27 -0500 commented answer dynamic reconfigure with a variable-length list of parameters

Thanks for your suggestion. I also think this is not possible. So, I'm closing this question. :)

2014-10-16 03:29:07 -0500 received badge  Notable Question (source)
2014-10-16 03:29:07 -0500 received badge  Famous Question (source)
2014-09-04 09:35:27 -0500 received badge  Good Answer (source)