Hello Christian,

thanks for taking the time to give detailed feedback.

there is documentation that maybe answer some of your more general questions here:

http://ros.org/wiki/catkin
http://ros.org/wiki/catkin_or_rosbuild

> Now instead of a usability improvement so that it automatically looks
> for files inside the msg/srv directory, you have to specify which directory
> the files reside in, each message and additionally the dependency for them.

Regarding the cmake macro for message files in catkin, specifying the directory is not necessary, even though that has been done in many places (The roscpp tutorial doing so should probably be changed). Automatically looking up .srv and .msg files also still works, but the problem is that with catkin this will only be done when the CmakeLists.txt is new or has changed. So if you add a .msg file later to your project, invoking make or catkin_make would not generate message files, and you'd have to know and remember to invoke cmake explicitly, which is why it is recommended to list the .msg files lin the CMakeLists.txt file. This is a consequence of catkin not running configuration before building every time (as rosbuild did), a feature that should save developers some time (compared to rosbuild).

> Also you have to specify each dependency of the package,
> additionally to the dependencies inside the package.xml
> where you have to also add some lines for generating messages.

Why you currently have to state dependencies multiple times is explained somewhat here:
http://ros.org/wiki/catkin/conceptual_overview#Dependency_Management
but possibly the number of places dependency have to be stated could be reduced.
Your feedback on this is thankfully noted, it helps to know what users think.

> Additionally the fact that I have to change to the catkin workspace
> directory to build one package really annoys me, please make some
> script which builds from any package directory or anywhere for the current workspace.

You can create a ticket for catkin on github to discuss what you need, there is already one going into that direction:
https://github.com/ros/catkin/issues/294
Though since some concepts in catkin are very different to rosbuild, it is not trivial to make catkin behave too similar to rosbuild.

Regarding the support for new programming languages, maybe that can better be discussed in the Buildsystem SIG:
groups.google.com/group/ros-sig-buildsystem

cheers,
  Thibault



On 08.01.2013 11:50, Christian Holl wrote:

Hi,

First of all: congratulations for completing this new release! As I’m dealing with writing a new ROS client library, the first and main look I took within this release was into Catkin. For what I can tell up to now, I see some good change here but unfortunately there are a lot more points I do not like…

Let’s start with the good thing I see: the messages are now generated in the user’s workspace, what is really good when looking at adding a new “language” like rosc, the one I’m working on, where every message in every package has to be built for the new language which wasn't possible if using installed packages before.

Now to the critics.

When using rosbuild, everything you have to do to create a new language was making your language package depended on roslang and adding a tag which specifies the generator function.

Now it seems that you have to create a file inside a special directory to make the compiler notice that there is a new language, unfortunately it's a system directory. The message generator (which creates the same files as before) now uses EmPy instead of just a python script. I don't have used EmPy so far but I think that's ok. What feels weird to me is that the generator is generated by another generator residing inside genmsg (the base of message generation) containing language specific details for python and cpp, which I think, should be only inside gencpp or genpy. Otherwise somebody (like me) who wants to write another language add-on has to mess around inside basic ros stuff (I really dislike messing around inside a doubled generator btw). If there is another possibility to add another language to the build toolchain, please tell me! It would be cool to have message stuff automatically generated for different languages. Another strange thing is, that the build python script for roscpp is placed in another directory than the templates for it.

I guess the best way for message generation would be to stay the old way for calling the generator by just adding a tag inside the package.xml making it a language package instead of defining it on other places and and use the python scripts of ROS for reading the message files and merge that with the new location in the users workspace. Then everybody could add add a new language easily.

Now to the general usability when creating a package.

When using rosbuild and wanting to generate messages (or services), you just had to remove a comment in front of the generation line. Now instead of a usability improvement so that it automatically looks for files inside the msg/srv directory, you have to specify which directory the files reside in, each message and additionally the dependency for them. Also you have to specify each dependency of the package,additionally to the dependencies inside the package.xml where you have to also add some lines for generating messages. This really introduces much complexity on the user side and is really uncomfortable for creating new packages. I think that shouldn't be necessary.

Additionally the fact that I have to change to the catkin workspace directory to build one package really annoys me, please make some script which builds from any package directory or anywhere for the current workspace.

Btw, what general advantage does catkin bring, besides generating messages inside users directory? Currently I do not see any other big advantage compared to rosbuild. But perhaps I’m blind, so please help to see! ;-)

One more thing which I’m not quite sure about: is catkin added as a new method to build ros packages or shall it completely replace rosbuild? Currently both seems to be supported somehow in the documentation.

Regards,

Christian

Reference:

http://www.ros.org/wiki/ROS/Tutorials/CreatingMsgAndSrv


_______________________________________________
ros-users mailing list
ros-users@code.ros.org
https://code.ros.org/mailman/listinfo/ros-users