Deep_Object_Pose icon indicating copy to clipboard operation
Deep_Object_Pose copied to clipboard

dope: Cannot locate rosdep definition for [camera_info_manager_py]

Open ABHIINAV12 opened this issue 4 years ago • 5 comments

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]".

ABHIINAV12 avatar Apr 08 '21 05:04 ABHIINAV12

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.

nv-jeff avatar Apr 08 '21 17:04 nv-jeff

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?

haijunsu-osu avatar Apr 26 '21 03:04 haijunsu-osu

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>

nv-jeff avatar Apr 26 '21 16:04 nv-jeff

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 noetic works. You'll probably have to update some keys in the package.xml file (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 camera node from DOPE) on Noetic
  • Submit a pull request
  • The maintainer of camera_info_manager_py has 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).

mintar avatar Apr 28 '21 15:04 mintar

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.

andrei91ro avatar Nov 27 '21 17:11 andrei91ro