<<Include(Menus/ROSGraphConcepts)>> <<TOC(3)>> == Overview == The ROS Master provides naming and registration services to the rest of the [[Nodes|nodes]] in the ROS system. It tracks publishers and subscribers to [[Topics|topics]] as well as [[Services|services]]. The role of the Master is to enable individual ROS nodes to locate one another. Once these nodes have located each other they communicate with each other peer-to-peer. The Master also provides the [[Parameter Server]]. The Master is most commonly run using the `roscore` command, which loads the ROS Master along with other essential components. == XMLRPC API == ''Advanced Users Only'' The ROS Master provides an XMLRPC-based API, which ROS client libraries, such as [[roscpp]] and [[rospy]], call to store and retrieve information. For a detailed API listing, please see the [[ROS/Master_API|Master API]] page. Most ROS users will not need to interact with this API directly. == Master Name Service Example == For instance, let's say we have two Nodes; a Camera node and an Image_viewer node. A typical sequence of events would start with Camera notifying the master that it wants to publish images on the topic "images": {{attachment:ROS_master_example_english_1.png}} [[attachment:ROS_master_example_english_1.dia|DIA version]] Now, Camera publishes images to the "images" topic, but nobody is subscribing to that topic yet so no data is actually sent. Now, Image_viewer wants to subscribe to the topic "images" to see if there's maybe some images there: {{attachment:ROS_master_example_english_2.png}} [[attachment:ROS_master_example_english_2.dia|DIA version]] Now that the topic "images" has both a publisher and a subscriber, the master node notifies Camera and Image_viewer about each others existence so that they can start transferring images to one another: {{attachment:ROS_master_example_english_3.png}} [[attachment:ROS_master_example_english_3.dia|DIA version]] == Implementation == In ROS 1.1, the implementation of the ROS Master is provided by the [[rosmaster]] package. Prior to this release, the Master was part of the [[rospy]] package.