Re: [ros-users] Importing / including a new library into ROS…

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Armin Hornung
Date:  
To: ros-users
Subject: Re: [ros-users] Importing / including a new library into ROS (OctoMap)
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...

Cheers,
Armin

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