[ros-users] resolving open REP-0122 issues

Jonathan Bohren jonathan.bohren at gmail.com
Thu Jul 26 06:33:00 UTC 2012


On Thu, Jul 26, 2012 at 1:59 AM, Dirk Thomas <dthomas at willowgarage.com>
 wrote:

> We will have  migration guide ready before we will announce the general
> availability of catkin.
> A draft (which is very likely to change in the near future) can currently
> be found in the github repository of catkin (https://github.com/ros/**
> catkin/tree/master/doc <https://github.com/ros/catkin/tree/master/doc> -
> especially in rosbuild_migration.rst).
> Some further information from the design phase is available at
> http://ros.org/doc/fuerte/api/**catkin/html/<http://ros.org/doc/fuerte/api/catkin/html/>
> Please keep in mind that the development is currently still ongoing and
> some things are likely to change...
>

Assuming it's up to date, looking at
https://github.com/ros/catkin/blob/master/doc/supposed.rst I think gives
the best idea of what Catkin expects from developers. It looks like all the
headers/libs needed by ros packages needed by a system are stuffed into
${ROS_INCLUDE_DIRS} and ${ROS_LIBRARIES} so this is better than having to
call find_package() for every single ros package dependency as the
higher-level documentation seemed to suggest.

On Thu, Jul 26, 2012 at 1:25 AM, Daniel Stonier <d.stonier at gmail.com> wrote:

> Not only were these exports hardwired for the whole package, but also made
> it impossible to work for other platforms and some cross-compiling
> scenarios. Catkin automatically creates config-cmake and pkg-config files
> which do this for the user. All that is needed is a very intuitive
> find_package call in the cmake.
>

I agree wholeheartedly, and I have had my own cross-platform experiences
trying to make ROS packages that I could easily build on gnulinux and
xenomai. It's not trivial.

Also I'd like to comment again on naming conventions:

>From the example, to use ros packages/stacks in Catkin, you do this:

>

project(my_package)
>


find_package(ROS REQUIRED COMPONENTS
>              cpp_common

             rostime

             sensor_msgs)

include_directories(${ROS_INCLUDE_DIRS})
>
> add_executable(myexec ...)
> target_link_libraries(myexec ${ROS_LIBRARIES})


In order to declare a "ros package" you declare a "CMake project" should we
start calling them "ros projects"?
In order to depend on "ros packages" you find the "ROS CMake package"
and require several "ROS components" which doesn't really mean anything on
its own.

If we assume by default that ROS components are required, we can simplify
this a bit for new users (of ros or catkin) by making roscreate-pkg and the
tutorials not even use the word "COMPONENTS" since it's an unnecessary
argument if you're requiring them, ie:


> find_package(ROS REQUIRED
>              cpp_common

             rostime

             sensor_msgs)



I've always liked what I've heard and seen of Catkin, I just want to make
sure that we don't accidentally build a CMake wall around the ros community
that makes it harder for people to get in and join the party.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ros.org/pipermail/ros-users/attachments/20120726/c3379dec/attachment-0004.html>


More information about the ros-users mailing list