[ros-users] Importing / including a new library into ROS (OctoMap)

Armin Hornung HornungA at informatik.uni-freiburg.de
Mon Apr 26 08:27:09 UTC 2010

Hi all,

thanks for all the feedback!

> This is an interesting case.  To date, we've brought in non-ROS
> libraries via shell packages that download the source for one of two
> reasons:
>  * we don't control the external repo (e.g., Eigen, GMapping); or
>  * we do control the external repo, but prefer not to put anything
> ROS-specific in it (e.g., Gazebo, Stage, OpenCV).
> In your case, you control the external repo, and are happy to put ROS
> "bindings" in it.  I can see the argument for putting the ROS packages
> in the octomap repo.  But I think that, at least for now, it would be
> better to keep them separate (i.e., put the ROS packages in your alufr
> repo).
> The reason is that our tools assume that the top-level directories of
> a ROS repo are all either stacks or packages.  As it's currently
> organized, the octomap code lives outside of any package or stack.
That makes sense, because here the 2nd case applies, at least for the 
core functionality. And I guess what works for OpenCV (i.e. is the 
ROS-supported way to do it) will work for us too!

So, I would just have a look at the "opencv2" ROS-Makefile and manifest 
and adjust that accordingly? Or is there a Tutorial (that goes beyond 
http://www.ros.org/wiki/mk#A3rdparty_code.2C_from_SVN) for this 
"wrapping" available?

How do people usually deal with $SVN_REVISION, adjust it in the wrapping 
ROS package for every "stable" release of the lib?

> Another option would be to simply add the manifest to octmap/trunk to make
> it a proper ROS package itself and put the octmap_server package into
> alufr-ros-pkg.  This is an unobtrusive way to convert the existing source.
> And it keeps the octomap package clean of ROS specific stuff, except the
> manifest which all other systems will ignore.
I didn't think of that, that sounds like a nice solution. But couldn't 
that create more problems then, since the remaining source structure is 
not usual for ROS packages (own CMake-based build, CMakeLists in "src", 
.cpp and .h in "src" ...). With octomap_server in alufr-ros-pkg, people 
wouldn't get around performing two checkouts anyways, it seems ;)

For the future, maybe there could be a standard ROS solution for 
libraries like this, where you could incorporate a ROS binding or 
interface into the existing source tree...


Armin Hornung                              Albert-Ludwigs-Universität
www.informatik.uni-freiburg.de/~hornunga   Dept. of Computer Science
HornungA at informatik.uni-freiburg.de        Humanoid Robots Lab
Tel.: +49 (0)761-203-8010                  Georges-Köhler-Allee 79
Fax : +49 (0)761-203-8007                  D-79110 Freiburg, Germany

More information about the ros-users mailing list