๐ค ROS๋?
ROS๋ Robot Operating System์ ์ฝ์์ด๋ค. ์ง์ญํ์๋ฉด ๋ก๋ด์ด์ ์์คํ
์ด๋ผ๊ณ ๋ ํ์ง๋ง OS๊ฐ ์๋ ๋ก๋ด์ฉ ๊ณต๊ฐ์์ค ๋ฉํ์ด์์ฒด์ (Meta operating sysetem)์ด๋ค.
๋ฉํ์ด์์ฒด์ (Meta operating sysetem)๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๊ธฐ ์ํด ์ค์ผ์ฅด๋ง ๋ฐ ๋ก๋, ๊ฐ์, ์๋ฌ ์ฒ๋ฆฌ ๋ฑ์ ์คํํ๋ ์์คํ
์ ์๋ฏธํ๋ค.
์ฆ ROS๋ ๋ก๋ด์์ฉ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๊ธฐ ์ํ ์ด์์ฒด์ ์ ๊ฐ์ ๋ก๋ด ํ๋ซํผ์ด์ง๋ง, ๊ธฐ์กด์ ์๋์ฐ, ๋ฆฌ๋
์ค, OS X์ ๊ฐ์ ์ด์์ฒด์ ๊ฐ ์๋๋ฉฐ ๊ธฐ์กด์ด์์ฒด์ ์ ์ถ๊ฐ์ ์ธ ์ค์น๋์ด ์ฌ์ฉ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๊ธฐ์กด OS๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ค์ผ์ค๋ง, ํ์ผ ์์คํ
, ํ๋ฆฌ์ธ์ค ๊ด๋ฆฌ ๋ฑ์ ์ฌ์ฉํ ์ ์๋ค.
ROS๋ ๋ก๋ด ์์ฉ ์ํํธ์จ์ด์ ํ์ํ ํ์ ๊ธฐ๋ฅ๋ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํํ๋ก ์ ๊ณตํ๊ณ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ก๋ด ํ๋ ์ ์ํฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฉ ํจํค์ง๋ฅผ ๊ฐ๋ฐ, ๊ด๋ฆฌ, ์ ๊ณตํ๊ณ ์๋ค.
ROS์ ๋ฐ์ดํฐ ํต์ ์ ํ๋์ ์ด์์ฒด์ ์์๋ ์ํ๊ฐ๋ฅ ํ์ง๋ง ์๋ก ๋ค๋ฅธ ์ด์์ฒด์ ํ๋์จ์ด ์์คํ
์์๋ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์์ด ๋ก๋ด๊ฐ๋ฐ์ ๋งค์ฐ ์ ํฉํ๋ค.
๐ฆพROS์ ๋ชฉ์
ROS๋ ์์์ ๋งํ๋ฏ์ด ์๋ก ๋ค๋ฅธ ์ด์์ฒด์ ์์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ก๋ด ์ํํธ์จ์ด ๊ณต๋ ๊ฐ๋ฐ ์ํ๊ณ๋ฅผ ๋ง๋ค์๋ ๊ฒ ์ด๋ค.
๊ทธ๋์ ๋ก๋ด ์ฐ๊ตฌ ๊ฐ๋ฐ์ ์์ด์ ์ฝ๋ ์ฌ์ฌ์ฉ์ ํธ๋ฆฌํ๊ฒ ํ๋ ๋ชฉ์ ์ด ์๋ค.
๐ฆฟROS์ ๊ธฐ๋ฅ
1. ํต์ ๊ธฐ๋ฅ
ROS๋ ๋
ธ๋๋ฅผ ํตํด topicํน์ service๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํต์ ํ๋ค.
Topic (Publisher/Subscriber)
Pubilsh/Subscribe๋ ๋จ๋ฐฉํฅ ๋ฉ์์ง ์ก์์ ๋ฐฉ์์ topic์ ์ฌ์ฉํ๋ค.
- ๋จ๋ฐฉํฅ, ๋น๋๊ธฐ ํต์
- ํผ๋ธ๋ฆฌ์
(publisher) : ๋ฉ์ธ์ง ์ก์
- ์๋ธ์คํฌ๋ผ์ด๋ฒ(scbscriber) : ๋ฉ์ธ์ง ์์ ์ ์ด์ฉ
- ์ง์์ ์ผ๋ก ๋ฐ์ํ๋ ์ผ์ ๋ฐ์ดํฐ์ ์ ํฉ
- 1:n, 1:1, n:1, n:n ์ ๋ถ ํต์ ๊ฐ๋ฅ
- CMakeLists.txt File ์์
- Msgํ์ผ ์์ฑ
- Publisher ๋
ธ๋ ์์ฑ
- Subscrider ๋
ธ๋ ์์ฑ
Service (Server/Client)
Server/Client๋ ์๋ฐฉํฅ ๋ฉ์์ง ์์ฒญ(request)/์๋ต(response) ๋ฐฉ์์ service๋ฅผ ์ฌ์ฉํ๋ค.
- ์๋ฐฉํฅ, ๋๊ธฐ ํต์
- ์๋น์ค ์๋ฒ, ์๋น์ค ํด๋ผ์ด์ธํธ๊ฐ ํต์
- ํด๋ผ์ด์ธํธ ์์ฒญ์ด ์์๋ ๋ง ์๋ฒ์์ ์๋ด
- ์์ฒญ๊ณผ ์๋ต์ด ๋๊ธฐ๋ฉด ๋
ธ๋ ์ ์ ๋๊น
- CMakeLists.txt File ์์
- Srvํ์ผ ์์ฑ
- Service ๋
ธ๋ ์์ฑ
- Client ๋
ธ๋ ์์ฑ
action (Goal, Feed, Result)
- ์๋ฐฉํฅ, ๋น๋๊ธฐ ํต์
- ์์ฒญ ์ค๊ฐ ํผ๋๋ฐฑ์ด ํ์ํ ๊ฒฝ์ฐ ์ฌ์ฉ
- ํด๋น ๋๋ ๋ชปํ Goal๊ณผ ๊ฒฐ๊ณผ Result ํผ๋๋ฐฑ Feedback
- ๋ฉ์ธ์ง ์ ์ก ๋ฐฉ์ ์์ฒด๋ ๋น๋๊ธฐ์์ธ ํ ํฝ๊ณผ ๋์ผ
Roslaunch
- ๋ก๋ด์ ํ๋์ ๋
ธ๋๋ง์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ง์๊ณ , ๋ค๋์ ๋
ธ๋๋ค์ ํต์ ์ผ๋ก ์ด๋ฃจ์ด์ ธ์๋ค.
- ๊ทธ๋ฐ ๋ค๋์ ๋
ธ๋๋ค์ ์ผ์ผํ ์คํํด์ผํ๋ ์๊ณ ๋ก์์ ๋์ด์ฃผ๊ธฐ ์ํด์ ์๊ธด ๋ฐฉ๋ฒ์ด roslaunch๋ค.
- roslaunch๋ XMLํ์์ผ๋ก ๊ตฌ์ฑ๋์ด ์๊ณ , ์๋์ ๊ฐ์ด ์คํํ๊ณ ์ํ๋ ๋
ธ๋๋ค์ ์ ์ธํด์ฃผ๋ฉด ๋๋ค.
2. ๋ก๋ด, ์ผ์์ ๊ด๋ จ๋ ๊ธฐ๋ฅ
- standard message : ์นด๋ฉ๋ผ, IMU ๋ฑ
- gedometry libraries : TF(TransFormation, ์ขํ๋ณํ)
- robot description
- diagnose system
- sensing/recognition
- navigation
- manipulation
3. ๊ฐ๋ฐ์ ํธ์๋ฅผ ์ํ ํด
- command line tool : GUI์๋ ROS command
- Rviz
- Rqt
- Gazebo
๐ฎROS์ ํน์ง
- ๋ถ์ฐ ํ๋ก์ธ์ค : ํ๋ก์ธ์ค๊ฐ ๋
๋ฆฝ์ ์ผ๋ก ์คํ๋๋ฉด์ ์ ๊ธฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค.
- ํจํค์ง ๋จ์ ๊ด๋ฆฌ : ๊ฐ์ ์์
์ ์ํํ๋ ์ฌ๋ฌ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ์ฑํค์ง ๋จ์๋ก ๊ด๋ฆฌ๊ฐ๋ฅํ์ฌ ๊ฐ๋ฐ ๋๋ ์ฌ์ฉ์ด ํธ๋ฆฌํ๊ณ ๋ฐฐํฌ, ๊ณต์ , ์์ ์ ์ฉ์ดํ๋ค.
- ๊ณต๊ฐ ๋ฆฌํฌ์งํ ๋ฆฌ : ๊ฐ๋ฐ์๋ Github๋ฑ์ ํ๋ก์ ํธ๋ฅผ ๊ณต๊ฐํ๊ณ ๋ผ์ด์ผ์ค๋ฅผ ๋ฐฃํ๊ฒ ๋์ด ์๋ค.
- APIํํ : API๋ฅผ ๋ถ๋ฌ์ค๊ณ ์ ์ฉํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
- ์ธ์ด์ ์์ฑ์ฑ : Python, C++ Lisp, Java, C#, Lua, Ruby๋ฑ ๋ค์ํ ์ธ์ด๋ฅผ ์ง์ํ๋ค.
- ๋๊ท๋ชจ ์คํ : ROS๋ ๋๊ท๋ชจ ์์คํ
๋ฐ ๊ฐ๋ฐ ํ๋ก์ธ์ค์ ์ ์ฉ ๊ฐ๋ฅํ๋ค.
- ์ฌ์ด ํ
์คํธ : ROS๋ rostest๋ผ๊ณ ํ๋ ๋จ์/ํตํฉ ํ
์คํธ ํ๋ ์์ ๊ธฐ๋ฐ ์์ ์๋๋ฐ, ์ค์น ๋ฐ ์ ๊ฑฐ๊ฐ ์์ฃผ ์ฝ๋ค.