Summary | ROS2 II |
[ ROS2 ] ROS ๊ธฐ์ด II (Topic, Service, Action)
์ด์ ํฌ์คํธ์ ๋ด์ฉ์์๋ Node์ Package์ ๋ํด ๋ค๋ฃจ์๋ค. Node์ Package์ด ๋ฌด์์ธ์ง ๊ถ๊ธํ๋ค๋ฉด ํด๋น ํฌ์คํธ๋ฅผ ๋ฐฉ๋ฌธํ๊ธฐ ๋ฐ๋๋ค. ๋ณธ ํฌ์คํธ์์๋ ๋ฉ์์ง ํต์ ๋ฐฉ์ Topic, Service, Action์ ๋ํด ์์๋ณด์.
1๏ธโฃ Topic
ROS2 Topic
ROS2์์๋ ๋ชจ๋์ ๋ ธ๋๋ฅผ ๋ง์ด ๋ถํ ํจ์ผ๋ก์จ ๋ณต์กํ ์์คํ ์ ๋ง๋ค ์ ์๋ค. ์ด๋ Topic์ด Node ์ฌ์ด์ ๋ฐ์ดํฐ Message๊ฐ ์ค๊ฐ๋ ๊ธธ Bus ์ญํ ์ ํ๋ค.
์ ๋ฆฌํ์๋ฉด, Topic์ ๋น๋๊ธฐ์ ๋จ๋ฐฉํฅ ๋ฉ์์ง ์ก์์ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค. ์ด๋ msg ์ธํฐํ์ด์ค ํํ์ ๋ฉ์์ง๋ฅผ ์ก์ ํ๋ publisher์ ๋ฉ์์ง๋ฅผ ์์ ํ๋ subscriber๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ๊ณต์๋ฌธ์์ ๊ฒ์๋ ๋ค์์ gif๋ฅผ ํตํด Topic์ด ์ด๋ป๊ฒ ๋์ํ๋์ง ์์๋ณด์.
Topic์ ์ฌ๋ฌ Node์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ ์๊ณ , ์ฌ๋ฌ Node์๊ฒ ๋ฐ์ดํฐ ์ ์ก๋ ๊ฐ๋ฅํ๋ค.
์ด๋ฌํ ์ ๋๋ฌธ์ผ๊น? ROS ํ๋ก๊ทธ๋๋ฐ์ 70% ์ด์์ด Topic์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค๊ณ ํ๋ค. ๊ทธ๋งํผ ๋ฉ์์ง ํต์ ๋ฐฉ์ ์ค ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ด๊ณ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ค. ๋ํ, ๋น๋๊ธฐ์ฑ์ด๋ฉฐ ์ฐ์์ฑ์ด๋ผ๋ ์ฑ์ง์ ๊ฐ์ง๊ณ ์์ด ์ผ์ ๊ฐ ์ ์ก ๋ฐ ํญ์ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์์ผ ํ๋ ๋ถ๋ถ์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
Topic์ ๋ง๋ค ์ ์๋ ๋ค๋ฅธ ๋ช ๋ น์ด๋ค์ ๋ค์ ๊ธฐํ์ ์ ๋ฆฌํ๊ฒ ๋ค.
2๏ธโฃ Service
ROS2 Service
Service๋ ๋๊ธฐ์ ์๋ฐฉํฅ ๋ฉ์์ง ์ก์์ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค. ๋ชจํฐ on/off, ์๊ฐ์ ํํผ ๊ธฐ๋, ํ๋ผ๋ฏธํฐ service ๋ฑ ๋จ๋ฐ์ ์ด๊ณ ๋น ๋ฅธ ํต์ ์ด ์๊ตฌ๋ ๋ ๋ง์ด ์ฌ์ฉ๋๋ ๋ฉ์์ง ํต์ ๊ธฐ๋ฒ์ด๋ค.
์๋น์ค๋ฅผ ์์ฒญํ๋ Service Client
์ ์์ฒญ๋ฐ์ ์๋น์ค๋ฅผ ์ํํ ํ ์๋ตํ๋ Service Server
๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
์์ gif๋ฅผ ๋ณด๋ฉด ์ ์ ์๋ฏ์ด, ํ๋์ Service Server์๋ ์ฌ๋ฌ Client Node๊ฐ request
ํ ์ ์์ง๋ง Server๋ ๋์์ ์ฌ๋ฌ request
๋ฅผ ์ฒ๋ฆฌํ์ง๋ ๋ชปํ๋ค๋ ๊ฒ์ ๊ธฐ์ตํด์ผ ํ๋ค.
๐ Topic๊ณผ Service์ ์ฐจ์ด์
Topic๊ณผ Service๋ ์ธ๋ป ๋ณด๋ฉด ๋น์ทํด ๋ณด์ด์ง๋ง ๋ค๋ฅด๋ค.
Topic์ Publish
ํ๋ฉด ์ฌ๋ฌ Node๊ฐ Subscribe
๊ฐ๋ฅํ ๋ฐ๋ฉด, Service๋ request
๊ฐ ์จ ๋์์๋ง response
๋ฅผ ์ฃผ๋ 1:1์ ํต์ ๊ธฐ๋ฒ์ ๊ฐ์ง๊ณ ์๋ค๊ณ ํ ์ ์๋ค.
๋, Topic์ ๋๋ถ๋ถ ์ง์์ ์ผ๋ก publish๋ฅผ ์งํํ ์ ์์ง๋ง Service๋ ๋จ๋ฐ์ฑ์ ๊ฐ๊น๋ค๋ ์ ๋ ์ฐจ์ด์ ์ผ๋ก ๋ค ์ ์๋ค.
- ๋ถ๋ช ํ ์์ฒญ์ ์ฃผ์ฒด๊ฐ ์กด์ฌ, ๋น ๋ฅด๊ฒ ๋์ ์๋ฃ๋๋ ๊ฒฝ์ฐ โก๏ธ Service
- ๋ถํน์ ํ Node๊ฐ subscribe์ ๋์์ด ๋๋ฉฐ, ์ง์์ ์ผ๋ก ๋ฐ์ดํฐ ์ก์์ ์ผ์ด๋๋ ๊ฒฝ์ฐ โก๏ธ Topic
3๏ธโฃ Action
Action์ ํน์ง
Action Client๋ Action Server๊ฐ response
๋ฅผ ๋ณด๋ด๊ธฐ ์ ๊น์ง ๊ณ์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ , ๋ค๋ฅธ ์ผ์ ํ ์ ์๋ค. ๋ํ Action Client๋ request
๋ณด๋ธ ๋ค์๋ ์ง์์ ์ผ๋ก feedback
์ ๋ฐ์ ์ ์๋ค. ์ด๋, feedback์ ๋ฐ๋ค๊ณ ๋ญ๊ฐ๊ฐ ์๋ชป ๋์๊ฐ๊ณ ์๋ค๋ ๊ฒ์ ๊ฐ์งํ ๊ฒฝ์ฐ์ cancel
ํ ์๋ ์๋ค.
์ฌ๋ฌ request
๋ฅผ ๋์์ ์์
ํ๋ ๊ฑด ๋ณธ์ง์ ์ผ๋ก ๋ถ๊ฐํ์ง๋ง ํ๋ก๊ทธ๋๋ฐ์ ์ผ๋ก ํด๊ฒฐ์ด ๊ฐ๋ฅํ๋ค๋ ํน์ง์ ๊ฐ์ง๊ณ ์๋ค.
Action์ ์์
"Action = ๋ด๋น๊ฒ์ด์ ?"
Action์ ๋ด๋น๊ฒ์ด์ ์ ์๋ ์๋ฆฌ์ ์๋นํ ์ ์ฌํ๋ค.
๋ชฉ์ ์ง request
๋ฐ๊ณ , ๊ฒฝ๋ก๊ฒ์์ ๋ง์น๋ฉด ์๋ด๊ฐ ์์๋๋ค. ์ด์ ๋์ค์๋ ๋๋ก ์ํฉ์ ๊ณ ๋ คํ feedback
์ ๊ณ์ํด์ ์ ๊ณต๋ฐ๋๋ค. ๋ชฉ์ ์ง์ ๋์ฐฉํ๋ฉด ๊ฒฝ๋ก ์๋ด๋ฅผ ์ข
๋ฃํ๊ณ ๋ค์ request
๋๊ธฐํ๋ค.
โก๏ธ ์ค์ ๋ก ROS2์ ์์จ ์ฃผํ Nav2
ํ๋ก์ ํธ์์ Action์ ์ ๊ทน ํ์ฉํ๊ณ ์๋ค๊ณ ํ๋ค.
Next Post..
๋ค์ ํฌ์คํธ๋ DDS์ QoS์ ๋ํด ์ ๋ฆฌํ ์์ ์ด๋ค.
๐ You need to log in to GitHub to write comments. ๐
If you can't see comments, please refresh page(F5).