References#

Lecture 10

ENPM605 – L10: Parameters, Custom Interfaces, Services & Actions

Covers ROS 2 parameters (declaration, reading, descriptors with range constraints, runtime parameter callbacks, YAML parameter files, CLI tools), custom interface definitions (.msg, .srv, .action files, CMake build configuration, interface verification), services (request/response model, server implementation, asynchronous and synchronous clients, deadlock avoidance), and actions (goal/feedback/result model, server with cancellation support, asynchronous client with feedback monitoring, CLI tools, and a decision guide for choosing the right communication pattern).

ROS 2 Official Documentation
Using Parameters (Python)

ROS 2 Jazzy: Parameters

Tutorial for declaring, reading, and using parameters in a Python class-based node.

https://docs.ros.org/en/jazzy/Tutorials/Beginner-Client-Libraries/Using-Parameters-In-A-Class-Python.html
About Parameters

ROS 2 Parameter Concepts

Conceptual overview of parameters: types, descriptors, constraints, and the parameter service API.

https://docs.ros.org/en/jazzy/Concepts/Basic/About-Parameters.html
Writing a Service and Client (Python)

ROS 2 Jazzy: Services

Step-by-step tutorial for creating a service server and client in Python.

https://docs.ros.org/en/jazzy/Tutorials/Beginner-Client-Libraries/Writing-A-Simple-Py-Service-And-Client.html
Understanding Services

ROS 2 Service Concepts

CLI-based introduction to services, including listing, calling, and inspecting service types.

https://docs.ros.org/en/jazzy/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Services/Understanding-ROS2-Services.html
Writing an Action Server and Client (Python)

ROS 2 Jazzy: Actions

Complete tutorial covering action server implementation, client usage, feedback, and cancellation.

https://docs.ros.org/en/jazzy/Tutorials/Intermediate/Writing-an-Action-Server-Client/Py.html
Understanding Actions

ROS 2 Action Concepts

CLI-based introduction to the action model, goal states, feedback topics, and introspection commands.

https://docs.ros.org/en/jazzy/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Actions/Understanding-ROS2-Actions.html
Creating Custom Interfaces

ROS 2 Jazzy: Custom Interfaces

Tutorial for creating .msg, .srv, and .action files with CMake and rosidl_generate_interfaces.

https://docs.ros.org/en/jazzy/Tutorials/Beginner-Client-Libraries/Custom-ROS2-Interfaces.html
Implementing Custom Interfaces

ROS 2 Jazzy: Using Custom Interfaces

Advanced guide for using custom interfaces defined in the same package or a separate package.

https://docs.ros.org/en/jazzy/Tutorials/Beginner-Client-Libraries/Single-Package-Define-And-Use-Interface.html
External Tutorials
Articulated Robotics: ROS 2 Services

Articulated Robotics

Video tutorials covering ROS 2 services and actions with practical robot examples and demonstrations.

https://articulatedrobotics.xyz/category/ros2-tutorials/
The Construct: ROS 2 Services & Actions

The Construct

Browser-based interactive environment with guided exercises on services, actions, and custom interfaces.

https://www.theconstructsim.com/ros2-for-beginners/
Robotics Back-End: ROS 2 Tutorials

Robotics Back-End

Practical blog posts with complete code examples for services, actions, parameters, and custom interfaces.

https://roboticsbackend.com/category/ros2/
Recommended Reading
Anis Koubaa (Ed.)

Robot Operating System (ROS): The Complete Reference (Vol. 1-7)

Relevant chapters cover ROS 2 services, actions, and the interface generation pipeline.

Open Robotics

Programming Robots with ROS 2

Chapters on services, actions, and custom interfaces provide applied coverage of this lecture’s communication patterns.

Joseph, Cacace

Mastering ROS for Robotics Programming (3rd Edition)

Covers service/action design patterns, custom interface packages, and parameter management in production ROS 2 systems.

ROS 2 Design Articles

ROS 2 Design

Official design documents explaining the rationale behind the action protocol, parameter API, and interface definition language (IDL) used in ROS 2.

https://design.ros2.org/