ROS Standards: do they exist even as a recommendation?

I have been going through ROS basics in 5 days and I have a simple question does ROS have recommended standards ? I have been taking my time, I’m under no time constraints whatsoever so I’ve been playing around changing where I can place things such as the init_node, creating my publisher, service and so on. I have found that in most cases it doesn’t matter, is it up to me to decide what I like. Are standards ever introduced ? Even a simple launch file seems to very from person to person. (I’m a curious person I can’t help myself if I’m learning It’s time well spent but I will try to keep moving forward.) So for now I have started to define my own standards.

Hi @hskramer,

Which specific standards are you talking about? ROS does not restrict how you do some things, but things have to be defined and created in a certain way. For example:

  • You need to create your .launch files with a certain extension and inside a “launch” folder.
  • Your custom messages and services have to be defined in a certain way and put in specific folders.
  • When you define a custom service or action, certain objects are automatically available by convention.

As you go along the course, you will see more of these standards, as well as things you can do as you wish.

What you have described are requirements as opposed to standards. Once I meet the requirements I’m free to write the internals of the launch file anyway I want. Python has a style guide PEP 8 in their they talk about number of spaces, blank lines naming conventions and so on. The python code I see written in here follows that style. Anyway don’t want to get to bogged downed in this, you answered my question. Time to move on looking forward to seeing what comes next.