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.
Edit:
Disclaimer:
- 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:
- trick rosdep into giving us a list of
apt-get install ros-kinetic-...
commands for your dependencies
- convert them into ROS package names
[...] apt-get install ros-kinetic-my-package
-> my_package
- pass that list of packages to
rosinstall_generator
to get the
list of repos to build from source
- clone them
- install any missing system
dependency
- build the ROS packages
Setup:
source <YOUR_ROS_INSTALLATION>/setup.bash
mkdir -p ~/create_autonomy_ws/src && cd ~/create_autonomy_ws/src
git clone https://github.com/AutonomyLab/create_autonomy
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 install
ros-kinetic-my-packageto
my_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
(3)
rosinstall_generator `cat pkg_list` --deps --tar --exclude RPP --rosdistro kinetic > ~/create_autonomy_dependencies_ws/deps_to_build.rosinstall
(4)
cd ~/create_autonomy_dependencies_ws/
wstool init -j4 src deps_to_build.rosinstall
(5)
rosdep install --from-paths src --ignore-src --rosdistro kinetic -y
(6)
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
Originally posted by marguedas with karma: 3606 on 2020-01-27
This answer was ACCEPTED on the original site
Post score: 1
Original comments
Comment by pgav on 2020-01-28:
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.
Comment by gvdhoorn on 2020-01-28:
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).
Comment by pgav on 2020-01-29:
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]
Comment by gvdhoorn on 2020-01-29:
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).
Comment by marguedas on 2020-01-29:
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)