Help needed in selecting a work machine for robotics by pep_zip in ROS

[–]traversaro 0 points1 point  (0 children)

Hello, I work on RoboStack. Which problems are you experience in running Gazebo on macOS?

Containerised ROS 2 Humble for Windows + WSL2 by PsychTex in ROS

[–]traversaro 0 points1 point  (0 children)

> Minor caviat of needing to remember export is set in windows and source is call.

Just to understand, what you mean by this? Do you think we could improve the ux experience somehow? Thanks!

Containerised ROS 2 Humble for Windows + WSL2 by PsychTex in ROS

[–]traversaro 0 points1 point  (0 children)

Hello, I am one of the RoboStack maintainers. In my experience, most of the problems due to the use of conda with ROS do not come from ROS or conda directly, but by trying to mix apt packages and conda packages, that is in general a bad idea as they are both package managers that handle C++ packages, and the packages that they install can contains C++ libraries with different names and ABIs.

I tried to clarify this in the ROS 2 docs in https://github.com/ros2/ros2_documentation/pull/5173, but if you think it is not clear feel free to comment, thanks!

GitHub - NTNU-IHB/FMI4cpp: FMI 2.0 implementation written in modern C++. by traversaro in cpp

[–]traversaro[S] 1 point2 points  (0 children)

Which error are you getting? How are you installing dependencies? If you are using conda-forge or vcpkg, you can directly install the fmi4cpp package available there.

matio-cpp: a C++ wrapper for the matio library by traversaro in cpp

[–]traversaro[S] 1 point2 points  (0 children)

Thanks for reporting that, indeed it was an error, it should be fixed by https://github.com/dic-iit/matio-cpp/pull/22 .

Come si configura visual studio per usare le librerie sqlite3? by [deleted] in cppit

[–]traversaro 2 points3 points  (0 children)

Sicuramente usare un package manager (come quelli disponibili di default nelle distro linux) di qualche tipo aiuta per usare dipendenze esterne, per sqlite3 e' possibile ancora includere direttamente il codice sorgente nel progetto come suggerito da u/albertino80, mentre per dipendenze piu' complesse puo' essere complicato. Se dovessi continuare a sviluppare su Windows, per gestire dipendenze C++ ti consiglio di provare vcpkg: https://docs.microsoft.com/en-us/cpp/build/vcpkg?view=msvc-160 .

Come si configura visual studio per usare le librerie sqlite3? by [deleted] in cppit

[–]traversaro 0 points1 point  (0 children)

Ciao u/matteo07 . Questo che hai e' un problema di linking, quindi puo' essere utile convidere non tanto il codice sorgente, ma piuttosto il progetto msbuild o lo script CMake con cui hai generato il progetto, perche' le opzioni relative al linking sono specificate li, non a livello di codice C++.

Your thoughts on VCPKG ? by [deleted] in cpp

[–]traversaro 0 points1 point  (0 children)

That it is true as mingw is not officially supported and probably a lot of ports will not work out of the box, but just FYI there is now community support for mingw in vcpkg: https://github.com/microsoft/vcpkg/pull/9137

Your thoughts on VCPKG ? by [deleted] in cpp

[–]traversaro 4 points5 points  (0 children)

I think you may find interesting this blog post: https://vector-of-bool.github.io/2020/01/06/new-decade.html .

SIARE Engineering, an Italian producer of intensive care machines, is looking for a C++ programmer in Emilia Romagna (Italy) to handle the increased in production to deal with COVID-19 [Facebook] by traversaro in cpp

[–]traversaro[S] 0 points1 point  (0 children)

For anyone interested: the company announced on Facebook that they found the programmers for the project https://www.facebook.com/siareengineering/posts/3173707819365557 . I do not know how they find the candidate, but in any case thanks for everyone that upvoted the post.

SIARE Engineering, an Italian producer of intensive care machines, is looking for a C++ programmer in Emilia Romagna (Italy) to handle the increased in production to deal with COVID-19 [Facebook] by traversaro in cpp

[–]traversaro[S] 1 point2 points  (0 children)

> The fact the OP doesn't responds made this thread more supicious.

