[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...
Cheers,
Armin
--
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