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

rosrun ambiguities after migrating to hydro

asked 2014-01-29 19:28:14 -0500

madmax gravatar image

updated 2016-10-24 09:01:16 -0500

ngrennan gravatar image

I'm currently migrating from fuerte to hydro (on an Ubuntu 12.04).
In a first step, I kept all my old packages dry and managed to build them in hydro.
Running the system on the other hand seems to be more complicated.
I'm using my own, slightly altered versions of some popular packages such as move_base.
To tell whether to use the original move_base or my version I used to change the include order in ROS_PACKAGE_PATH, which worked fine.

The hydro version of rosrun, however, reports an ambiguity:

[rosrun] You have chosen a non-unique executable, please pick one of the following:
1) /opt/ros/hydro/lib/move_base/move_base
2) /path/to/my/version/of/move_base/bin/move_base

If I try to call move_base from roslaunch, it will choose option 1 per default.

I've got the same problem with move_base plugins. Once I tell rosrun to load my version of move_base, it will still load move_base plugins from hydro.

Is there a way to tell hydro to load packages from ROS_PACKAGE_PATH per default?

echo $ROS_PACKAGE_PATH returns:

edit retag flag offensive close merge delete


What is your ROS_PACKAGE_PATH set to?

ahendrix gravatar image ahendrix  ( 2014-01-29 19:34:07 -0500 )edit


madmax gravatar image madmax  ( 2014-01-29 20:12:48 -0500 )edit

2 Answers

Sort by ยป oldest newest most voted

answered 2014-01-30 12:59:07 -0500

Constantin S gravatar image

updated 2014-01-30 13:02:26 -0500

Use CMAKE_PREFIX_PATH to order catkin workspaces. Note, I am assuming you have a catkin version of move_base. Catkin workspaces seem to be explored first in the rosrun script. If it's a "dry" move_base, you need to uninstall the package or rename the executable in /opt/ros/hydro/lib/[package]/[node].

edit flag offensive delete link more


working on the same problem... "export CMAKE_PREFIX_PATH=" helps, the rosrun ambiguity is resolved. However, pluginlib still has trouble loading trajectory planner (also my own version & dry): Exception: MultiLibraryClassLoader: Could not create class of type base_local_planner::TrajectoryPlannerROS

Mate Wolfram gravatar image Mate Wolfram  ( 2014-01-31 01:21:44 -0500 )edit

Mate - This could be for a variety of reasons. Since its a dynamically loaded library, you could be missing dependencies at runtime, especially if you're using an older version of move_base.... check your LD_LIBRARY_PATH and PATH variables. A good way to check them is to source a catkin workspaces and see how they get set. Also do an ldd on the plugin file that holds that class. I don't remember what it was called off the top of my head. You'll see what the dependencies are. I don't know your linux level, but these dependencies will resolved using LD_LIBRARY_PATH. Here's some great info on that:

Constantin S gravatar image Constantin S  ( 2014-01-31 02:11:44 -0500 )edit

answered 2014-01-30 10:09:38 -0500

ahendrix gravatar image

My best guess is that you have a rosbuild package in your workspace that's shadowing a catkin package installed from debs, and this is confusing rosrun. @William or @tfoote may be able to confirm this.

My best suggestion is to try removing the ros-hydro-move-base package and see if that helps things. (sudo apt-get remove ros-hydro-move-base)

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower


Asked: 2014-01-29 19:28:14 -0500

Seen: 540 times

Last updated: Jan 30 '14