Ask Your Question

why catkin package is still needed at ROS runtime?

asked 2019-12-10 03:56:09 -0500

uestclx gravatar image

updated 2019-12-10 04:19:57 -0500

Hi all,

This is probably a stupid question, but I can't wave it out of my head... Why we still need catkin when we run ROS? Isn't it a package building tool? Why it's still needed at runtime?

Because in my understanding, catkin is a tool we used to build packages, almost like an enhanced version of cmake. So normally cmake is not needed when we run executables right?

But when I tried to run ROSCORE in my own environment without catkin package, I got errors when importing.

$ roscore

Traceback (most recent call last): File "/sdcard/ros_runtime/runtime_env/bin/roscore", line 72, in <module> import roslaunch File "/sdcard/ros_runtime/runtime_env/lib/python2.7/dist-packages/roslaunch/", line 57, in <module> from .launch import ROSLaunchRunner File "/sdcard/ros_runtime/runtime_env/lib/python2.7/dist-packages/roslaunch/", line 55, in <module> from roslaunch.nodeprocess import create_master_process, create_node_process File "/sdcard/ros_runtime/runtime_env/lib/python2.7/dist-packages/roslaunch/", line 50, in <module> from roslaunch.node_args import create_local_process_args File "/sdcard/ros_runtime/runtime_env/lib/python2.7/dist-packages/roslaunch/", line 53, in <module> import roslib.packages File "/sdcard/ros_runtime/runtime_env/lib/python2.7/dist-packages/roslib/", line 54, in <module> import roslib.stacks File "/sdcard/ros_runtime/runtime_env/lib/python2.7/dist-packages/roslib/", line 46, in <module> import roslib.packages File "/sdcard/ros_runtime/runtime_env/lib/python2.7/dist-packages/roslib/", line 49, in <module> from catkin.find_in_workspaces import find_in_workspaces as catkin_find ImportError: No module named catkin.find_in_workspaces

Does catkin serve as other functions other than a building tool? What's the concept of "workspace" here? It is different than "build" and "devel" workspace right?

Thanks a lot.

edit retag flag offensive close merge delete


Could you be specific?

What sort of use are you seeing?

Note: there is ros-$ROS_DISTRO-catkin and there are Python modules and C++ libraries with the name catkin in them.

The latter may be used by nodes to query and introspect the ROS filesystem (ie: a workspace).

gvdhoorn gravatar image gvdhoorn  ( 2019-12-10 04:10:34 -0500 )edit

Sorry for being unclear. I modified the question. Could you please take another look? Thanks a lot.

uestclx gravatar image uestclx  ( 2019-12-10 04:20:38 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2019-12-10 13:16:21 -0500

Dirk Thomas gravatar image

The Python modules missing (catkin.*) are provided by the Python package catkin_pkg. It is responsible for: * finding packages (also in the case after they have been built and installed) * parsing the package manifest * extracting information like registered plugins fe.g. available displays for rviz)

So yes, you do need that Python package at runtime.

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

1 follower


Asked: 2019-12-10 03:56:09 -0500

Seen: 55 times

Last updated: Dec 10 '19