ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | Q&A
Ask Your Question

Rosdep not fetching dependencies on RPi3 running Kinetic

asked 2020-01-27 09:59:55 -0500

pgav gravatar image

updated 2020-01-28 10:12:52 -0500


I'm building a package (create_autonomy) for connecting the iRobot Create2 to ROS. I have been having issues with the rosdep definitions for my system (a Raspberry Pi 3, running Raspian 9 with ROS Kinetic).

I have run rosdep update as well as rosdep resolve and am still struggling to resolve dependencies. For example, rosdep resolve geometry results in ERROR: No definition of [geometry] for OS [debian]. I have also tried this with geometry2 with the same result. I have similar errors when I run the catkin_make process.

So far, my only solution has been to manually add the sources for the required packages from github sources, however my understanding of rosdep as well as the package.xml file is that this should not be necessary.

I have noted that there have been legacy issues that appear similar to mine, although these claim to all have been resolved:

Is there any way I can get past this issue, or is manually adding the dependencies my best approach?

Thank you for your help!

For completeness I have added the command trace and error messages:

$ git clone
$ rosdep install --from-paths src --ignore-src --rosdistro kinetic -y
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
ca_driver: No definition of [tf] for OS [debian]
ca_tools: No definition of [joy_teleop] for OS [debian]
ca_description: No definition of [xacro] for OS [debian]
edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2020-01-27 15:54:39 -0500

marguedas gravatar image

updated 2020-01-29 20:25:49 -0500

Not an answer as this won't fix your problem but will provide context on why it is failing.

ROS Kinetic doesn't have any binary packages for Debian Stretch (and you are using Raspbian 9 Stretch), this is why rosdep cannot resolve them. There is no version of ROS providing packages for Raspbian 32bits so you need to either build ROS from source or use images built by someone.

Usually to get the sources of the missing packages to compile, I would use the tool rosinstall_generator. Unfortunately in your case the create_autonomy package has not been released for Kinetic or any other distro so the tool cannot find it.



  • Hacky way to solve the problem
  • Not tested for this issue, but I tried something similar on a RaspberryPi 2 running Raspbian 10 and ROS Melodic and it worked

The idea is to:

  1. trick rosdep into giving us a list of apt-get install ros-kinetic-... commands for your dependencies
  2. convert them into ROS package names [...] apt-get install ros-kinetic-my-package -> my_package
  3. pass that list of packages to rosinstall_generator to get the list of repos to build from source
  4. clone them
  5. install any missing system dependency
  6. build the ROS packages


source <YOUR_ROS_INSTALLATION>/setup.bash
mkdir -p ~/create_autonomy_ws/src && cd ~/create_autonomy_ws/src
git clone 
mkdir -p ~/create_autonomy_dependencies_ws/src
cd ~/create_autonomy_ws/

(1) While Debian didnt seen any armhf packages, some other distros did e.g. Ubuntu Xenial. We will use --os ubuntu:xenial and also --simulate for rosdep to just give us the list of install commands.

rosdep install --from-paths src --ignore-src --rosdistro kinetic -y --os=ubuntu:xenial --simulate

We will keep only the lines with "ros-kinetic" in them and store them in a temporary file

rosdep install --from-paths src --ignore-src --rosdistro kinetic -y --os=ubuntu:xenial --simulate | grep ros-kinetic > rosdep_output

(2) convert [...] apt-get installros-kinetic-my-packagetomy_package`

To convert we want to keep everything after ros-kinetic- (here my-package) and then convert - to _

sed -e 's#.*ros-kinetic-\(\)#\1#' rosdep_output | sed 's/-/_/g' > pkg_list


rosinstall_generator `cat pkg_list` --deps --tar --exclude RPP --rosdistro kinetic > ~/create_autonomy_dependencies_ws/deps_to_build.rosinstall


cd ~/create_autonomy_dependencies_ws/
wstool init -j4 src deps_to_build.rosinstall


rosdep install --from-paths src --ignore-src --rosdistro kinetic -y


catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release -DCATKIN_ENABLE_TESTING=OFF -j2

(7) source the resulting workspace

source ~/create_autonomy_dependencies_ws/install_isolated/setup.bash

(8) build the create_autonomy workspace

cd ~/create_autonomy_ws/
catkin_make install

(9) delete temp files

rm ~/create_autonomy_dependencies_ws/deps_to_build.rosinstall ~/create_autonomy_ws/rosdep_output ~/create_autonomy_ws/pkg_list
edit flag offensive delete link more


Thanks for this answer, I believe that it explains what is happening. Although it is unfortunate that the tools don't resolve the dependencies automatically, at least it is possible to resolve them manually by adding the sources to the workspace and building.

pgav gravatar image pgav  ( 2020-01-28 10:14:22 -0500 )edit

You should be able to supply the --os=debian:jessie CLA (or any other version) and pretend you're actually running Jessie. There are rules for that version of the OS and provided the names of the packages haven't changed, it should still be able to install them.

For packages it can't find (ie: names have changed), you would still manually install them and then add them to the --skip-keys list (note: the keys, not the Debian pkg names).

gvdhoorn gravatar image gvdhoorn  ( 2020-01-28 11:35:53 -0500 )edit

Thanks for this suggestion. Unfortunately it didn't have any different effect on things.

For completeness, the resulting error was the same as before:

$ rosdep install --from-paths src --ignore-src --rosdistro kinetic -y --os=debian:jessie
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
ca_driver: No definition of [tf] for OS [debian]
ca_tools: No definition of [joy_teleop] for OS [debian]
ca_description: No definition of [xacro] for OS [debian]
pgav gravatar image pgav  ( 2020-01-29 11:47:54 -0500 )edit

Just making sure: have you ran a rosdep update for the user you're trying to run rosdep with?

And can you also tell us how you've installed rosdep? You may be running into UpstreamPackages. Pay attention to the Known Differences section specifically (but read all of it).

gvdhoorn gravatar image gvdhoorn  ( 2020-01-29 13:08:48 -0500 )edit

As Debian Jessie 32 bits never had any ROS debs built (nor any other Debian distro) I believe it's normal that rosdep fails to find such packages.

But @gvdhoorn's suggestion is good because it gives a path to hack our way through it! You could pretend to be an OS that has ROS Kinetic 32bits packages and use that to get the full list of missing ROS packages

rosdep install --from-paths src --ignore-src --rosdistro kinetic -y --os=ubuntu:xenial --simulate

Then you can use rosinstall_generator to get their source code and build them. I'll update my answer with steps on how to do so (it'll be a bit hacky though)

marguedas gravatar image marguedas  ( 2020-01-29 19:03:56 -0500 )edit

answered 2020-01-27 14:59:00 -0500

tfoote gravatar image

geometry and geometry2 are both ROS packages inside a rosdistro. If you're not setting the --rosdistro argument it will not resolve.

The Kinetic installation instructions specifically call this out:

Please edit your post to provide steps to reproduce your problem if you'd like a specific suggestion as to how to set this.

edit flag offensive delete link more


Thanks for this, although I think in my case the issue has more to do with the RPi OS, as mentioned in the other answer, above.

That said, I have edited my post to provide a more complete trace of the issue.

pgav gravatar image pgav  ( 2020-01-28 10:17:52 -0500 )edit

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: 2020-01-27 09:59:55 -0500

Seen: 558 times

Last updated: Jan 29 '20