Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[New Port Request] Gazebo #8014

Closed
TrentWeiss opened this issue Sep 1, 2019 · 14 comments · Fixed by #22466
Closed

[New Port Request] Gazebo #8014

TrentWeiss opened this issue Sep 1, 2019 · 14 comments · Fixed by #22466
Labels
category:new-port The issue is requesting a new library to be added; consider making a PR! info:good-first-issue This issue would be a good issue to get one's feet wet in solving.

Comments

@TrentWeiss
Copy link
Contributor

TrentWeiss commented Sep 1, 2019

Library name: Gazebo

Library description: A physics and robot simulation framework. It is near ubiquitous in the world of robotics research.

Direct from their website:
"Robot simulation is an essential tool in every roboticist's toolbox. A well-designed simulator makes it possible to rapidly test algorithms, design robots, perform regression testing, and train AI system using realistic scenarios. Gazebo offers the ability to accurately and efficiently simulate populations of robots in complex indoor and outdoor environments. At your fingertips is a robust physics engine, high-quality graphics, and convenient programmatic and graphical interfaces. Best of all, Gazebo is free with a vibrant community."

Source repository URL: https://bitbucket.org/osrf/gazebo/src/default/

Project homepage (if different from the source repository): gazebosim.org

Anything else that is useful to know when adding (such as optional features the library may have that should be included): Gazeo depends on some of the "ignition" libraries: https://ignitionrobotics.org/home. Ignition Math, Ignition Msgs, and Ignition Transport are required as dependencies (possibly others).

@TrentWeiss TrentWeiss added the category:new-port The issue is requesting a new library to be added; consider making a PR! label Sep 1, 2019
@TrentWeiss TrentWeiss changed the title [New Port Request] <Gazebo> [New Port Request] Gazebo Sep 1, 2019
@traversaro
Copy link
Contributor

Related PR: #7781 .

@MVoz
Copy link
Contributor

MVoz commented Sep 3, 2019

windows ver
release ver ok, debug failed

some bugs found, there are more

protoc.exe error, debug failed
doxygen gen html error 'PERL_PATH' 'MSCGEN_PATH' search failed

deps: RUBY - RONN - (ign-tools)
gem install ronn - deps msys\mingw ))

av\src\VideoEncoder.cc(21): fatal error C1083: Cannot open include file: 'sys/ioctl.h'
av\include\ignition/common/ffmpeg_inc.hh(36): fatal error C1083: Cannot open include file: 'libavcodec/avcodec.h'
LINK : fatal error LNK1181: cannot open input file 'swscale.lib'

msvc v141

ign-msgs4 - protoc.exe error, debug failed - release ok
ign-msgs3 - protoc.exe error, debug failed - release ok
ign-common3 - ok
ign-common2 - ok
ign-tools - ok
ign-cmake0 - ok
ign-cmake1 - ok
ign-cmake2 - ok
ign-cmake3 - ok
ign-math4 - ok
ign-math5 - ok
ign-math6 - ok

ign-transport6 - DEPS: ign-msgs3 - failed - release ok
ign-transport7 - DEPS: ign-msgs4 - failed - release ok

... )

@traversaro
Copy link
Contributor

cc @seanyen

@MVoz
Copy link
Contributor

MVoz commented Sep 3, 2019

ign-transport6 - settings are not disabled, not working

HAVE_IFADDRS:BOOL=OFF 
BUILD_TESTING=OFF

in consequence of the error

NetUtils.cc

#ifdef HAVE_IFADDRS
# include <ifaddrs.h>
//# include <sys/ioctl.h>
#endif

this port on Windows is not possible in this form

libprotobuf error, debug failed - FindIgnProtobuf.cmake ( ign-cmake0 ) no debug version

ign-msgs4 the file names overlap ign-msgs3

@TrentWeiss
Copy link
Contributor Author

TrentWeiss commented Sep 3, 2019

Thanks @voskrese for looking into this stuff and isolating some of the bugs. Although Gazebo was designed around platform-neutral dependencies, making it portable to Windows (in theory), it looks like the OSRF dev team didn't really put much effort into deploying on non-Linux platforms.

I'll look into trying to fix some of these problems when I have time. :)

@MVoz
Copy link
Contributor

MVoz commented Sep 3, 2019

in the site is written under the assembly MSVC 2013\v120
apparently new compilers are not supported

there are other dependencies that also cause the error

2019-09-04_010234

@traversaro
Copy link
Contributor

traversaro commented Sep 3, 2019

in the site is written under the assembly MSVC 2013\v120
apparently new compilers are not supported

