새소식

로봇,ROS,SLAM

[ROS2] ROS2 action 알아보기

  • -

ROS에서 실시간으로 데이터를 주고 받는 방법

- service

- topic 

- action

 

Action은 ROS2의 커뮤니케이션 유형 중 하나이며, 장기 실행 작업을 위한 것입니다.

action은 goal, feedback, 그리고 result 세부분으로 구성됩니다. 

 

Action은 topic과 service를 기반으로 구축됩니다. action의 기능은 service와 유사하지만, action은 선점이 가능합니다 (즉, 실행 중 취소할 수 있음). 또한 단일 응답을 반환하는 service와 달리 꾸준한 feedback을 제공합니다. 

 

Action은 publisher-subcriber 모델과 비슷한 방식으로 client-server 모델을 사용합니다. 

"Action client" 노드는 목표를 "Action server" 노드로 보내고, 이 노드는 목표를 확인하고 피드백 스트림과 결과를 반환합니다.

 

 

즉, Action은 Topic과 Service가 섞여있는 데이터 송수신 방법이다. 

 

 

그러면 turtlesim에서 action 예제를 사용해보자. 

 

먼저 ros2 run turtlesim turtlesim_node로 turtlesim부터 실행 

 

action list 확인 

 

 

입축력 타입 확인 - interface show

 

Action의 목표를 지정해주기 - send_goal 

 

ros2 action send_goal <action_name> <action_type> <goal_request>

 

 

  • action_name: 액션 서버의 이름
  • action_type: 액션 메시지 타입
  • goal_request: 클라이언트가 서버에 보낼 목표(goal) 값. JSON 형식으로 작성되며, 액션 메시지의 Goal 필드와 일치해야 함

 

 

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

 

 

결과 

 

 

 

키보드로 turtle 조작하기 

2개의 노드를 실행한다. 

 

 

 

 

 

 

 

 

'로봇,ROS,SLAM' 카테고리의 다른 글

ROS가 뭘까?  (0) 2025.01.14
[ROSA] ROSA로 turtlesim 작동시키기  (0) 2025.01.08
[ROS2] ROS2 topic 알아보기  (0) 2025.01.08
[ROS2] ROS2 service 알아보기  (0) 2025.01.08
[ROS2] Turtlesim을 통해 ROS2 기초 명령어 익히기  (0) 2025.01.07
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.