Ask Your Question

Relationship between rospkg and catkin_pkg (& ament_package)

asked 2018-05-30 16:16:51 -0500

130s gravatar image

updated 2018-05-30 16:42:41 -0500

AFAIUC currently rospkg and catkin_pkg provide Python API for package info handling in ROS1. I'm willing to add an API, which I mainly target catkin pkgs with at the moment but should theoretically be able to handle ament or even rosbuild pkgs as well, and thus can be essentially called manifesto-format agnostic. Then I wonder which package is the right place to add that kind of change.

Current released version of rospkg and catkin_pkg seem to be independent (see below the system output). But a bug fix PR to rospkg introduced a dependency to catkin_pkg, so at the moment dependency tree for Python API pkg is catkin_pkg <- rospkg (excluded ament for now as I'm not yet sure about it). This makes me slightly lean toward opening a PR to catkin_pkg, but I'm not entirely sure (as the portion of the code in rospkg that depends on catkin_pkg is very limited).

Where's the best place would be?

$ apt-cache depends python-rospkg
  Depends: python
  Depends: python
  Depends: python-yaml
  Depends: python-rospkg-modules
  Conflicts: python3-rospkg
$ apt-cache depends python-catkin-pkg
  Depends: python
  Depends: python
  Depends: python-docutils
  Depends: python-dateutil
  Depends: python-pyparsing
  Depends: <python-argparse>
  Depends: python-catkin-pkg-modules
  Conflicts: catkin
  Conflicts: python3-catkin-pkg
$ apt-cache policy python-rospkg
  Installed: 1.1.4-100
  Candidate: 1.1.4-100
  Version table:
 *** 1.1.4-100 500
        500 xenial/main amd64 Packages
        500 xenial/main i386 Packages
        100 /var/lib/dpkg/status
     1.0.38-1 500
        500 xenial/universe amd64 Packages
        500 xenial/universe i386 Packages
$ apt-cache policy python-catkin-pkg
  Installed: 0.4.2-100
  Candidate: 0.4.2-100
  Version table:
 *** 0.4.2-100 500
        500 xenial/main amd64 Packages
        500 xenial/main i386 Packages
        100 /var/lib/dpkg/status
     0.2.10-2 500
        500 xenial/universe amd64 Packages
        500 xenial/universe i386 Packages
edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2018-05-30 16:21:13 -0500

Dirk Thomas gravatar image

Without knowing what exact feature you would like to implement it is difficult to give a definitive answer.

In general I think it should likely go to catkin_pkg. rospkg is the "older" API which is still widely used in ROS 1.

While ROS 2 currently has ament_package we are actively moving the usage over to catkin_pkg since both packages have largely the same functionality. In the past it wasn't possible to use catkin_pkg because the Python 3 version wasn't side-by-side installable with the Python 2 version. That limitation has been resolved in the meantime in an effort to consolidate the two.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools



Asked: 2018-05-30 16:16:51 -0500

Seen: 283 times

Last updated: May 30 '18