[ros-users] ROS Groovy, Catkin, Message Generation

Thibault Kruse kruset at in.tum.de
Tue Jan 8 12:54:42 UTC 2013


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 
> <http://www.ros.org/wiki/ROS/Tutorials/CreatingMsgAndSrv>_
>
>
> _______________________________________________
> ros-users mailing list
> ros-users at code.ros.org
> https://code.ros.org/mailman/listinfo/ros-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ros.org/pipermail/ros-users/attachments/20130108/25ade114/attachment-0004.html>


More information about the ros-users mailing list