ROS

๋ฐ•์ธ์„ฑยท2022๋…„ 8์›” 29์ผ
0
post-thumbnail

๐Ÿค– 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 ์ „๋ถ€ ํ†ต์‹  ๊ฐ€๋Šฅ
    1. CMakeLists.txt File ์ˆ˜์ •
    2. MsgํŒŒ์ผ ์ž‘์„ฑ
    3. Publisher ๋…ธ๋“œ ์ž‘์„ฑ
    4. Subscrider ๋…ธ๋“œ ์ƒ์„ฑ

Service (Server/Client)

Server/Client๋Š” ์–‘๋ฐฉํ–ฅ ๋ฉ”์‹œ์ง€ ์š”์ฒญ(request)/์‘๋‹ต(response) ๋ฐฉ์‹์˜ service๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • ์–‘๋ฐฉํ–ฅ, ๋™๊ธฐ ํ†ต์‹ 
  • ์„œ๋น„์Šค ์„œ๋ฒ„, ์„œ๋น„์Šค ํด๋ผ์ด์–ธํŠธ๊ฐ„ ํ†ต์‹ 
  • ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์ด ์žˆ์„๋•Œ ๋งŒ ์„œ๋ฒ„์—์„œ ์‘๋‹ด
  • ์š”์ฒญ๊ณผ ์‘๋‹ต์ด ๋Š๊ธฐ๋ฉด ๋…ธ๋“œ ์ ‘์† ๋Š๊น€
    1. CMakeLists.txt File ์ˆ˜์ •
    2. SrvํŒŒ์ผ ์ž‘์„ฑ
    3. Service ๋…ธ๋“œ ์ƒ์„ฑ
    4. 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์˜ ํŠน์ง•

  1. ๋ถ„์‚ฐ ํ”„๋กœ์„ธ์Šค : ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜๋ฉด์„œ ์œ ๊ธฐ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
  2. ํŒจํ‚ค์ง€ ๋‹จ์œ„ ๊ด€๋ฆฌ : ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฑ„ํ‚ค์ง€ ๋‹จ์œ„๋กœ ๊ด€๋ฆฌ๊ฐ€๋Šฅํ•˜์—ฌ ๊ฐœ๋ฐœ ๋˜๋Š” ์‚ฌ์šฉ์ด ํŽธ๋ฆฌํ•˜๊ณ  ๋ฐฐํฌ, ๊ณต์œ , ์ˆ˜์ •์— ์šฉ์ดํ•˜๋‹ค.
  3. ๊ณต๊ฐœ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ : ๊ฐœ๋ฐœ์ž๋Š” Github๋“ฑ์— ํ”„๋กœ์ ํŠธ๋ฅผ ๊ณต๊ฐœํ•˜๊ณ  ๋ผ์ด์„ผ์Šค๋ฅผ ๋ฐฃํžˆ๊ฒŒ ๋˜์–ด ์žˆ๋‹ค.
  4. APIํ˜•ํƒœ : API๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  5. ์–ธ์–ด์˜ ์ž์„ฑ์„ฑ : Python, C++ Lisp, Java, C#, Lua, Ruby๋“ฑ ๋‹ค์–‘ํ•œ ์–ธ์–ด๋ฅผ ์ง€์›ํ•œ๋‹ค.
  6. ๋Œ€๊ทœ๋ชจ ์‹คํ–‰ : ROS๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ๋ฐ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค์— ์ ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.
  7. ์‰ฌ์šด ํ…Œ์ŠคํŠธ : ROS๋Š” rostest๋ผ๊ณ  ํ•˜๋Š” ๋‹จ์œ„/ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์› ๊ธฐ๋ฐ˜ ์œ„์— ์žˆ๋Š”๋ฐ, ์„ค์น˜ ๋ฐ ์ œ๊ฑฐ๊ฐ€ ์•„์ฃผ ์‰ฝ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€