Summary | ROS2 I |
Node, Package๋ž€?

[ 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 ๋ณด๋“œ์ด๋‹ค. ์ž„๋ฒ ๋””๋“œ ๋ณด๋“œ๋ž€ ๋ญ˜๊นŒ?

Jetson Nano

์ž„๋ฒ ๋””๋“œ ๋ณด๋“œ๋Š” ๋กœ๋ด‡ ๊ฐœ๋ฐœ์— ์‚ฌ์šฉ๋˜๋Š” ๋Œ€ํ‘œ์ ์ธ HW์ด๋‹ค. PC ์ด์™ธ์˜ ์žฅ๋น„์— ์‚ฌ์šฉ๋˜๋Š” ์นฉ์ด ๋‚ด์žฅ๋œ PCB ๋“ฑ์˜ ๋ฉ”์ธ๋ณด๋“œ๋ฅผ ๋งํ•˜๋Š”๋ฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ถˆ๋ฆฌ๊ธฐ๋„ ํ•œ๋‹ค.

  • Single Board
    • CPU, ๋žจ ๋“ฑ์˜ PC์˜ ๊ธฐ๋ณธ์  ๋ถ€ํ’ˆ์ด ํ•œ ๋ณด๋“œ์— ๋‚ด์žฅ๋œ ํ˜•ํƒœ์˜ ๋ฉ”์ธ๋ณด๋“œ
  • Development Board
    • ์„ผ์„œ์™€ ๊ตฌ๋™๊ณ„ ๋“ฑ์„ ์—ฐ๊ฒฐํ•˜๊ณ  ์ฝ”๋”ฉ์„ ํ•˜๋Š” ๋“ฑ์˜ ํŠน์ • ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ์„ ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“  ๋ฉ”์ธ๋ณด๋“œ


Node์™€ Package

Node๋ž€?

Node๋Š” ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ตœ์†Œ ๋‹จ์œ„์˜ ํ”„๋กœ์„ธ์„œ๋ฅผ ๋งํ•œ๋‹ค.

๋กœ๋ด‡ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด์„œ๋Š” ๋กœ๋ด‡์„ ๊ตฌ์„ฑํ•˜๋Š” ์—ฌ๋Ÿฌ ์„ผ์„œ๋“ค๊ณผ ์ด ์„ผ์„œ๋“ค์„ ํ†ตํ•ด ์–ป์€ ์„ผ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ง€์†์ ์œผ๋กœ ํŒ๋‹จํ•˜๊ณ  ๋™์ž‘ํ•˜๋Š” ์‹œ์Šคํ…œ์ด ํ•„์š”ํ•˜๋‹ค. ๊ทธ๋ž˜์„œ ํ•„์š”ํ•œ ๊ฒŒ Node.

Understanding nodes

๊ฐ ๋…ธ๋“œ์˜ ์—ญํ• ์„ ๋ชฉ์ ์— ๋งž๊ฒŒ ์„ธ๋ถ„ํ™”์‹œ์ผœ์„œ ๊ฐ ๋…ธ๋“œ๋“ค ๊ฐ„์˜ ์˜์กด์„ฑ์„ ์ค„์ด๊ณ  ๋…๋ฆฝ์„ฑ์„ ๋†’์—ฌ์„œ ๋‹ค๋ฅธ ๋ชฉ์ ์˜ ์ž‘์—…์—์„œ๋„ ์ผ๋ถ€ ๋…ธ๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

+) 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์— ๋Œ€ํ•ด ์ •๋ฆฌํ•  ์˜ˆ์ •์ด๋‹ค.

 

Related Posts



๐Ÿ’™ You need to log in to GitHub to write comments. ๐Ÿ’™
If you can't see comments, please refresh page(F5).