Use ROS when developing robotics applications that require modularity, hardware abstraction and a robust set of tools and libraries for integrating algorithms, sensors and control systems. ROS 1 is ideal for prototyping and research-based projects, while ROS 2 is better for multi-robot systems that require real-time performance or industrial and commercial applications of scale.