<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">Hello Christian,<br>
<br>
thanks for taking the time to give detailed feedback.<br>
<br>
there is documentation that maybe answer some of your more general
questions here:<br>
<br>
<a class="moz-txt-link-freetext" href="http://ros.org/wiki/catkin">http://ros.org/wiki/catkin</a><br>
<a class="moz-txt-link-freetext" href="http://ros.org/wiki/catkin_or_rosbuild">http://ros.org/wiki/catkin_or_rosbuild</a><br>
<br>
> Now instead of a
usability improvement so that it automatically looks <br>
> for files inside the msg/srv directory, you have to specify
which directory<br>
> the files reside
in, each message and additionally the dependency for them.<br>
<br>
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).<br>
<br>
> Also you
have to specify each dependency of the package,<br>
> additionally to the
dependencies inside the package.xml <br>
> where you have to also add
some lines for generating messages.<br>
<br>
Why you currently have to state dependencies multiple times is
explained somewhat here:<br>
<a class="moz-txt-link-freetext" href="http://ros.org/wiki/catkin/conceptual_overview#Dependency_Management">http://ros.org/wiki/catkin/conceptual_overview#Dependency_Management</a><br>
but possibly the number of places dependency have to be stated
could be reduced. <br>
Your feedback on this is thankfully noted, it helps to know what
users think.<br>
<br>
> Additionally
the fact that I have to change to the catkin workspace<br>
> directory to
build one package really annoys me, please make some<br>
> script which
builds from any package directory or anywhere for the current
workspace.<br>
<br>
You can create a ticket for catkin on github to discuss what you
need, there is already one going into that direction:<br>
<a class="moz-txt-link-freetext" href="https://github.com/ros/catkin/issues/294">https://github.com/ros/catkin/issues/294</a><br>
Though since some concepts in catkin are very different to
rosbuild, it is not trivial to make catkin behave too similar to
rosbuild.<br>
<br>
Regarding the support for new programming languages, maybe that
can better be discussed in the Buildsystem SIG:<br>
<cite>groups.google.com/group/<b>ros</b>-<b>sig</b>-<b>buildsystem</b></cite><br>
<br>
cheers,<br>
Thibault<br>
<br>
<br>
<br>
On 08.01.2013 11:50, Christian Holl wrote:<br>
</div>
<blockquote
cite="mid:CAOO-Tt0meQaB4a5EouY_G_85wow65-bTvoaW_tkj3Rnmjgqw_A@mail.gmail.com"
type="cite">
<p style="margin-bottom:0cm" lang="en-GB">Hi,</p>
<p style="margin-bottom:0cm" lang="en-GB">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… <br>
</p>
<p style="margin-bottom:0cm" lang="en-GB">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.</p>
<p style="margin-bottom:0cm" lang="en-GB">Now to the
critics.</p>
<p style="margin-bottom:0cm" lang="en-GB">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.</p>
<p style="margin-bottom:0cm" lang="en-GB">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.</p>
<p style="margin-bottom:0cm" lang="en-GB">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. <br>
</p>
<p style="margin-bottom:0cm"><span lang="en-GB">Now
to the general usability when creating a </span><span
lang="en-GB">package.</span></p>
<p style="margin-bottom:0cm" lang="en-GB">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.<br>
</p>
<p style="margin-bottom:0cm" lang="en-GB">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.<br>
</p>
<p style="margin-bottom:0cm" lang="en-GB">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! ;-)</p>
<p style="margin-bottom:0cm" lang="en-GB">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.</p>
<p style="margin-bottom:0cm" lang="en-GB">Regards,</p>
<p style="margin-bottom:0cm" lang="en-GB">Christian
</p>
<p style="margin-bottom:0cm" lang="en-GB">Reference:</p>
<font color="#000080"><span lang="zxx"><u><a
moz-do-not-send="true"
href="http://www.ros.org/wiki/ROS/Tutorials/CreatingMsgAndSrv"
target="_blank"><font color="#000080">h</font>ttp://www.ros.org/wiki/ROS/Tutorials/CreatingMsgAndSrv</a></u></span></font><span
lang="en-GB"></span><br>
<span
style="font-size:x-small;font-family:arial,helvetica,sans-serif;color:rgb(128,128,128)"></span><br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
ros-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:ros-users@code.ros.org">ros-users@code.ros.org</a>
<a class="moz-txt-link-freetext" href="https://code.ros.org/mailman/listinfo/ros-users">https://code.ros.org/mailman/listinfo/ros-users</a>
</pre>
</blockquote>
<br>
</body>
</html>