Демонстрация примера
В одном терминале запускаем сцену, rviz, визуализатор машины состояний:
ros2 launch lesson_08 all.launch.py
Во втором терминале запускаем управление логикой аппарата:
ros2 launch lesson_08 logic.launch.py
Во третьем окне рекомендую запустить rqt:
rqt
Окно rqt

Обратите внимание на нижнюю часть окна, там вызываются сервис.

# ros2_ws/src/lesson_08/lesson_08/state_machine/Controller.py
self.create_service(SetBool, 'start_from_service', self.__start_server_callback)
#...
def __start_server_callback(self, request, response):
self.__start = request.data
response.success = True
return response