Comments on barriers to learning ROS

asked 2016-08-17 15:34:50 -0500

Keithicus gravatar image

I began using ROS about 4 months ago and am just now getting the hang of it. As i look back on how confused I was, I've noticed a few key things that made it very difficult for me to learn ROS. I'm not sure where the appropriate place to leave comments is, so dropping them here.

ROS is shackled to its past ROS has grown tremendously thanks to a large, active user base. However, with that growth it has retained some relics from the past that - i believe - should never be presented to a novice, entry level user. A stark example is the choice between rosbuild and catkin. I chose to go the catkin way, and thankfully that was the right choice for the simple tasks of an entry level user. However, being presented that choice lead to early confusion, required research, and ultimately left me unsure of my path from the start. I had similar confusion over how to choose the correct version of ROS to pair with gazebo, which is no longer an issue because gazebo is automatically installed when using the ROS deb.

Tutorials focus on writing code too early One of ROS's most lauded strengths is its ever growing library of open source code. However, from the beginning the tutorials focus on writing your own code rather than using the existing library. From what I've seen many entry level users want to use ROS libraries to control a simulated, ROS ready, or custom robot. This usually involves piecing together packages with launch files, much more so than writing new packages/nodes. However, there is little to no focus on launch files in the beginner ROS tutorials.

Its difficult to figure out how to set a node's parameters When you rely on existing packages, much of what you do involves figuring out how to use them, and much of that is figuring out how to set parameters. For many common packages, the available parameters and their acceptable values are not well documented. If you're lucky there's info on the wiki, or maybe an example launch file. But by and large the only way to figure out what parameters are available and how they are used is to start digging through code. Imagine learning linux commands with no man pages and no -h or --help. I recognize this is more the responsibility of the package developer, but I believe documentation is an important aspect to making code accessible to a larger community with varying backgrounds and skill sets.

This is coming from an engineer, not a software developer. Perhaps these issues are trivial to others, but just thought i'd offer my perspective.

edit retag flag offensive close merge delete


I agree learning ROS is infuriating unless you are guided by someone in the know who explains the ins-and-outs in the context of a concrete project. The online tutorials are anemic. Gentle introduction to ros is good as a first book as a conceptual overview, but not enough. Not sure any books are!

neuronet gravatar image neuronet  ( 2016-08-17 19:51:19 -0500 )edit

That said, this isn't really a question maybe a blog post or something. Would be nice if we could turn it into something concrete for hobbyists struggling with ROS, a guide for the perplexed type thing (still me: scientist by day, struggling with ROS at night ready to rage quit every third day).

neuronet gravatar image neuronet  ( 2016-08-17 19:52:53 -0500 )edit

I just started to learn ROS..I found it very hard especially the CMake file and package.xml. I don't understand what to add (e.g. message_generation dependency etc). I don't know how not to miss any of those. Do you have any suggestions on learning ROS?

alienmon gravatar image alienmon  ( 2016-08-17 22:15:51 -0500 )edit

Lastly, please check my profile and help to answer some of my questions if you want to

alienmon gravatar image alienmon  ( 2016-08-17 22:16:23 -0500 )edit

Alienmon: the free online book is where I would recommend everyone to start:

neuronet gravatar image neuronet  ( 2016-08-18 09:11:57 -0500 )edit

I think it might be good to bring up these issues on the new forum,, rather than have it just be a one-shot thing on a Q&A site. There needs to be a lot more open discussion on the overall health of ROS and what specific things can be addressed.

jdlangs gravatar image jdlangs  ( 2016-08-18 11:17:10 -0500 )edit

@neuronet agreed this isnt a question better suited for a different medium, and i think is it, thanks for the tip @jdlangs! Didnt even know this existed.

Keithicus gravatar image Keithicus  ( 2016-10-28 11:27:07 -0500 )edit

@alienmon been away from ROS for a while and just saw this comment. I'll take a look at your posts and see if I can help, but my knowledge is about as deep as a kiddie pool so might not have much to offer.

Keithicus gravatar image Keithicus  ( 2016-10-28 11:29:26 -0500 )edit