Skip to main content

Chapter 1: Learning Objectives

ROS 2 Basics (Nodes, Topics, Services)

Generated by: learning-objectives skill Date: 2025-11-30 Alignment: Bloom's Taxonomy (Levels 1-3: Remember → Understand → Apply)


Level 1: Remember

Students will be able to define and list key ROS 2 concepts

  • Define a ROS 2 node

    • What is a node?
    • How does it fit in the ROS 2 graph?
    • Example: hello_node publishes "Hello, ROS 2!" every second
  • List the basic communication patterns in ROS 2

    • Publication/Subscription (topics)
    • Service Call/Response
    • Actions (mentioned for future)
  • Recall ROS 2 command-line tools

    • ros2 run (execute a node)
    • ros2 topic (interact with topics)
    • ros2 service (interact with services)
    • ros2 node (get node information)

Level 2: Understand

Students will be able to explain core concepts and how they interact

  • Explain how the ROS 2 graph works

    • Nodes as independent processes
    • Topics as communication channels
    • Subscribers and publishers
    • Message flow: Publisher → Topic → Subscribers
    • Assessment: Can students draw a simple ROS 2 graph?
  • Describe pub/sub communication pattern

    • Why use publish/subscribe?
    • One-to-many communication
    • Decoupled publishers and subscribers
    • Topic names and message types
    • QoS (Quality of Service) settings (introduced but not deep)
    • Assessment: Students explain pub/sub vs client/server
  • Describe service communication pattern

    • Request/response synchronous communication
    • When to use services vs topics
    • Service names and interface types
    • Service server (provider) and client (requester)
    • Assessment: Students distinguish services from topics
  • Explain how rclpy (ROS 2 Python library) works

    • Node creation and initialization
    • Publisher and subscriber creation
    • Callback functions and event handling
    • Spinning and event loop
    • Assessment: Students trace code execution through rclpy

Level 3: Apply

Students will be able to use knowledge to create and run ROS 2 programs

  • Create a simple ROS 2 publisher node in Python

    • Use rclpy.Node as base class
    • Create publisher with create_publisher()
    • Use timer to periodically publish messages
    • Implement timer_callback()
    • Run and verify with ros2 topic echo
    • Assessment: Exercise 1 - Students create modified hello_node
  • Create a simple ROS 2 subscriber node in Python

    • Create subscriber with create_subscription()
    • Implement message callback function
    • Process received messages
    • Run alongside publisher and verify reception
    • Assessment: Exercise 2 - Students create subscriber to echo published messages
  • Create a ROS 2 service client and server in Python

    • Implement service server with create_service()
    • Implement service callback to handle requests
    • Create service client with create_client()
    • Send service request and process response
    • Run both and test synchronous communication
    • Assessment: Exercise 3 - Students create simple math service (add two numbers)
  • Use command-line tools to interact with running ROS 2 systems

    • List and inspect nodes: ros2 node list, ros2 node info
    • List and inspect topics: ros2 topic list, ros2 topic info, ros2 topic echo
    • Call services: ros2 service call
    • View ROS 2 graph: rqt_graph
    • Assessment: Students debug a running system using CLI tools

Assessment Strategy

ObjectiveAssessment MethodSuccess Criteria
Define ROS 2 conceptsQuiz/flashcards100% recall
Explain communication patternsShort answer essayClear, logical explanation
Create publisher nodeHands-on exerciseCode builds, runs, publishes correctly
Create subscriber nodeHands-on exerciseReceives and logs messages
Create service pairHands-on exerciseRequest/response works, values correct
Use CLI toolsPractical debugging taskCorrectly diagnoses and troubleshoots

Learning Progression

Concept Introduction

Code Example (read & understand)

Guided Exercise (with scaffolding)

Independent Exercise (minimal help)

Challenge Exercise (extend & combine)

Prerequisites

Before starting Chapter 1, students should:

  • Have ROS 2 Humble installed
  • Understand basic Python (variables, functions, classes)
  • Be comfortable with Linux terminal
  • Have completed textbook introduction

Bloom's Taxonomy Mapping

Chapter 1: ROS 2 Basics
├── Level 1 (Remember): 3 objectives
│ └── Key ROS 2 concepts and tools
├── Level 2 (Understand): 4 objectives
│ └── How pub/sub and services work
├── Level 3 (Apply): 4 objectives
│ └── Create working ROS 2 programs
└── Levels 4-6 (Analyze, Evaluate, Create)
└── Covered in Chapters 2-3

Outcomes by Section

Section 1: What is ROS 2?

  • Bloom Level: Remember, Understand
  • Objectives: 1.1 (define node), 1.2 (list patterns), 2.1 (explain graph)
  • Activities: Lecture, code walkthrough, graph visualization

Section 2: Nodes and the Graph

  • Bloom Level: Understand, Apply
  • Objectives: 1.3 (recall tools), 2.1 (explain graph), 3.1 (create publisher)
  • Activities: Code example, hands-on exercise, CLI exploration

Section 3: Topics - Publish and Subscribe

  • Bloom Level: Understand, Apply
  • Objectives: 2.2 (describe pub/sub), 3.2 (create subscriber), 3.4 (use CLI)
  • Activities: Code example, two-node system, exercises

Section 4: Services - Request and Response

  • Bloom Level: Understand, Apply
  • Objectives: 2.3 (describe services), 3.3 (create service pair)
  • Activities: Code example, synchronous communication, exercises

Notes for Content Authors

  1. Scaffolding: Each exercise builds on previous code examples
  2. Clarity: Use simple language; define technical terms
  3. Code Quality: All examples must be tested and run successfully
  4. Visuals: Include ROS 2 graph diagrams showing node/topic/service relationships
  5. Challenges: Extend exercises for advanced learners
  6. Assessment: Provide clear success criteria for each objective


Status: Ready for content creation Skills Used: learning-objectives Output: This file + exercises.md (with solutions)