Summary | ROS2 I |
[ ROS2 ] ROS ๊ธฐ์ด I (Node, Package)
์ต๊ทผ โ๋ฅ๋ฌ๋์์คํ โ์ด๋ ๊ณผ๋ชฉ์ ์๊ฐํ๋ฉด์ ๊ฐ๋จํ ํ ํ๋ก์ ํธ๋ฅผ ์งํํ๊ณ ์๋ค.
ํด๋น ํ๋ก์ ํธ๋ NVDIA Jestson Nano ๋ณด๋๋ฅผ ์ด์ฉํ์ฌ Objection Detection ํ๋ ๊ฒ์ด ๋ชฉํ์ด๋ฉฐ, ๋ณธ ํฌ์คํธ๋ ํ๋ก์ ํธ ์งํ์ ์์ด ๋ณด๋ค ๋์ ์ดํด๋ฅผ ์ํด ์ ๋ฆฌํ๋ ๋ชฉ์ ์ผ๋ก ์์ฑ๋์๋ค.
ROS Robot Operating System
ROS๋?
"๋ก๋ณดํฑ์ค ์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ ์ธ๊ณ ๋ ๋ฒจ์์ ๊ณตํต ์์ ์ด ๊ฐ๋ฅํ๋๋ก ํ๋ ํ๊ฒฝ์ ๊ตฌ์ถํ์!"
ROS๋ ๋ก๋ด ๊ณตํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์คํ ์์ค ์ํํธ์จ์ด ๊ฐ๋ฐ ํท (SDK)์ผ๋ก, ๋ก๋ด์ ๊ฐ๋ฐํ๋ ๊ณผ์ ์์ ๊ธฐ๋ฅ์ ๊ตฌํ, ํ๋์จ์ด์ ํต์ ๋ฑ์ ์ํด ์ฌ์ฉ๋๋ค. ์ด๋ ์ฐ๊ตฌ์์ ๋ฐฐํฌ ๋ฐ ์์ฐ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ชจ๋ ์ฐ์ ๋ถ์ผ์ ๊ฐ๋ฐ์์๊ฒ ํ์ค ์ํํธ์จ์ด ํ๋ซํผ์ ์ ๊ณตํ๋ ๊ฒ์ ๋ชฉ์ ์ผ๋ก ๋ง๋ค์ด์ก๋ค.
[ ROS์ ์์ ]
- ์๋น ๋ก๋ด (KT AO Robot, ์ ์๋ฆฌํธ์ฆ ๋ฑ)
- ํธ์ถ ๋ฐ ์ง์ ํ ์ด๋ธ ๋ชฉ์ ์ง ์ง์
- ๋ชฉ์ ์ง๊น์ง ์์จ ์ฃผํ ๋ฐ ์ฅ์ ๋ฌผ ํํผ
- ์์ ์๋น ๋ฐ ์๊ธฐ ํ์ ํ ๋ณต๊ท ๋ฐ ๋ฐ๋ณต
- ๋ฒ ๋ฌ ๋ก๋ด (๋ฐฐ๋ฏผ๋ก๋ด ๋๋ฆฌ)
- ์์ ํฝ์ ๋ฐ ๋ฐฐ๋ฌ์ง ์ง์
- ๋ชฉ์ ์ง๊น์ง ์์จ์ฃผํ ๋ฐ ์ฅ์ ๋ฌผ ํํผ
- ๋ฐฐ๋ฌ ์๋ฃ ํ ๋ค์ ๋ฐ๋ณต
- ๋ฐ๋ฆฌ์คํ ๋ก๋ด (์ฑ์๋ ์นดํ Cafe.bot)
- ๊ณ ๊ฐ์ ์ฃผ๋ฌธ ์ ์
- ์ง๊ฒ ์์ ์ด์ฉํด Pick & Place
- ๊ฐํ๋์ ๋ด๋ ค๋ ๋ค ๋ค์ ๋ฐ๋ณต
ROS์ ํน์ง
ROS๋ ๋ก๋ณดํฑ์ค ์ฐ๊ตฌ ๋ฐ ๊ฐ๋ฐ ๊ณผ์ ์์ ์ฝ๋๋ฅผ Packageํํ์ฌ ์ฌ์ฌ์ฉ์ ๊ทน๋ํํ๋ ๊ฒ์ ์ด์ ์ ๋ง์ถ SDK์ด๋ค. ์ด๋ฅผ ์ํด Node ๋จ์์ ๋ถ์ฐ ํ๋ก์ธ์ค, ๊ณต์ ๋ฐ ์ฌ๋ฐฐํฌ๋ฅผ ์ฝ๊ฒ ํ๊ธฐ ์ํ Package ๋จ์ ๊ด๋ฆฌ, ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ง์ ๊ธฐ๋ฅ ๋ฑ์ ๊ฐ์ถ์๋ค.
- ๋ค์ํ ์ด์์ฒด์ ์ง์ (Linux, Mac OS, Window ๋ฑ)
- ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ง์ (Python, C ๋ฑ)
- Package ์งํฅ์ผ๋ก ์ธํ ๋์ ์ฌ์ฌ์ฉ์ฑ
- ํ๋ฐํ ์ปค๋ฎค๋ํฐ ๊ต๋ฅ
- ์คํ ์์ค
์๋ฒ ๋๋ ๋ณด๋ Embedded Board
์ด๋ฒ ํ๋ก์ ํธ์์ ๋ด๊ฐ ์ฌ์ฉํ๋ ์๋ฒ ๋๋ ๋ณด๋๋ NVDIA์์ ๋์จ Jetson Nano ๋ณด๋์ด๋ค. ์๋ฒ ๋๋ ๋ณด๋๋ ๋ญ๊น?
์๋ฒ ๋๋ ๋ณด๋๋ ๋ก๋ด ๊ฐ๋ฐ์ ์ฌ์ฉ๋๋ ๋ํ์ ์ธ HW์ด๋ค. PC ์ด์ธ์ ์ฅ๋น์ ์ฌ์ฉ๋๋ ์นฉ์ด ๋ด์ฅ๋ PCB ๋ฑ์ ๋ฉ์ธ๋ณด๋๋ฅผ ๋งํ๋๋ฐ, ๋ค์๊ณผ ๊ฐ์ด ๋ถ๋ฆฌ๊ธฐ๋ ํ๋ค.
- Single Board
- CPU, ๋จ ๋ฑ์ PC์ ๊ธฐ๋ณธ์ ๋ถํ์ด ํ ๋ณด๋์ ๋ด์ฅ๋ ํํ์ ๋ฉ์ธ๋ณด๋
- Development Board
- ์ผ์์ ๊ตฌ๋๊ณ ๋ฑ์ ์ฐ๊ฒฐํ๊ณ ์ฝ๋ฉ์ ํ๋ ๋ฑ์ ํน์ ์์คํ ๊ฐ๋ฐ์ ๋ชฉ์ ์ผ๋ก ๋ง๋ ๋ฉ์ธ๋ณด๋
Node์ Package
Node๋?
Node๋ ์คํ ๊ฐ๋ฅํ ์ต์ ๋จ์์ ํ๋ก์ธ์๋ฅผ ๋งํ๋ค.
๋ก๋ด ๊ฐ๋ฐ์ ์ํด์๋ ๋ก๋ด์ ๊ตฌ์ฑํ๋ ์ฌ๋ฌ ์ผ์๋ค๊ณผ ์ด ์ผ์๋ค์ ํตํด ์ป์ ์ผ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํ์ผ๋ก ์ง์์ ์ผ๋ก ํ๋จํ๊ณ ๋์ํ๋ ์์คํ ์ด ํ์ํ๋ค. ๊ทธ๋์ ํ์ํ ๊ฒ Node.
๊ฐ ๋ ธ๋์ ์ญํ ์ ๋ชฉ์ ์ ๋ง๊ฒ ์ธ๋ถํ์์ผ์ ๊ฐ ๋ ธ๋๋ค ๊ฐ์ ์์กด์ฑ์ ์ค์ด๊ณ ๋ ๋ฆฝ์ฑ์ ๋์ฌ์ ๋ค๋ฅธ ๋ชฉ์ ์ ์์ ์์๋ ์ผ๋ถ ๋ ธ๋๋ฅผ ์ฌ์ฌ์ฉํ ์ ์๋ค.
+) Topic, Service, Action
๋ค์์ ๋ค๋ฃฐ ์์ ์ด์ง๋ง ๊ฐ๋จํ๊ฒ ์ง๊ณ ๋์ด๊ฐ์.
Node๋ค ์ฌ์ด์ Topic, Service, Action, Parameter๋ฅผ ํตํด ๋ค๋ฅธ ๋
ธ๋๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค.
Package๋?
Package๋ ROS๋ฅผ ๊ตฌ์ฑํ๋ ๊ธฐ๋ณธ ๋จ์์ด์ ๊ฐ๋ฐ ๋จ์์ด๋ค.
ํ๋ ์ด์์ Node๋ฅผ ํฌํจํ๊ณ ์์ผ๋ฉฐ, ๋ค๋ฅธ ํจํค์ง์ Node๋ฅผ ์คํํ๊ธฐ ์ํ ์ค์ ํ์ผ, ํ๋ก์ธ์ค๋ฅผ ์คํํ ์ ์๋ ROS ์์กด์ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ์ ๊ฐ์ง๋ค. Package๋ ๋ค์๊ณผ ๊ฐ์ด ๋ฐ๋ผ๋ณผ ์ ์๋ค.
- ํ์ผ ๊ด์
- ๊ด๋ จ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๋ชจ๋ธ๋ง ํ์ผ, ์ค์ ํ์ผ์ ๋ชจ์๋ ํด๋
- ๊ธฐ๋ฅ ๊ด์
- ์๋ฎฌ๋ ์ด์ , HW ๊ด๋ จ, ๋ชจ๋ธ๋ง, ์๊ฒฉ ์กฐ์ข ๋ฑ์ผ๋ก ๋ถ๋ฆฌ์ํจ ๋ชจ๋
๋, colcon build
๊ฐ ์ํ๋๋ ๋น๋์ ๋จ์์ด๊ธฐ๋ ํ๋ค.
Package ๋ง๋ค๊ธฐ : ament
$ ros2 pkg create --build-type ament-type ament_python <pkg_name> --dependencies rclpy <dependency>
์์ ์ฝ๋๋ฅผ ์คํํ๋ฉด ๋น๋๋ฅผ ์ํ ๊ธฐ๋ณธ ํ์ผ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค ์ ์๋ค. colcon build
๋ฅผ ํตํด ๋น๋ํ๊ณ , ๊ฒ์ฌ ํ build ํด๋๋ก ๋ฐ๋ก๊ฐ๊ธฐ๋ฅผ ์์ฑํ๋ค.
Node, Package ๊ด๋ จ ๋ช ๋ น์ด
Node์ ์คํ
$ ros2 run <node_name>
์คํ ์ค Node๋ค์ ๋ฆฌ์คํธ ํ์ธ
$ ros2 node list
ํน์ Node ์ ๋ณด ์ดํด๋ณด๊ธฐ
$ ros2 node info <node_name>
์ฌ์ฉ๊ฐ๋ฅ Package ๋ฆฌ์คํธ ํ์ธ
$ ros2 pkg list
์ฌ์ฉํ๊ณ ์ถ์ ํจํค์ง์์ ์ฌ์ฉ๊ฐ๋ฅํ Node ํ์ธ
$ ros2 pkg executables <package_name>
Next Post..
๋ค์ ํฌ์คํธ์์๋ Topic, Service, Action์ ๋ํด ์ ๋ฆฌํ ์์ ์ด๋ค.
๐ You need to log in to GitHub to write comments. ๐
If you can't see comments, please refresh page(F5).