-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
Provide more granular libdrake-*.so
targets for deployment / install
#7294
Comments
To follow up, would that mean that, if ROS were to come in as part of Drake, that it would not be a separate (I am asking on behalf of a f2f with Naveen, namely to see what options might be available - and because it's semi-related to the Python bindings setup.) |
Is this in the context of, e.g., publishing ROS sensor and TF messages from a simulation? Could we have a static executable do that (given a SDF, simulate it), instead of having |
Tagging @RussTedrake in |
So the plan (evolved in the last couple of days) is now for drake to natively support subscribing and publishing ROS messages and this requirement is going to be a lot sooner than anticipated. Hence the original question. |
As far as the build system goes, though, the relevant question is different. Within the scope of the near-term priority request, do we only need that capability within a Drake program, or do we also need a Drake shared library that, e.g., speaks both ROS and Edit to add: And if the second-party users do need to mix and match, are they doing so via Bazel, CMake, or whichever we want? |
My two cents: I think that we can initially segregate the ROS linking from libdrake.so, but this will be one of the first pieces where we are likely want to redistribute drake libraries with ROS inside. I think that we should be able to use (very minimal pieces of) system-installed ROS, in the hopes that other projects that also use system ROS do not conflict. I’m also OK with saying that consumers not using system ROS (on both ends) will have to deal with building the relevant drake libraries from source — probably they would do this via cmake/catkin. Does that help? Cc @gizatt who might already have a useful demonstration of this |
The configuration Russ is referring to lives here in an experimental rejigger of the IIWA example to publish ROS Pointcloud2's. The relevant CMake target is
It compiles and runs! (Until it segfaults trying to send an lcmt_iiwa_status... but that's an unrelated issue that I think is my fault.) |
I think that in the near term we can get by linking a static executable from within drake which includes the ROS pub/sub goo we want in an example and avoid putting it into
I believe mix and match.
Probably whichever we want. I suspect CMake will be requested before bazel. |
Relates #7293 given issues on Mac with some versions of MATLAB. |
I don't think this is correct, or at most its a second-order effect. All of libdrake's features should be available in MATLAB. If certain dependencies are difficult to get working with MATLAB, that would be a problem whether there is a single libdrake.so or a family of libdrake.so's -- at least one of the items in the family would still have the same problem(s) as the all-in-one libdrake does. That's not to say we shouldn't have finer-grained dependencies or libraries, or to take into account users who only want to pay the dependency cost of a portion of Drake. However, in terms of the Drake project as a whole, and the burden on core developers, that MATLAB and some of our dependencies fight is a problem on its own, no matter how we package out librar(ies) for release. |
I disagree, some parts of Drake are just not applicable to MATLAB, e.g., MATLAB has its own visualization and so VTK would not be required. |
The simulated RGB(D) sensor uses VTK at runtime, and will be an important part of the toolbox. |
Yes, and it would mostly likely (and probably will be required to) access that through protobuf. |
The point being there is a blacklist of libraries from the perspective from MATLAB and any functionality will be to be accessed some other way. Drake should segregate that functionality into a separate library that is safe for MATLAB, so it is exactly related to this issue. |
This is a temporary solution pending a more long-term solution to have `find_resource` be its own shared library (RobotLocomotion#5752 + RobotLocomotion#7294); it is difficult at present to carve out `find_resource` as it has upstream dependencies that would need to be carved out into shared libraries.
This is a temporary solution pending a more long-term solution to have `find_resource` be its own shared library (RobotLocomotion#5752 + RobotLocomotion#7294); it is difficult at present to carve out `find_resource` as it has upstream dependencies that would need to be carved out into shared libraries.
A couple of things have started to need this; considering a bump in priority at some point, possibly after Bionic + Python3 stuff all land. |
While a few the "big picture" ideas that motivate the above discussions are still relevant, I think all of the actual details from the discussions above have been overtaken by events. We no longer link into matlab, and we have other plans for ROS integration. |
Given the caveats listed in #7283 (polluting base
libdrake.so
with Gurobi and MOSEK on install, which requires the environment be setup), and the potential for other use cases, like including something like an optionallibdrake-ros.so
per Naveen and Russ's suggestion, to make ROS not a required dependency oflibdrake
and not need weirdselect()
logic, it would be nice to have an established workflow for this, which is still convenient for development workflows (a la #6760).\cc @naveenoid
The text was updated successfully, but these errors were encountered: