์ด์ ๊ธ (ROS2 ์ค์น)
ROS2) ROS2 Humble ์ค์นํ๊ธฐ (Ubuntu 22.04 LTS) !
23.09.29 ์งํ24.07.04 ํ๋ฆฐ๋ด์ฉ ์ค ์ผ๋ถ ์์ --- INDEX ---1. Terminator ์ค์น2. VScode ์ค์น3. ROS ์ค์น4. ROS ์ค์น ํ์ธํ๊ธฐ --- --- --- ---0. Basic$ sudo apt update$ sudo apt upgrade์ผ๋จ ์ด๊ฑฐ ๊ฑธ์ด๋๊ณ ์์ !์ธ์ ๋ ๊ธฐ๋ณธ
99kh.tistory.com
----

0. ์๋ก
์ทจ์ ์ค๋นํจ์ ์์ด์, ํ์์ ๊ธฐ๋ก์ฉ์ผ๋ก ๋จ๊ธด๋ค.
์ด ๊ธ์ ๊ฒ์ํด์ ํ๊ณ ๋ค์ด์ค๋ ๋ถ๋ค๋ ์๋ง ์ทจ์ ์ค๋น์์ด๊ฑฐ๋, ๊ณต๋ถ๋ฅผ ์์ํ๋ ค๋ ์ฌ๋์ผ๊ฒ์ด๋ผ ์์ ํ๊ณ ๊ธ์ ์์ํ๋ค.
ํ์๋ ์ค๋๋ง์ ROS2๋ฅผ ๋ง์ง๊ธฐ์ ๊ธฐ์ต์ด ์๋ ์ ์์์ ์ํด ๋ฐ๋๋ค.
๋ค๋ง, ๊ทธ๋ ๋ค๊ณ ์ด๋ณด๋ ์๋๋ค. ROS2๋ฅผ ํ์ฉํด ๋ค์ํ ๊ฒฝ์ง๋ํ์์ ์ก๊ตผ์ฐธ๋ชจ์ด์ฅ์์ ๋น๋กฏํด ๊ฝค๋ ๋ค์ํ ๊ณณ์์ ์์ํ์๋ค.
์ธ์ ๋ชจ๋ ์ทจ์ค์๊ณผ ๋ํ์๋ค ํ์ดํ ์ด๋ค.
์ฐธ๊ณ ๋ก, ๋ฐ์์ฌ๋๋ค์ 2๋ฒ๋ถํฐ ๋ณด๋ฉด ๋๋ค.
1. ์ ์
ROS์ ์ ์ ์์ฒด๋
Robot Operating System์ด๋ค.
๊ทธ๋์ ์ด๊ฒ OS์ธ๊ฐ? ์๋๋ค. ์ด๊ฑธ ์คํดํ๋ฉด ์๋๋ค.
ROS2๋ ์ฒ ์ ํ๊ฒ middle ware์ด๋ฏ๋ก ์ด๋ฅผ ํท๊ฐ๋ฆฌ๋ฉด ์๋๋ค.
์ ํํ๊ฒ ๋งํ์๋ฉด,
๋ก๋ด ๋ฐ ๋ถ์ฐ ์๋ฒ ๋๋ ์์คํ ์ ์ํ ๋ฏธ๋ค์จ์ด ํ๋ ์ ์ํฌ
์ธ๋ฐ, ์กฐ๊ธ ๋ ์์ธํ ๊ธฐ์ ํด๋ณด์๋ฉด,
"๋ก๋ด์ ๊ตฌ์ฑํ๋ ์ฌ๋ฌ ์ํํธ์จ์ด ๋ชจ๋(์ผ์์ฒ๋ฆฌ, ์ ์ด, ์ธ์, ํต์ ๋ฑ)์ ํ์คํ๋ ํต์ ๊ตฌ์กฐ์ ๊ฐ๋ฐ ๊ท์น์ผ๋ก ์ฐ๊ฒฐํด์ฃผ๋ ๋ถ์ฐ ์์คํ ๊ธฐ๋ฐ ์ํํธ์จ์ด ํ๋ ์์ํฌ"
์ด๋ค.
ROS2๋ ๊ธฐ๋ณธ์ ์ผ๋ก OMG์์ ์ ์ํ DDS middleware์ด๊ณ framework์ด๋ค.
๋ง์ด ์ด๋ ค์ธ ์ ์๋๋ฐ,
middleware๋,
OS์ Application ์ฌ์ด์์ ํต์ , ๋ฐ์ดํฐ๊ตํ, ๋๊ธฐํ, ๋ถ์ฐ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๋ software ๊ณ์ธต์ด๋ค. ํ์๊ฐ ๋์ค์ ์ด software, hardware layer์ ๋ํ ํฌ์คํ ์ ํ๋ค๋ฉด ๋ฐ๋ก ์ฌ๊ธฐ ๋ฐ์ ๋จ๊ฒจ๋๊ฒ ๋ค.
DDS(Data distribution Service)๋,
์ฐ๋ฆฌ ํ์ฟก๋ง๋ก ๋ฐ์ดํฐ ๋ถ์ฐ ์๋น์จ๋ฐ, ๋ถ์ฐ ์์คํ ์์ ์ค์๊ฐ์ฑ, ์ ๋ขฐ์ฑ, ํ์ฅ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด "๋ฐ์ดํฐ ์ค์ฌ"์ ํผ๋ธ๋ฆฌ์-์๋ธ์คํฌ๋ผ์ด๋ธ ๋ชจ๋ธ์ ์ ๊ณตํ๋ "ํ์ค ๋ฏธ๋ค์จ์ด"์ด๋ค.
์ด ๋ง์๋ ํฅ์ด ๋ช๊ฐ ์๋๋ฐ, "๋ฐ์ดํฐ ์ค์ฌ(Data-Centric)"์ด๋ผ๋ ๋ง๋ ์ค์ํ๋ค. ์๋ ์ฌ์ง๊ณผ ๊ฐ์ด ์ ๋ฆฌํ ์ ์๋ค.

๋ฉ์์ง ์ค์ฌ์ ๊ทธ๋ฅ A -> B ๊ฐ์ ๋๋์ธ๋ฐ,
๋ฐ์ดํฐ ์ค์ฌ์ "์ฐ๋ฆฌ ์์คํ ์ ์ด๋ฐ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํด!!"ํ๊ณ ์ธ์น๋ฉด, ๊ทธ๊ฑธ ๊ตฌ๋ ์ค์ธ ์น๊ตฌ๊ฐ ์ฝ์ด๋ค์ด๋ ๋ฐฉ์์ด๋ค.
๋ง์ด ๋๋ฌด ๊ธธ์ด์ง๋ ๋๋จธ์ง ์งง๊ฒ,
OMG๋ object management group์ผ๋ก, UML๊ฐ์ ๋ถ์ฐ ์์คํ ๊ณผ SW์ํคํ ์ฒ ํ์ค์ ์ ํด์ฃผ๋ ๊ตญ์ ํ์คํ ๋จ์ฒด๋ค. ์ด๋ฐ๊ฒ ํ์ค์ด ์์ด์ผ ์ฌ๋๋ค์ด ์ฐ๊ธฐ ํธํ๋ค.
ํ๋ ์์ํฌ๋, ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด ๊ตฌ์กฐ์ ์คํํ๋ฆ์ ๋ฏธ๋ฆฌ ์ ์ํด๋๊ณ , ๊ฐ๋ฐ์๋ ํ์ ๋ก์ง๋ง ๊ตฌํํ ์ ์๊ฒ ๋์์ฃผ๋ ๊ฐ๋ฐํ๊ฒฝ์ด๋ค. ROS2๋ ๊ทธ๋ ๋ค.
1.1 ROS? ROS2?
ROS2๊ฐ ๋ญ๊น?
์ผ๋จ, "2" ๋ผ๋๊ฑด, 1๋ ์๋ค๋ ์๊ธฐ๋ค.
๊ทผ๋ฐ ROS2๋ผ๊ณ ๊ตณ์ด ๋ถ๋ฅด๋ ์ด์ ๋ ๊ฐ๋จํ, ๋๋ฌด ๋ง์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ด๋ค.
์ฌ์ค ํ์๋ ROS1์ด ubuntu 20.04 ํ๋ก ๋์ค๋ ์ฐ๋ถํฌ์์ ์ง์์ด ์๋๊ธธ๋ ์ง์์ ์ง์ ์ข ๋ฃ๋์ค ์์๋ค.
๋ค๋ง, ์ ๋ณด๋ฅผ ์ข ์ฐพ์๋ณด๋, ubuntu 20.04๋ก ๋ค์ด๊ฐ๋ ROS noetic์ด 2025๋ 5์์ ์ง์ ์ข ๋ฃ๋๋ค ํ๋๋ผ.
| ROS ๋ฐฐํฌํ | ์ถ์ | Ubuntu ver | EOL(์ง์์ข ๋ฃ) |
| Kinetic | 2016.05 | 16.04 | 2021.04 |
| Melodic | 2018.05 | 18.04 | 2023.04 |
| Noetic(์ตํ) | 2020.05 | 20.01 | 2025.04 |
์ํผ ROS1์ ์ ๋ฆฌํ๋ฉด ์ด๋ฐ๋๋์ธ๋ฐ, ์ฌ์ค ROS1์ด๋ผ๊ณ ๋ฐ๋ก ๋ถ๋ฅด์ง ์๊ณ ๊ทธ๋ฅ ROS๋ผ๊ณ ํ๋ค. ๋ค๋ง, 1์ฅ์์๋ ํท๊ฐ๋ฆด ์ ์์ผ๋ ROS1์ด๋ผ๊ณ ๊ธฐ์ ํ๊ฒ ๋ค.
ROS2๊ฐ Ubuntu 20.04๋ถํฐ ์ ์ฉ์ด ๋์ด๋ฒ๋ ค, ROS1์ ์ตํ๊ฐ melodic์ด๋ผ๊ณ ์๊ณ ์๋ ์ฌ๋์ด ๋ง์ ๊ฒ์ด๋ค.
ํ์๋ ์ฒ์๋ถํฐ ROS2 Humble๋ก ์์ํด๋ฒ๋ ค์ ์์ ๋ชจ๋ฅด๊ฒ ๋ค.
๊ทธ๋์ ROS1๊ณผ ROS2์ ์ฐจ์ด๊ฐ ๋ญ๋?
์๋์ ๊ฐ์ ์ฐจ์ด๊ฐ ์์ด, ROS1๊ณผ ROS2๋ ๊ฑฐ์ ์์ ์ด ๋ค๋ฅธ ํ๋ซํผ์ผ๋ก ๋ณธ๋ค.
1.2 ROS1๊ณผ ๋น๊ตํ์ ๋, ROS2์ ํน์ง

์ฌ์ค ๋ด์ฉ์ ๋ง์ด ๋บ๋ค. ์ค์ ํฌ์ธํธ๋ง ์ง์ ์ ์๊ฒ.
ROS1์ DDS๋ก, ROS ์์ฒด์ DDS๋ฅผ ์ฌ์ฉํ๋ค. ๋ํ, Application์ Master Node๊ฐ ์์ด, ์ฌ๊ธฐ์ ๋ ธ๋๋ค์ ๊ด๋ฆฌํ๋ค. ๊ทธ๋์ ROS1์ ๊ทธ ์์ฒด๋ก middleware๋ผ๊ณ ๋ณด๊ธฐ์ ์กฐ๊ธ ์ ๋งคํ๋ค.
๊ทผ๋ฐ ROS2๋ ๋ชจ๋ middleware๋ก ๋บ๊ณ , master Node๋ ์ฌ๋ผ์ก๋ค.
๋ํ, OS๋ Linux๋ฟ๋ง์ด ์๋๋ผ windows, macOS, RTOS๋ ๊ฐ๋ฅํ๋ค.
ROS1๋ ๊ฐ๋ฅํ๋๊ฑฐ ๊ฐ์๋ฐ, ํต์ ๋ง ์ ์ก์๋๋ฉด ์๋์ด๋ ธ ์์ฒด๋ฅผ ํ๋์ ๋ ธ๋๋ก ๋ณผ ์๋ ์๋ค.
ROS2๋ ROS1์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด ์ฒ์๋ถํฐ ๋ค์ ์ค๊ณ๋์๋ค.
ROS๋ ์ฌ์ค "์ฐ๊ตฌ์ฉ ํ๋ ์์ํฌ" ์ ๋์์ผ๋, ROS2๋ก ์ค์ ํ์ฅ์ ํฌ์ ๊ฐ๋ฅํ ๋ก๋ด ๋ฏธ๋ค์จ์ด๋ก ์ฌํ์ ๋์๋ค.
์ด๋ฐ ROS2๊ฐ ๋ง๋ค์ด์ง ๋, ํต์ฌ ๋ชฉํ๋
- ์ค์๊ฐ์ฑ ์ง์
- ๋ถ์ฐ ์์คํ ์ ๊ฐํ ๊ตฌ์กฐ
- ์ฐ์ , ์์ฉ ํ๊ฒฝ ๋์
- ๋ณด์
- Multi OS ์ง์
์ด์๊ณ , ์ด๋ ROS2 ๊ตฌ์กฐ์ ์ฌ์คํ ๋ฌป์ด๋๋ค.
2 ROS2 ๊ตฌ์กฐ์ ํต์ฌ
ROS2๋ ๋จ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ์๊ฒ ์๋๋ค.
- ๋ ธ๋ ๊ธฐ๋ฐ ๋ถ์ฐ ๊ตฌ์กฐ
- ๋์จํ ๊ฒฐํฉ(Loose Coupling)
- ๋ถ์ฐ์์คํ ์ ์
2.1 ๋ ธ๋ ๊ธฐ๋ฐ ๋ถ์ฐ ๊ตฌ์กฐ
ROS2์ ์์คํ ์ ์ฌ๋ฌ๊ฐ์ ๋ ธ๋(Node)๋ก ๊ตฌ์ฑ๋๋ค.
โ ํ๋์ ๋ ธ๋ = ํ๋์ ์ญํ
โ ์ผ์์ฒ๋ฆฌ, ์ ์ด, ํ๋จ์ ๋ถ๋ฆฌ
โ ๋ ๋ฆฝ์ ์คํ ๋ฐ ์ฌ์์ ๊ฐ๋ฅ
์ด๋ ๊ฒ๋๋ฉด ๋ญ๊ฐ ์ด์ ์ด๋?
-> ๊ฐ ์ผ์๋ณ๋ก ๋งก๊ณ ์๋ ๊ฐ๊ฐ์ ๋ ธ๋๊ฐ ์๊ณ , ์ด๋ค์ด Publish๋ง ํด์ฃผ๋ฉด, ์์คํ ์์์ ์ด ์ ๋ณด๊ฐ ๋ฐํ๋๋ค!
-> ์ผ์์ ์ ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ฉด, ํด๋น ๋ ธ๋์์ ์ด๋ฅผ ์ํํ๊ณ Publish ํ๋ฉด ๋๋ค!
-> ๋ง์ผ ๋ด๊ฐ ์์ํ ๋์์ด ์๋๋ผ๋ฉด, publish๋ ์ ๋ณด๋ฅผ ๋ด๊ฐ ์ฝ์ด๋ด๋ ๋๊ณ , ํ์ํ ๋ ธ๋๋ง ์ผ๊ณ ๋์๊ฐ ์๋ค!
ํ๋ง๋๋ก, ๋๋ฒ๊น ์ ์ฉ์ดํ๊ณ , ์ ์ง๋ณด์๋ ์ฌ์ฐ๋ฉฐ, ๊ธฐ๋ฅ๋จ์ ํ ์คํธ๊ฐ ๊ฐ๋ฅํ๋ค๋ ๊ฒ.
๊ธฐ๋ฅ๋จ์ ํ ์คํธ๊ฐ ๊ฐ๋ฅํ๋ค๋๊ฑด ์ข ์ค์ํ๋ค.
ํ์๋ ์ต๊ทผ์ ๋ฐฉ์ฐSW๊ฐ๋ฐ ๊ด๋ จ ๊ต์ก์ ๋ค์์๋๋ฐ, Vํ๋ก์ธ์ค์ ๋ฐ๋ผ ๊ฐ๋ฐํ๊ธฐ์ํด์๋ ๊ธฐ๋ฅ๋จ์ ํ ์คํธ๊ฐ ์์ด์ผ ํ๋๋ฐ, ์ด๋ ๊ฒ ๊ธฐ๋ฅ๋จ์ ํ ์คํธ๊ฐ ๊ฐ๋ฅํ๋ฉด ์ด ํ ์คํธ๊ฐ ํธํด์ง๋ค.
๋ํ, ๊ธฐ๋ฅ๋จ์ ํ ์คํธ๋ฅผ ์ด ๋ฐฉ์ฐSW๊ฐ๋ฐ ๊ด๋ จ ๊ต์ก์ ๋ค์ผ๋ฉด์ ์ฒ์ ํด๋ดค๋๋ฐ, ๋ค๋ฅธ ์ฌํ ํ๋ก์ ํธ์์ ์ด ๊ธฐ๋ฅ๋จ์ ํ ์คํธ๋ฅผ ํด์ผ๊ฒ ๋ค๊ณ ์๊ฐ์ด ๋ค์๋ค. ๊ฐ ๊ธฐ๋ฅ๋ณ ์ฑ๋ฅ์ ํ์ธํ ์ ์๊ธฐ์, ์ด๋ค ๋ ธ๋๊ฐ ์ฑ๋ฅ์ ์ผ๋ง๋ ๋จน๊ณ ์๋์ง ์ ์ ์๋ค.
2.2 ๋์จํ ๊ฒฐํฉ(Loose Coupling)
๋์จํ ๊ฒฐํฉ.. ์ด๊ฑฐ ๋ฉด์ ์์๋ ๋ค์ ๋ฐ ์๋ค... ๋์จํ ๊ฒฐํฉ์ด ๋ญ๋๊ณ ๋ฌป๋๋ผ. (WPF์ MVVM)
์ด๋ฏธ ์์ ํ์ง๋ง, ๋ ธ๋๊ฐ์๋ ์ง์ ํธ์ถ ์์ด ์๋ค.
์ด๊ฒ ์ด์ฉ๋ผ๊ณ ..? ์ถ์ ์ ์๋๋ฐ,
โ ์ก์ ๋ ธ๋๋ ์์ ๋ ธ๋๋ฅผ ๋ชฐ๋ผ๋ ๋จ
โ ์์ ๋ ธ๋๋ ์ก์ ๋ ธ๋๋ฅผ ๋ชฐ๋ผ๋ ๋จ
์ด๋ฐ ๋๋์ด๋ค. ๊ทธ๋ฌ๋๊น.. "๋ฐ์ดํฐ๊ธฐ๋ฐ" ๊ฐ์ ๋๋์ด๋ค.
2.3 ๋ถ์ฐ ์์คํ ์ ์
ROS2๋ ์ฒ์๋ถํฐ ๋ถ์ฐ์์คํ ์ ์ ์ ๋ก ์ค๊ณ๋์๋ค.
๋ฐ๋ผ์ ์๋์ ๊ฐ์ ์ด์ ์ด ์๋ค.
โ ๋ค์ค CPU์ฌ์ฉ
โ ๋ค์ค OS์์ ์ฌ์ฉ
โ ๋ค์ค ๋คํธ์ํฌ ์ฌ์ฉ
์ด๋ฐ ๊ฒฝ์ฐ๊ฐ ์กด์ฌํด๋ ๋์ผํ๊ฒ ์๋ํ๋ค.
์ง์ง๋ก Linux์ Windows๊ณผ MacOS๋ฅผ ํ๋ฒ์ ์จ๋, ๊ฐ์ ์์คํ ์ผ๋ก ๋์ํ๋ค.
3. ๋ง๋ฌด๋ฆฌ ๋ฐ ๋ค์๊ธ
ํ์๋ ๊ฐ ๊ธฐ๋ฅ๋ณ ๋ ธ๋๋ฅผ ๋ถ๋ฆฌํด์ (Topic, Service, action)์ ์ฌ์ฉํด ํ๋ก์ ํธ๋ฅผ ํ์๋ค.
๊ทผ๋ฐ ์ฒซ ํ๋ก์ ํธ์์๋ ๋จ์ํ "๋ ธ๋ ๋ถ๋ฆฌ"๋ง ๋๋ฉด ๋ฉํฐ์ค๋ ๋์ผ์ค ์์๋ค ใ ใ
์๋๋๋ผ.. ๊ธฐ๋ณธ์ ์ผ๋ก run() ๋๋ฆฌ๋ฉด, ๊ฐ์ฅ ๊ธฐ๋ณธ์ธ Single Thread๋ก ๋์๊ฐ๊ฒ ๋๊ณ , ์ด๊ฒ ๋ ธ๋๊ฐ ์ฌ๋ฌ๊ฐ์ฌ๋ ํ๋์ ์ค๋ ๋๋ก ๋์๊ฐ๋ค. ๊ทธ๋์ ๋ค์ค ์ค๋ ๋๋ก ๋๋ฆด ์ ์๊ฒ ํ๋ ํจ์๊ฐ ๋ฐ๋ก ์๊ณ ,
๋ง์ฝ ๋ค์ค ๋ ธ๋๋ฅผ ์ฑ๊ธ์ค๋ ๋๋ก ๋๋ฆฌ๊ฒ๋๋ฉด? Linux์ ๊ธฐ๋ณธ ์ค์ผ์ฅด๋ง์ธ CFS๋ก ๋์๊ฐ๊ฒ ๋๋ค.
๋ค์ ๊ธ์์๋ Topic, Service, action๋ฑ ๋ ธ๋์ ๋ ธ๋์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ๋ํด ํฌ์คํ ํ ์์ ์ธ๋ฐ, ๊ธ์ด ์ถ๊ฐ๋๋ฉด ์ด ๋ฐ์ ๋งํฌ๋ฅผ ๋จ๊ฒจ๋๊ฒ ๋ค.
------
25.12.13 ์งํ
'SW > ROS2' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ROS2) bashrc ํ์ผ๋ก alias ๋ช ๋ น์ด ๋ง๋ค์ด๋ณด๊ธฐ (1) | 2023.10.04 |
|---|---|
| ROS2) ROS2 Humble ์ค์นํ๊ธฐ (Ubuntu 22.04 LTS) ! (0) | 2023.09.30 |
| ROS2) VMware installing & Ubuntu 22.04 (3) | 2023.09.29 |