이런 분들이 찾고 있어요
이 레슨과 관련된 학습 키워드
코드를 읽고 설명하면, 합격합니다
이 레슨과 관련된 학습 키워드
AI 로보틱스 & Embodied AI — 물리 세계의 지능 → 기초
ROS 2 서비스(동기 요청-응답)와 액션(비동기 피드백+취소) 통신 패턴을 학습합니다.
ROS 2의 토픽(Topic)은 센서 데이터처럼 연속적으로 흐르는 데이터에 적합합니다. 하지만 "현재 배터리 잔량을 알려줘"처럼 한 번의 질문에 한 번의 답이 필요한 경우, 토픽은 비효율적입니다.
서비스(Service)는 이런 동기적 요청-응답 패턴을 위해 존재합니다. 클라이언트가 요청을 보내고, 서버가 처리한 뒤 결과를 반환합니다.
그런데 "로봇 팔을 목표 위치로 이동시켜"처럼 시간이 오래 걸리는 작업은 어떨까요? 서비스로 보내면 응답이 올 때까지 기다려야 하고, 진행 상황을 알 수 없으며, 중간에 취소할 수도 없습니다.
액션(Action)은 이 문제를 해결합니다. 목표를 보내고, 중간에 피드백(feedback)을 받으며, 필요하면 취소(cancel)할 수 있습니다. 이번 레슨에서 서비스와 액션의 원리, 구현, 사용 판단 기준을 모두 다룹니다.
오늘은 로스투의 세 가지 통신 방법을 비교해볼게요.
그림 왼쪽을 보세요. 토픽은 단방향 스트리밍이에요.
퍼블리셔가 메시지를 보내면 서브스크라이버가 받아요.
센서 데이터처럼 계속 흐르는 정보에 적합해요.
하지만 "배터리 얼마야?"라고 한 번 묻고 답을 받으려면 토픽은 비효율적이에요.
그림 가운데를 보세요. 서비스는 동기 요청-리스폰스 패턴이에요.
클라이언트가 리퀘스트를 보내면 서버가 처리하고 리스폰스를 돌려줘요.
배터리 잔량 조회나 파라미터 설정 같은 짧은 작업에 딱이에요.
그런데 서비스는 응답 올 때까지 기다려야 해서, 오래 걸리면 전체 시스템이 멈춰요.
그림 오른쪽 액션을 보세요. 골을 보내고 피드백을 계속 받아요.
네비게이션처럼 몇 초에서 몇 분 걸리는 작업에 필수예요.
중간에 "지금 몇 퍼센트 진행됐어?"라는 피드백이 스트리밍돼요.
게다가 프리엠트, 즉 중간 취소도 가능해요.
아래쪽 요약을 보면, 단순 스트리밍은 토픽, 짧은 질의는 서비스예요.
장기 작업에 진행 상황과 취소가 필요하면 반드시 액션을 써야 해요.
이제 각 통신 방법을 하나씩 깊이 파볼게요.
먼저 서비스부터 시작해서 액션까지 완전히 마스터하는 게 오늘 목표예요.
그림에서 화살표 방향이 데이터 흐름이니까 잘 기억해두세요.
토픽은 단방향, 서비스는 양방향, 액션은 양방향에 피드백까지 있어요.
이 세 가지를 상황에 맞게 조합하는 게 로스투 설계의 핵심이에요.