[ros2] Action

찹쌀이네공부방·2024년 9월 17일
post-thumbnail

(민형기님 ros2 무료강의 정리 노트)

Action은 비동기적이고 장시간에 걸쳐 실행해야하는 것들을 처리하기 위한 통신 메커니즘이다. 장시간의 기준이 뭘까? 예를 들어, 센서를 통해 데이터를 얻는 것은 장시간이 아니라 단시간에 이뤄져야 한다. 반면, 특정 좌표로 로봇 팔을 움직이게 명령하는 것은 센서 데이터 처리 대비 장시간이다. 그 좌표까지 여러 경로를 통해 혹은, 좌표로 이동하기 전까지 다양한 작업을 처리해야 할 수 있기 때문이다. 우리는 이걸 장시간이라고 부르기로 한다.

Action은 아래와 같은 개요로 이뤄져 있다. 핵심은 사용자가 최종 의도한 행위의 Goal, 결과 Result, 현재의 상태를 알 수 있는 Feedback이라는 중간과정을 제공한다.

아래 명령어를 통해 실행해보면 구분자 --를 통해 Goal, Result, Feedback으로 구성되어 있음을 확인할 수 있다.

ros2 interface show turtlesim/action/RotateAbsolute


이제 Goal을 지정해보자. send_goal을 활용한다. 각도 3.14 radian만큼 거북이가 움직였음을 확인할 수 있다.

ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute "{theta: 3.14}"

profile
개발로그 적어두기.

0개의 댓글