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

install urdfdom from source

asked 2014-02-12 20:10:44 -0500

Dave Coleman gravatar image

updated 2014-02-13 15:47:01 -0500

I've installed ROS from source for Hydro as the documentation states. I source that ROS workspace and then create a new workspace for MoveIt development that I overlay on top. The issue is that it cannot find urdfdom:

CMake Error at /home/dave/ros/ws_ros_catkin/install_isolated/share/catkin/cmake/catkinConfig.cmake:72 (find_package):
  Could not find a configuration file for package urdfdom.

  Set urdfdom_DIR to the directory containing a CMake configuration file for
  urdfdom.  The file will have one of the following names:


Call Stack (most recent call first):
  moveit_core/CMakeLists.txt:10 (find_package)

CMake Error at /home/dave/ros/ws_ros_catkin/install_isolated/share/catkin/cmake/catkin_package.cmake:156 (message):
  catkin_package() DEPENDS on 'urdfdom' which must be find_package()-ed
  before.  If it is a catkin package it can be declared as CATKIN_DEPENDS
  instead without find_package()-ing it.
Call Stack (most recent call first):
  /home/dave/ros/ws_ros_catkin/install_isolated/share/catkin/cmake/catkin_package.cmake:98 (_catkin_package)
  moveit_core/CMakeLists.txt:63 (catkin_package)

-- Configuring incomplete, errors occurred!
Invoking "cmake" failed

Digging around, I found that in my ROS source installation workspace it was missing a .cmake file and this entire folder:


I don't know how it was able to build the rest of the packages without this. My solution was to manually build urdfdom:

cd /home/dave/ros/ws_ros_catkin/src/urdfdom
mkdir build && cd build
cmake ../
sudo make install

Then I symlinked the following folder:

ln -s /usr/local/share/urdfdom /home/dave/ros/ws_ros_catkin/src/urdfdom

I'm shocked that it worked, but I feel like this is a bad solution. What did I do wrong and how do I fix it in the future?



Here's the output of a catkin_make_isolated --install build:

My ROS_PACKAGE_PATH is the following:


Did you install your hydro workspace before overlaying moveit? Yes, I ran setup.bash of my ros source install before starting to build moveit.

Edit 2

In /home/dave/ros/ws_ros_catkin/src/urdfdom, tree output:

Note that I made the build folder myself, as described above, after being unable to fix the issue myself

Edit 3

My checkout of urdfdom is directly from the Github repo:

git clone

It appears there is no package.xml in that repo, I guess it is added as some patch? This is undocumented and seems like a messy way of doing things. What is the recommended way of making changes to urdfdom with ROS and committing it to Github? I now see where the package.xml comes from:

edit retag flag offensive close merge delete


It works fine for me so it is likely not a problem with urdfdom itself. Can you please more information from your build, e.g. the CMake configure as well as the install output of your ROS hydro workspace (probably best via gist or something similar)? The fact that your first build did not result in having the share/urdfdom folder indicates that something went wrong. Your way of trying to patch the problem after the fact was incomplete and therefore it failed to find urdfdom later.

Dirk Thomas gravatar image Dirk Thomas  ( 2014-02-13 05:05:12 -0500 )edit

I'm not sure how to get my CMake configure information, can you explain? I've added some more info, above. Thanks!

Dave Coleman gravatar image Dave Coleman  ( 2014-02-13 12:56:30 -0500 )edit

2 Answers

Sort by ยป oldest newest most voted

answered 2014-02-13 13:13:32 -0500

Dirk Thomas gravatar image

updated 2014-02-13 17:51:35 -0500

Your workspace does not contain urdfdom. Or to be more specific: your urdfdom folder does not have a package.xml file therefore it is not a catkin package. The result is that the list of packages in topological order does not contain it.

Where do you get the folder content from? You might want to clone the latest released version from the GBP repository. You can use rosinstall_generator to get the exact repository information.

Update: The is the recommended way for packages which do not want any catkin related files in the upstream repository. The package.xml file as well as at least the install rule for it in the CMakeLists.txt are then applied as a patch in the GBP repository. You should just make sure to checkout the latest released version from the GBP repository instead of the source repo.

edit flag offensive delete link more



I understand the issue now, but I think disagree with it. I've had problems with the tar download via wstool being a different version then github version, so if you want to commit back any changes you can overwrite unreleased changes, as happened to me just yesterday with the class_loader repo.

Dave Coleman gravatar image Dave Coleman  ( 2014-02-13 18:23:53 -0500 )edit

I usually avoid the tarballs (even if they are faster to download) since a git clone of the appropriate branch/tag of the gbp repo allows me to diff changes in the case I am applying some. Then I can use those diffs to commit them back to the upstream repo. If you have any idea how to make it more convenient (beside convincing the maintainer that is doesn't harm to have the package.xml file in the upstream repo) I am happy to hear them.

Dirk Thomas gravatar image Dirk Thomas  ( 2014-02-14 04:18:16 -0500 )edit

I documented the problem here:

Dave Coleman gravatar image Dave Coleman  ( 2014-02-17 21:07:44 -0500 )edit

answered 2014-02-13 04:02:13 -0500

joq gravatar image

Sounds like you should open a urdfdom issue with a link to this question, so the developers will know about the problem.

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2014-02-12 20:10:44 -0500

Seen: 2,735 times

Last updated: Feb 13 '14