ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

If your current packages are using rosbuild you should really consider updating to catkin.

While the goal is to keep rosbuild working there are e.g. issues on Ubuntu 15.04 and newer with the way it works. Changes in upstream code broke it and there will only be a partial workaround to keep it working in most use cases. rosbuild is not actively maintained anymore and if for some reason it will break again in the future it might be beyond repair.

Another reason might be that you won't ever be able to release your packages when they are based on rosbuild.

Now to your main question: ROS 1 is using catkin since Groovy and there is no plan to change that again.

What you might have heard are information about the ROS 2 development. That indeed uses something which is called differently: ament. But ament is basically an updated version of catkin - you could call it catkin 2.

A different name was chosen for multiple reasons:

  • The so called devel space in catkin was almost impossible to use when scaling a workspace up to hundreds of packages. Therefore that feature has been removed from ament. But the advantage of having a devel space (by not copying resources when running your code) has been preserved using a different approach (namely symlinked installs).
  • Python packages containing a setup.py require to be wrapped in CMake in catkin. In ament they do not anymore and are being processed with the "native" Python tools directly.
  • Some API changed slightly, e.g. some functions in catkin specify implicit target names (which could be considered magic) and ament is more clear about that by specifying them explicitly. Some of the catkin API was developed with rosbuild in mind and some of these design choices should have better been revised.
  • The order of some function calls needed to be changed to support currently not possible use cases. One example if the package catkin_simple which was an attempt to ease writing CMake code for ROS packages. It was never announce since it had fundamental flaws which couldn't easily be address with the way catkin works.

But ultimately catkin and ament are very similar. catkin will be used for ROS 1 and ament for ROS 2. There is no plan to "backport" ament to ROS 1 and also no plan to support catkin for ROS 2.

Therefore I would highly recommend to update your code base from rosbuild to catkin. A potential step towards ROS 2 in the future will require you to update more of your code. The changes to the CMake files should be very simple at that point.