액션의 필요

로봇에게 "저기까지 가"라고 시켰다면, 도착했는지는 어떻게 알까?

화면을 누르면 다음 장으로 넘어갑니다

토픽으로는

보내고 나면 끝났는지 모릅니다

토픽(3강)은 한쪽 방향입니다. "저기까지 가"를 올려 보낼 수는 있지만, 로봇이 언제 도착했는지, 가다가 막혔는지는 돌아오지 않습니다.

서비스로는

응답 전까지는 깜깜합니다

서비스(7강)는 요청 한 번에 응답 한 번입니다. 일이 30초 걸리면 30초 동안 아무 소식이 없습니다. 중간에 "그만"이라고 말할 길도 없습니다.

바라는 것

시키고, 지켜보고, 멈추고

오래 걸리는 일을 시킬 때는 네 가지가 필요합니다. 목표를 보내고, 가는 동안 보고를 받고, 끝나면 결과를 받고, 필요하면 도중에 멈추게 하는 것입니다.

액션

이것을 묶은 대화법이 액션입니다

액션(action)은 ROS 2의 세 번째 대화법입니다. 목표를 보내는 쪽이 액션 클라이언트(action client), 일을 하며 보고하는 쪽이 액션 서버(action server)입니다. 토픽처럼 /turtle1/rotate_absolute 같은 이름이 있습니다.

이미 써 봤다

teleop의 글쇠 여덟 개가 액션이었습니다

turtle_teleop_key(2강)는 방향키 말고도 G, B, V, C, D, E, R, T를 받습니다. F를 둘러싼 이 글쇠는 거북이를 그 방향으로 돌리라는 목표를 보내고, F는 돌던 것을 취소합니다.

teleop 터미널의 안내 문구 "Use G|B|V|C|D|E|R|T keys to rotate to absolute orientations. 'F' to cancel a rotation."가 이것입니다.

어디에 쓰나

오래 걸리고 멈출 수 있어야 하는 일

로봇에서 액션이 가장 많이 쓰이는 곳은 이동입니다. 15강의 Nav2도 "목표 위치까지 가라"를 액션으로 받고, 가는 동안 남은 거리를 보고합니다.

오른쪽 영어 이름은 각 일에 쓰는 액션 타입입니다. 타입의 모양은 5편에서 봅니다.

다음 편

액션 하나 안에는 무엇이 오갈까요?

2편목표, 중간 보고, 결과 9강 목록