pantor / ruckig

Motion Generation for Robots and Machines. Real-time. Jerk-constrained. Time-optimal.
https://ruckig.com
MIT License
728 stars 164 forks source link

Support ruckig as a catkin package #87

Closed ags-dy closed 3 years ago

ags-dy commented 3 years ago

I see you have a ROS package.xml, but if I I add ruckig to my package.xml and find it as a catkin package, ruckig fails to get built as a dependency.

I also build ruckig manually with ROS colcon which works, but it doesn't seem to install it in the files in a place that other ROS packages can find.

Is it possible to support it as a ROS package?

Thanks

gavanderhoorn commented 3 years ago

I originally contributed the manifest in #10.

if I I add ruckig to my package.xml and find it as a catkin package, ruckig fails to get built as a dependency.

do you mean you try to add it to find_package(catkin REQUIRED COMPONENTS ..)?

If so: there is a difference between a plain-CMake package which can be used as a system dependency and has a package.xml to help tools like rosdep discover it, and a Catkin package.

Only Catkin packages can be added as a COMPONENT in a find_package(catkin ..) call.

But it's not needed for Ruckig, as it doesn't use any ROS infrastructure.

You should be able to just:

find_package(ruckig REQUIRED)
...
target_link_libraries(<your_target> PUBLIC ... PRIVATE ruckig::ruckig)

and it should work.

I also build ruckig manually with ROS colcon which works, but it doesn't seem to install it in the files in a place that other ROS packages can find.

This suggests you are actually using ROS 2, which changes things somewhat.

IIRC, for ROS 2 tools to be able to find plain-CMake packages, you'd have to install a .dsv marker file in the appropriate location (so it gets registered in the Ament Index). I'm not exactly sure which parts are required, but see these lines.

But I would probably recommend to use Ruckig as a system dependency instead. The Ament Index registration would only be needed in specific circumstances, and AFAICT, you just need to be able to build Ruckig in a Colcon workspace -- that's what the package.xml already enables. CMake should take care of the rest.

ags-dy commented 3 years ago

Thank you for your quick reply! I was thrown by the existence of the package.xml and was in catkin mode, and totally missed the non catkin way of doing things.

I am on ROS1 with colcon, and your instructions work

thanks!