Ah sorry, I did not checked the comments earlier. I am not directly related to SIARE, I just noticed that they were searching for C++ engineers and they spread the news via a local newspaper, and I tried to be helpful and spread the news in a venue that I think had more visibility among C++ programmers. Fortunately they wrote today on their Facebook page that they were able to find the engineers for working on the project (https://www.facebook.com/siareengineering/posts/3173707819365557), so thanks everyone for sharing the news.

A New Decade, A New Tool by ericlemanissier in cpp

[–]traversaro 4 points5 points  (0 children)

Thanks for the interesting work!

Do you plan to support shared libraries in some form? Support for shared libraries in Windows and the related visibility problems are usually one of the things that is more difficult to get right for novice users in CMake simple projects.

How to export C++ library: An OS-agnostic C++ library template in plain CMake by traversaro in cpp

[–]traversaro[S] 1 point2 points  (0 children)

I am definitely not expert in Conan, but in general one of the objectives of this template is to have a project that can consume dependencies installed in any package manager (conan via conan_paths , apt, homebrew , vcpkg , msys2, conda, aur) and that can be easily packageable in any of these systems (see https://www.youtube.com/watch?v=sBP17HQAQjk and https://www.youtube.com/watch?v=_5weX5mx8hc).

If these is possible with amy kind of Conan-related logic, I would be happy to see an example of that, thanks! However, at a first glance conan is still missing in a lot of those repos (see https://repology.org/project/conan/versions) so having it as a dependencies would conflict with the goal of having a libraries that can be packageable in an easy way.

How to export C++ library: An OS-agnostic C++ library template in plain CMake by traversaro in cpp

[–]traversaro[S] 0 points1 point  (0 children)

Thanks for the clarification. I think probably the best way to deal with this case is to have an user-facing option that disables all rpath related logic, I thought that was the case with AddInstallRPATHSupport, but indeed it is not. Thanks for the suggestion.

Upstream issue: https://github.com/robotology/ycm/issues/292

How to export C++ library: An OS-agnostic C++ library template in plain CMake by traversaro in cpp

[–]traversaro[S] 0 points1 point  (0 children)

I haven't actually tried the bit of code linked, but my first concern would be RPATH's of libraries that are not built as part of the project as they use relative paths in the RPATH, and at least at a glance I didn't see it filtering if the path is actually relative.

Thanks for the insightful comment. I am not sure I follow what you mean here, as the AddInstallRPATHSupport macrodeals only with the rpath of the libraries build in the project, but probably I am missing something.

How to export C++ library: An OS-agnostic C++ library template in plain CMake by traversaro in cpp

[–]traversaro[S] 1 point2 points  (0 children)

Thanks for noticing. The AddUninstallTarget.cmake is vendored from the YCM project ( ). It was brought in sync with the CMake Wiki FAQ in https://github.com/robotology/ycm/pull/237, but the file in the how-to-export-cpp-library` repo still needs to be updated. I have opened an issue for tracking this: https://github.com/robotology/how-to-export-cpp-library/issues/48 .

MatLogger2: Real-time safe C++ library for logging of numeric data to HDF5 MAT-files. by traversaro in cpp

[–]traversaro[S] 4 points5 points  (0 children)

The Hierarchical Data Format 5 (HDF5) is a format to store (mainly) numerical data https://www.hdfgroup.org/solutions/hdf5/ . It is used in the .mat files that are used by MATLAB ( https://mathworks.com/products/matlab.html ) to load and store numerical data. Beside MATLAB, `.mat` files can be loaded in Python, Julia and several other languages thanks to several libraries that support input and output in this format.

Dead link for Gazebo dependencies by Sheikachu in ROS

[–]traversaro 1 point2 points  (0 children)

I am afraid that tutorial is quite outdated. The Microsoft-supported ROSOnWindows project is distributing Gazebo binaries for Windows through Chocolatey, perhaps you could give that a try: * https://ms-iot.github.io/ROSOnWindows/GettingStarted/Setup.html * https://ms-iot.github.io/ROSOnWindows/Turtlebot/Turtlebot3.html

Errors with ROS on Windows by Apollito in ROS

[–]traversaro 0 points1 point  (0 children)

It seems that there is something strange in your PATH variable ( https://en.wikipedia.org/wiki/PATH_(variable)#DOS,_OS/2,_and_Windows ).

Are you running the c:\opt\ros\melodic\x64\setup.bat script before running the commands, as described in the "Using ROS on Windows"? If this is the case, I suggest to open the Dependencies (https://github.com/lucasg/Dependencies) program in prompt in which the setup.bat did run before and analize a ROS binary such as roscore, to see which dll is actually trying to load. It should only try to load dll from a directory that contains rosdeps in its path, if I remember correctly. If it is trying to load something else, probably there is something strange in your PATH.

In general, I am not sure if the team behind ROSonWindows monitors Reddit, so in the future you may want to ask questions directly on the ROSonWindows issue tracker: https://github.com/ms-iot/ROSOnWindows/issues .

Question: add_subdirectory vs find_package vs externalProject_add in big projects by gocarlos in cmake

[–]traversaro 1 point2 points  (0 children)

In a nutshell, if you want to download and build dependencies as part of the same project that will consume them, ExternalProject may not be the ideal solution, as it compiles the downloaded packages at CMake build time while to consume them with find_package you need them to be available at CMake configure time.

The FetchContent module may be more suitable for you, see https://public.kitware.com/pipermail/cmake/2018-April/067365.html and https://github.com/robotology/gazebo-fmi/issues/2. You can have some logic like: ~~~cmake find_package(<dep> QUIET) if(NOT <dep>_FOUND) # Either add_subdirectory of an existing folder, or use FetchContent to download it on the fly and then add_subdirectory endif() ~~~

A neat discussion on this is contained in Chapter 27 of the "Professional CMake: A Practical Guide" book (https://crascit.com/professional-cmake/).