The website is unfortunately quite outdated, see https://bitbucket.org/osrf/gazebo_tutorials/issues/92/remove-or-update-windows-installation . Despite what is written on the website, Gazebo 10 is able to build in Visual Studio 2015 and 2017 mainly due to the amazing work of Microsoft (in particular @seanyen), see https://bitbucket.org/osrf/gazebo/issues/2129/visual-studio-2015-compatibility and https://bitbucket.org/osrf/gazebo/pull-requests/3060/windows-patches-to-build-gazebo9/diff .

I had a few ports of Gazebo-related libraries working in vcpkg in https://github.com/traversaro/vcpkg/tree/superinstaller, see j-rivero/vcpkg_ignition#2 (comment), that have at least partial fix for problems related by @voskrese . For example, some protobuf-related errors in ign-msgs1 are due to the fact that that package compiles and uses its own protobuf message generator, and so the protobuf dll needs to be correctly found.

If you are interested in getting Gazebo 10 in vcpkg, a first step I recently worked on is the PR #7781 that contains the dependencies ign-cmake0 and ign-math4, and uncovered some issues on arm triplets. As soon as that PR is merged I will be happy to work in adding more ignition libraries to vcpkg, so a review for that PR would be highly welcome! Edit: the PR is now merged, see my later comment.

@MVoz
Copy link
Contributor

MVoz commented Sep 3, 2019

ign-msgs3 or ign-transport6 DEPS: LIB Protobuf FindIgnProtobuf.cmake ( ign-cmake0 )
no DLL

in general, you need to watch patches on the hitlab https://bitbucket.org/ignitionrobotics

@traversaro
Copy link
Contributor

traversaro commented Sep 4, 2019

The PR has been merged. Based on http://gazebosim.org/tutorials?tut=install_dependencies_from_source&cat=install, the other ignition dependencies that are needed for Gazebo 10 are:

I think I will personally work at the moment on ignition-transport4 and ignition-msgs1, but if anyone wants to work on other ports he will be welcome!

@traversaro
Copy link
Contributor

As discussed in #8178 (comment) , developing the gazebo10 port resulted in a lot of patch that are part of gazebo11, so it make sense to directly develop a port containing gazebo11. I do not plan do to this in the immediate future, but I would be glad to help anyone that wants to work on this.

@traversaro
Copy link
Contributor

traversaro commented Jan 21, 2020

With the merge of https://bitbucket.org/osrf/gazebo/pull-requests/3130 all the patches developed in #8178 to smoothly add a vcpkg port of Gazebo have been merged upstream, so gazebo11 should be packagable in vcpkg without any additional patch.

@TrentWeiss
Copy link
Contributor Author

developing the gazebo10 port resulted in a lot of patch that are part of gazebo11, so it make sense to directly develop a port containing gazebo11

I agree with this approach, especially considering Gazebo11 is an LTS release and Gazebo10 is not.

so gazebo11 should be packagable in vcpkg without any additional patch.

This may not be the case. Gazebo11 depends on different versions of the various ignition-* libraries and a different version of sdformat. The way vcpkg has those libraries packaged now, the version numbers are part of the library name itself. E.g. vcpkg has sdformat6 available, but not sdformat8 (which is what Gazebo11 requires). The same is true of some of the other dependencies of Gazebo11 and their recursive subdependencies.

However, I was able to build all of Gazebo11's dependencies from source on Windows 10 without too much headache. It stands to reason taking the extra step of building vcpkg portfiles for them won't be so bad either.

@traversaro
Copy link
Contributor

traversaro commented Jan 25, 2020

so gazebo11 should be packagable in vcpkg without any additional patch.

This may not be the case. Gazebo11 depends on different versions of the various ignition-* libraries and a different version of sdformat. The way vcpkg has those libraries packaged now, the version numbers are part of the library name itself. E.g. vcpkg has sdformat6 available, but not sdformat8 (which is what Gazebo11 requires). The same is true of some of the other dependencies of Gazebo11 and their recursive subdependencies.

Sorry, I probably was not clear, I meant that the Gazebo 11 port did not need any local patch to add via vcpkg_apply_patches. It will also require to add ports for all the required ignition libraries, but as most of the ignition library permit to install side-by-side different major versions, and thanks to the ignition_modular_library CMake macro, that should not be a big problem either.

@NancyLi1013
Copy link
Contributor

If you wish to add this port in the future, you can reopen this issue, but we're closing it for now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
category:new-port The issue is requesting a new library to be added; consider making a PR! info:good-first-issue This issue would be a good issue to get one's feet wet in solving.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants