MRPT / mrpt

:zap: The Mobile Robot Programming Toolkit (MRPT)
https://docs.mrpt.org/reference/latest/
BSD 3-Clause "New" or "Revised" License
1.94k stars 629 forks source link

ros-noetic-mrpt2 dependencies #1282

Closed ihadzic closed 2 months ago

ihadzic commented 1 year ago

The ros-noetic-mrpt2 package seems to be rather heavy on dependencies. It pulls various QT and other GUI-related packages, which then start pulling all kinds of desktop packages.

On many installations these are unnecessary. If running on the robot (i.e. an embedded system) which has no display and runs minimal installation of Ubuntu, these extra dependencies are just clutter. I am assuming that these GUI packages are necessary if one is using visualization features inherent to MRPT, but ROS has its own visualization and debugging tools which typically run outside the robot and communicate the data.

How hard would it be to separate the packages in, say, ros-noetic-mrpt2 and ros-noetic-mrpt-2-core, where the latter would be just the guts of the math-crunching functions and the former would be for those who need full features of MRPT (presumably on desktop)? The latter could be a dependency of the former but if installed alone, it would give the minimal set of features without functionality that would require desktop/GUI.

jlblancoc commented 1 year ago

That makes a lot of sense, and I'm aware of the lot of dependencies implied by installing mrpt2... It's not been done yet because it's far from trivial, here upstream, and from the ROS packaging itself.

Unlike Debian / Ubuntu, ROS build farms are prepared to create one single .deb file for each ROS package, that's why everything is together right now.

(Totally) removing all the GUI and opengl stuff and then adding a second package that includes the optional GUI stuff is not doable since mrpt-gui and mrpt-opengl are "core" parts...

Something that has been in my mind for a long time, though, is creating a separate ROS package for the libraries, and another for the applications only.

Dropping the whole Qt might be accepted if we leave out the unique app that depends on it ("robot-map-gui").

I'll try to investigate an idea:

jlblancoc commented 2 months ago

For the records: It was about time, but the good way to go was indeed splitting the ROS package mrpt2 into more modular, smaller components.

It's now done with this repo: https://github.com/MRPT/mrpt_ros Once all active ROS 2 distributions go over one update cycle and the new replacements are available, mrpt2 will be removed.