Bird
Raised Fist0
ROSframework~5 mins

When to use services vs topics in ROS - Quick Revision & Key Differences

Choose your learning style10 modes available
Recall & Review
beginner
What is a ROS service?
A ROS service is a communication method where a node sends a request and waits for a reply. It is like making a phone call and waiting for an answer.
Click to reveal answer
beginner
What is a ROS topic?
A ROS topic is a way for nodes to send messages without expecting a reply. It is like broadcasting a radio message that anyone can listen to.
Click to reveal answer
intermediate
When should you use a ROS service instead of a topic?
Use a service when you need a clear request and response, like asking for data or commanding an action that needs confirmation.
Click to reveal answer
intermediate
When is it better to use a ROS topic?
Use a topic when you want to send continuous or repeated information to many nodes, like sensor data or status updates.
Click to reveal answer
beginner
Can ROS topics be used for two-way communication?
No, topics are one-way broadcasts. For two-way communication, use services which allow request and response.
Click to reveal answer
Which ROS communication method waits for a reply after sending a request?
AParameter
BTopic
CAction
DService
Which ROS communication is best for continuous sensor data streaming?
AService
BTopic
CParameter
DAction
If you want to command a robot to move and wait for confirmation, which should you use?
AService
BTopic
CParameter
DAction
Which ROS communication method allows multiple nodes to listen to the same data?
ATopic
BService
CParameter
DAction
Can a ROS topic be used for a request-response pattern?
AYes, always
BOnly with special nodes
CNo, topics are one-way
DOnly in ROS2
Explain in your own words when you would choose a ROS service over a topic.
Think about situations where you ask a question and wait for an answer.
You got /3 concepts.
    Describe a real-life example where using a ROS topic is better than a service.
    Imagine a radio station sending music to many listeners.
    You got /4 concepts.

      Practice

      (1/5)
      1. In ROS, when should you use a service instead of a topic?
      easy
      A. When you want to continuously stream sensor data.
      B. When you need a single request and a single response.
      C. When you want to broadcast messages to many nodes.
      D. When you want to log data over time.

      Solution

      1. Step 1: Understand service communication

        Services in ROS are designed for one-time request and reply interactions between nodes.
      2. Step 2: Compare with topic usage

        Topics are used for continuous data streaming or broadcasting messages to multiple subscribers.
      3. Final Answer:

        When you need a single request and a single response. -> Option B
      4. Quick Check:

        Service = single request-reply [OK]
      Hint: Services = one-time ask, Topics = ongoing talk [OK]
      Common Mistakes:
      • Using topics for single request-response needs
      • Using services for continuous data streaming
      • Confusing broadcast with one-time communication
      2. Which of the following is the correct syntax to define a ROS service client in Python?
      easy
      A. client = rospy.Subscriber('service_name', ServiceType, callback)
      B. client = rospy.Service('service_name', ServiceType)
      C. client = rospy.ServiceProxy('service_name', ServiceType)
      D. client = rospy.Publisher('service_name', ServiceType, queue_size=10)

      Solution

      1. Step 1: Recall ROS Python service client syntax

        The correct way to create a service client is using rospy.ServiceProxy with the service name and type.
      2. Step 2: Identify incorrect options

        rospy.Service defines a service server, rospy.Subscriber subscribes to topics, and rospy.Publisher publishes to topics.
      3. Final Answer:

        client = rospy.ServiceProxy('service_name', ServiceType) -> Option C
      4. Quick Check:

        Service client uses rospy.ServiceProxy [OK]
      Hint: Service client uses rospy.ServiceProxy() [OK]
      Common Mistakes:
      • Confusing service client with service server syntax
      • Using Subscriber or Publisher for services
      • Missing service type argument
      3. Given the following ROS Python code snippet, what will be printed?
      import rospy
      from std_srvs.srv import SetBool
      
      def call_service():
          rospy.wait_for_service('toggle_led')
          try:
              toggle_led = rospy.ServiceProxy('toggle_led', SetBool)
              response = toggle_led(True)
              print(response.success)
          except rospy.ServiceException as e:
              print('Service call failed:', e)
      
      call_service()
      medium
      A. True if the service call succeeds, otherwise an error message.
      B. Always prints False.
      C. SyntaxError due to missing import.
      D. No output because the service is not called.

      Solution

      1. Step 1: Analyze service call behavior

        The code waits for the 'toggle_led' service, then calls it with argument True, and prints the success field from the response.
      2. Step 2: Understand possible outputs

        If the service call succeeds, response.success will be True or False depending on service logic; if it fails, an exception message prints.
      3. Final Answer:

        True if the service call succeeds, otherwise an error message. -> Option A
      4. Quick Check:

        Service call prints success or error [OK]
      Hint: ServiceProxy call prints success field if no error [OK]
      Common Mistakes:
      • Assuming service call always returns False
      • Confusing service call with topic subscription
      • Ignoring exception handling
      4. You wrote a ROS node that uses a service client but it never receives a response. What is the most likely cause?
      medium
      A. The service server is not running or not advertised.
      B. The topic name is misspelled.
      C. The node is publishing to the wrong topic.
      D. The callback function is missing in the subscriber.

      Solution

      1. Step 1: Identify service client behavior

        A service client waits for a service server to be available and respond to requests.
      2. Step 2: Diagnose no response issue

        If no response arrives, the service server might not be running or the service name is incorrect, so the client cannot connect.
      3. Final Answer:

        The service server is not running or not advertised. -> Option A
      4. Quick Check:

        No response means server missing [OK]
      Hint: No service response? Check if server is running [OK]
      Common Mistakes:
      • Confusing service client with topic subscriber
      • Checking wrong topic instead of service
      • Ignoring service server status
      5. You want to control a robot arm to move to a specific position and wait for confirmation before sending the next command. Which ROS communication method should you use and why?
      hard
      A. Use a topic because continuous streaming of positions is required.
      B. Use a service because topics do not support multiple subscribers.
      C. Use a topic because services cannot send commands.
      D. Use a service because you need a request and a reply for each move command.

      Solution

      1. Step 1: Understand the control requirement

        The robot arm needs to receive a move command and confirm completion before the next command.
      2. Step 2: Match communication type to requirement

        Services provide a request-response pattern ideal for commands needing confirmation, unlike topics which are for continuous data streaming without guaranteed replies.
      3. Final Answer:

        Use a service because you need a request and a reply for each move command. -> Option D
      4. Quick Check:

        Command with confirmation = service [OK]
      Hint: Commands needing reply? Use services [OK]
      Common Mistakes:
      • Choosing topics for commands needing confirmation
      • Thinking services can't send commands
      • Confusing subscriber limits with communication type
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard