dope: Cannot locate rosdep definition for [camera_info_manager_py]
I am following up the instructions on the github page. I have installed everything in the latest version just a day before. I am facing an issue with running a rosdep update command "rosdep install --from-paths src -i --rosdistro noetic". Which is giving me the error : "dope: Cannot locate rosdep definition for [camera_info_manager_py]". After googling the error for a while, I changed the command a bit to "rosdep install --from-paths --ignore-src --rosdistro neotic -y". Which is now giving me the error of "dope: Cannot locate rosdep definition for [vision_msgs]".
Running DOPE itself does not require the 'camera_info_manager_py' package, although our 'camera' node does use it. Like you, I am unable to install this package using 'rosdep install' and I'm not sure why. Perhaps because camera_info_manager has not been officially upgraded to python3?
At any rate, you can manually install it with the following steps:
cd ~
git clone https://github.com/ros-perception/camera_info_manager_py
cp -r camera_info_manager_py/src/camera_info_manager /opt/ros/noetic/lib/python3/dist-packages/
I tested this (within the Docker container) and it works.
Running DOPE itself does not require the 'camera_info_manager_py' package, although our 'camera' node does use it. Like you, I am unable to install this package using 'rosdep install' and I'm not sure why. Perhaps because camera_info_manager has not been officially upgraded to python3?
At any rate, you can manually install it with the following steps:
cd ~ git clone https://github.com/ros-perception/camera_info_manager_py cp -r camera_info_manager_py/src/camera_info_manager /opt/ros/noetic/lib/python3/dist-packages/I tested this (within the Docker container) and it works.
I tried this method. It did not work on my system. The folder "camera_info_manager" was indeed copied to " /opt/ros/noetic/lib/python3/dist-packages/".
However I still got the error ""dope: Cannot locate rosdep definition for [camera_info_manager_py]"" My OS is Ubuntu 20.04, python3.8, ROS noetic. Any clue?
Ah, I what I meant was that by manually installing it, you no longer need to run rosdep to install it. If you're using rosdep for other purposes, you may edit 'package and remove (or comment out) the line:
<depend>camera_info_manager_py</depend>
Like you, I am unable to install this package using 'rosdep install' and I'm not sure why. Perhaps because camera_info_manager has not been officially upgraded to python3?
Yes, exactly. The database of rosdep keys for Noetic is here:
https://github.com/ros/rosdistro/blob/master/noetic/distribution.yaml
The one for Melodic is here:
https://github.com/ros/rosdistro/blob/master/melodic/distribution.yaml
You can see that there's a key for camera_info_manager_py in Melodic, but not Noetic. This means that the package has not been "released" into Noetic yet.
The steps to get this fixed (if someone's interested) are:
- clone https://github.com/ros-perception/camera_info_manager_py into your catkin workspace
- convert it to Python3. I just checked, and it looks like the code is already supposed to work on both Python2 and Python3, so maybe there's nothing to do here.
- Check that
rosdep install --from-paths . -i --rosdistro noeticworks. You'll probably have to update some keys in thepackage.xmlfile (python-rospkg->python3-rospkg,python-yaml->python3-yaml). See https://github.com/ros/rosdistro/blob/master/rosdep/python.yaml for the full list of available python keys. You'll probably have to use condition guards like in this example so that the code keeps working in Python2 and Python3. Alternatively, the maintainer could create a new branch for the Noetic version, so you don't have to worry about backwards compatibility. - Test that everything works (e.g., by running the
cameranode from DOPE) on Noetic - Submit a pull request
- The maintainer of
camera_info_manager_pyhas to do a "bloom release". This will insert the rosdep key into the files above and fix this error for everyone.
BTW, the proper way to fix problems with missing binary packages is to clone the missing package into your catkin workspace instead of messing with /opt. That way, rosdep will recognize the package, and the error will disappear. This is what rosdep install -i does (-i means --ignore-packages-from-source, so if the source package is found in the catkin workspace, rosdep won't try to install it from binaries).
I also had this problem when trying to start the webcam publishing node using roslaunch dope camera.launch.
My solution was to clone the camera_info_manager_py package and install it with pip3:
git clone https://github.com/ros-perception/camera_info_manager_py
cd camera_info_manager_py
pip3 install ./
Should pip3 complain about not finding yaml package, you can simply remove it by editing the file camera_info_manager_py/setup.py so the install requirements look like:
install_requires=['rospkg'],
After installing the package with pip3 the camera launcher will work fine.