On Wed, Mar 9, 2016 at 7:02 PM, Geoffrey Biggs <gbi...@killbots.net> wrote:
> I think that to answer this question, you need to benchmark the workload of each approach. The approach with the lesser workload is probably the best to promote first.
>
> Another way to choose: Which has the lesser learning curve for new users of ROS? If you are targeting people who already have experience with tools like CMake or make, then they will rapidly get up to speed with using ROS that way. If they are new to development tools (or just development) in general, then either approach us going to require some learning, and so probably ament would be easier since it has more native support for RIS concepts like message types. So who are you targeting?
That is a great point, and something that William has brought up when
we've talked about this issue. In the very early days of ROS, we
decided to use CMake but wanted to hide the `mkdir build; cd build;
cmake ..; make` process from people for whom it was unfamiliar. That
was pretty much what rosbuild started out doing. Then it grew to do a
lot of stuff magicallly for you.
catkin is a huge improvement over rosbuild in that it uses CMake in a
normal way and does much less magic. That's a good thing, I think, but
it's hiding less from the user, forcing you to at least get familiar
with CMake.
So I wonder: for the novice user, is catkin easier or harder than just
CMake? Using catkin, I still have to write CMake, and I also have to
write package.xml, and I have to call some catkin-specific macros.
Ignore catkin_create_pkg; if the ease-of-use comes from a helper to
generate template build files, we could do that as a standalone tool
that has nothing to do with ROS.
I think having the information up front and obvious would do a lot. For example, the first paragraph cloud be something like
"we have two approaches. <link>approach 1</link> uses the default ros build system. Use this if you are a) new to robotics b) have no pre-existing robotics software c) are interested in switching your current build system into the ros ecosystem. <link>approach 2</link> is designed for users who wish to include ros into an existing build infrastructure."
I can tell you that these days it is the single most common
criticism that I hear when asking people from any kind of organization
what they would change about ROS: don't make me use your build system
/ directory layout / workflow.
Thought I'd chime in from a workplace.Our Catkin UsersMost of our young guys coming in, don't really know CMake. CMake itself, is quite complex. It can also be a nightmare because there is no systematically standardised approaches for things, e.g. find_package. From my experience, and I also suspect that in most teams, you probably only have the odd person who is a CMake (insert any other fairly popular build system here) expert.Back to the young guys - they pick up catkin with little complaint. Actually, apart from the rosbuild -> catkin transition, I've had exactly zero complaints except for someone trying to do really fancy things to get the python side of things to work with existing but not debianised python packages (this could use some work). Bill, I believe your rant was the last rant about catkin we had in our lab :) This is pretty awesome as it saves me alot of time training people. It actually takes most of them a year or so to even start wondering about build systems and start puzzling about the finer details of cmake.So there are two cases that catkin has done a very big favour in enabling:
- new users & non-experts in build systems (both typically have no interest or need of becoming experts)
- large projects
Ros Users vs Ros DevelopersI would argue that there are already very many ros users (as opposed to ros developers). These people use catkin so they can build their own applications with a minimum of fuss but aren't interested in contributing to the ros ecosystem/community. We even have non-ros teams using catkin to build entirely non-ros software. These are different to the ros users (who just can't/dont wish to catkin) that are being discussed. Subsequently, I think the notion of ros-users and ros-developers is a little blurry.CMake/Pkg-Config ExpertsAnyone who can use CMake/pkg-config directly will be already at a much higher level of knowledge than most roboticists. As I said above, most teams actually don't need everyone to be a cmake expert. It just takes one, and he usually writes scripts/modules/templates for the others (sounds a little like catkin?).Responses
(a) Tell people to use ROS 2 by creating a ROS 2 package with a
package.xml and calling ament to build it?
This has been a big success in the past and it is the least effort approach to enabling the majority of roboticists up to speed and start doing robotics. I would be wary of changing that.Having said that, technical support and a link to another page which lets the CMake/pkg-config/Visual Studio experts use ROS packages independently has to be considered a first class citizen in terms of maintenance and support if you wish to enable pickup of ROS beyond its current boundaries.
(b) Tell people to use ROS 2 by using CMake (or make&pkg-config) in
the normal way, without mentioning package.xml or ament?
This is going to force alot of people to learn much more complicated build systems. To me, it is analogous to telling an engineer he should learn how to use the extremely obtuse posix api for shared memory, filesystems, string handling rather than using something like boost equivalents that wrap the complexity of the posix api. They will consume alot of time doing something they don't need to be doing.ROS should be about educating people in build systems, it is about enabling them to do robotics ...
Note, if you handle a) properly then you are enabling both direct and indirect users of ROS. You are not holding anyone back.(c) Other?Is there really any alternative for complex robotics systems on linux/apple/win operating systems? If there is, use that. That's better than going back to raw cmake/pkg-config. I don't know of any that come sufficiently close to catkin/ament though. So that is a massive enabler. Stick to it like superglue.Daniel.
On 12 March 2016 at 22:30, Daniel Stonier <d.st...@gmail.com> wrote:Having said that, technical support and a link to another page which lets the CMake/pkg-config/Visual Studio experts use ROS packages independently has to be considered a first class citizen in terms of maintenance and support if you wish to enable pickup of ROS beyond its current boundaries.
+1
Mit freundlichen Grüßen / Best regards
Dr.-Ing. Ingo Luetkebohle
Software Architecture and Analysis (CR/AEA2)
Tel. +49(711)811-12248 | Fax +49(711)811-0 |
Ingo.Lue...@de.bosch.com
--
--
You received this message because you are subscribed to the Google Groups "ROS SIG NG ROS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ros-sig-ng-ro...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "ROS SIG NG ROS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ros-sig-ng-ro...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
I think for new users it is most helpful to describe one, and only one, way to create a ROS project. Multiple options lead to confusion and wasted time learning unnecessary things. So I recommend making it very clear that the ROS way is the way to go, with the information about using pkg-config and raw cmake (which is also very important for those who need it) being mentioned at more of a footnote, or "for people with special needs" level.
Acorn
I think for new users it is most helpful to describe one, and only one, way to create a ROS project. Multiple options lead to confusion and wasted time learning unnecessary things. So I recommend making it very clear that the ROS way is the way to go, with the information about using pkg-config and raw cmake (which is also very important for those who need it) being mentioned at more of a footnote, or "for people with special needs" level.
Acorn
On Mar 16, 2016 6:17 PM, "Brian Gerkey" <ger...@osrfoundation.org> wrote:Thanks for all the great feedback! I must admit to being surprised by
the extent of support for promoting the "ROS way" of doing things. I
had incorrectly assumed that much of this list (an experienced group
of ROS hackers) was reluctantly using rosbuild/catkin/ament only
because there wasn't a good alternative. Lesson learned.