[Documentation] [TitleIndex] [WordIndex

ROS Best Practices

See also Patterns page.


ROS was designed to be maximally flexible, starting with the mantra, "we don't wrap your main()." This flexibility has surely contributed to the growth of the user and developer community, allowing ROS to be used on a wide variety of platforms, in myriad ways.

But, with a few years under our collective belt, the community has matured to a point where "best practices" are in demand. We're not talking about standards, but rather statements of how best to achieve common tasks with ROS. Best practices are advice to developers on how to design, build, and configure ROS systems, with the goal of improving efficiency, interoperability, and shared understanding of those systems.

How to describe a best practice

One way to state a best practice is via a ROS Enhancement Proposal (REP). An informational REP can give guidelines and prescribe preferred techniques. In the long term, we expect established best practices to be described in REPs.

But a best practice can be described in other, less formal, ways. Feel free to write up your own ideas for best practices in this wiki or elsewhere, and add links below so that others can find that content.

Existing best practices

Known best practices are indexed here. Please add to this list.

Needed best practices

Is there some aspect of system design or configuration that you want guidance on? Some existing system that you'd like to emulate but isn't well-documented? Please add your requests here.

See something in the list below that you can help with? Write it up, link it here, and let ros-users know about it. If you can only address part of an item on the list, that's fine; sometimes the initial question can be ill-posed or vague.

Update: a number of these questions and some others have been posed on answers.ros.org with the best_practices tag. Some have answers, others still do not. Please contribute answers where you can.

2024-04-06 12:15