ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Problems installing hydro from source

asked 2014-04-02 11:35:18 -0600

dime gravatar image

updated 2016-10-24 09:00:50 -0600

ngrennan gravatar image


I can successfully install the catkin (wet?) packages using the install from source on Ubuntu instructions found on the ROS website. However, I seem to still be missing packages that are installed when I install from binary. Looking at the Wiki for installing from source, it mentions "To utilize the things installed there simply source that file. Lets do that now before building the rest of ROS:". However, it never mentions how to build the rest of ROS.

So I figured, let's look at the source install documentation from Groovy. It is very similar, but has how to build the ROS (dry) packages. However, when I try to follow those instructions, substituting hydro for groovy, it tells me that there are no dry packages for Hydro.

I still don't understand why these files are not there when I compile from source, unless possibly they aren't actually part of ROS. They (apt-get packages) get installed as part of the dependency process when installing the HRATC2014 framework. See below:

dime@hratc4:~$ dpkg -S /opt/ros/hydro/lib/ /opt/ros/hydro/lib/ 
ros-hydro-husky-gazebo-plugins: /opt/ros/hydro/lib/
ros-hydro-controller-manager: /opt/ros/hydro/lib/

These don't get installed as part of the source install, so do I need to look elsewhere for their source?

Edit: You are correct, and this is the web page we are following. The problem is, currently robot_pose_ekf does not integrate GPS data. However, clearpath robotics has code (navigation stack) with a modified robot_pose_ekf that does integrate GPS data. Please Google "clearpath robotics robot_pose_ekf" (I can't post links yet due to karma). At the bottom it says "where to get the code", and you can see the github directory where we're getting the modified navigation stack. Note, that this is the entire navigation stack, not just robot_pose_ekf. Being new to the ROS ecosystem, we just assumed we could replace the navigation directory in the ROS source, build (which we did succesfully) and run it. However, we still need extra packages provided by the HRATC2014 competition, and weren't able to integrate them with our compiled version -- this is where we are hung up...the ROS desktop-full is installed (along with needed .so files from HRATC2014) in /opt/ros. My custom build of ROS with modified navigation stack is in home_dir/catkin_workspace1/install_isolated. Should I be doing the navigation source build in an "overlay" workspace? And by all means, if I'm simply asking something that's documented, just point me in the right direction, because I haven't been able to find it. Thanks for all your help.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2014-04-03 07:11:14 -0600

demmeln gravatar image

updated 2014-04-08 07:31:13 -0600

There seems to be some misconception about what is "ROS". When you installed ROS, probaly you chose the desktop_full variant. This gives you maybe around 250 packages. However there are over 1000 packages released for ROS hydro. Just because they don't get installed with any of the core variants (base, robot, desktop, desktop_full, etc) does not mean they are not "part of ROS".

As you noticed, these additional ROS packages seem to be not part of packages needed for the "HRATC2014 framework" (I don't know what that is). You can of course install also those from source. rosinstall_generator is your friend here.

I guess the question is really, what you are trying to acheive. Usually it does not make sense to install everything from source on Ubuntu. It is much more economical to install almost everything with apt-get, and then create an overlay workspace with just the packages you want to modify and thus compile from source (including any packages you need that depend on the ones you modify). Again, rosdep, rosinstall_generator and wstool are your friend for this.

Edit: In response to your comment.

It is probably best to install the core ROS system from APT, and then checkout only the ones you need to customize from source in an overlay. In catkin, you should not manually modify the environment variables like ROS_PACKAGE_PATH / LD_LIBRARY_PATH, but rather make sure you have sourced your underaly (the core install in /opt/ros/hydro/setup.bash) before invoking catkin_make on your overlay with the source packages for the first time. Even if you want to build everything from source, I would still advice to install the core pacakges in an underlay workspace, then create a second overlay workspace for development. Else configuratoin/compilation will be slow and you cannot use catkin_make due to some non-catkin packages.

You should follow the tutorial at . Which packages on top of the three in the hratc2014_framework.rosinstall do you want to install from source exactly?

Edit 2:

In response to your update, you have multiple possibilities. I am assuming that you want the hratc 2014 on top of a ROS install where only the navigation stack is replaced.

Option 1

The first option is to create a workspace with the hratc packages and the modified navigation stack.

# set up workspace with hratc and custom navigation
mkdir ~/hratc2014_workspace
cd ~/hratc2014_workspace
wstool init src -j8
wstool set navigation --git -v hydro-devel -t src
wstool update -t src
# install dependencies from debian
rosdep install --from-path src -i --rosdistro hydro
# source the underlay and compile the workspace
. /opt/ros/hydro/setup.bash

This is the most convenient option, but there are some subtle pitfalls with this. For example, anything you install from debians that depends on the navigation stack was compiled with the released packages, but you now have "shadowed" those with your custom ones. If ... (more)

edit flag offensive delete link more


I pulled the source for ROS because we needed to include a third-party modification to parts of the navigation stack (and it was only available in source). Then, I need to also use some dependencies that get installed when I use rosdep on the catkin workspace provided by the competition (HRATC2014). However, rosdep installs these in /opt/ros/hydro. My catkin install complained about being mixed type packages so we have to use catkin_make_isolated, which installed it into my home directory. I haven't been able to figure out how to make my local, source compiled ROS know where the other libraries are. I tried ROS_PACKAGE_PATH / LD_LIBRARY_PATH, etc., but there's some concept I'm missing here. It still doesn't seem to integrate well (i.e. controller_manager/spawn -- one of the dependencies, is never found). I'd have though there'd just be an environment variable that we could ...(more)

dime gravatar image dime  ( 2014-04-03 10:46:28 -0600 )edit

Question Tools


Asked: 2014-04-02 11:35:18 -0600

Seen: 494 times

Last updated: Apr 08 '14