Демонстрация примера

В одном терминале запускаем сцену, rviz, визуализатор машины состояний:

ros2 launch lesson_08 all.launch.py

Во втором терминале запускаем управление логикой аппарата:

ros2 launch lesson_08 logic.launch.py

Во третьем окне рекомендую запустить rqt:

rqt

Окно gazebo

Gazebo

Окно rviz

RVIZ

Окно smach_visualization

Окно 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