What role does ROS play in PX4-Autopilot


I am new to PX4-Autopilot project, and would like to get a clearer picture of the key components in this project.

I see installation guide for simulation setup (SITL/Gazebo/ROS on Ubuntu), and I see Firmware code uses uORB messaging between threads/tasks, which is similar to ROS publisher/subscriber mechanism. Does ROS actually exists in PX4-Autopilot firmware? Or ROS is only needed in SITL for simulation?

Is there any article/docs explaining the ROS roles in PX4-Autopilot project?