ROS2 - Behavior Tree

Joonyeol Sim๐Ÿ‘จโ€๐ŸŽ“ยท2021๋…„ 10์›” 6์ผ
2

ROS2

๋ชฉ๋ก ๋ณด๊ธฐ
1/2

๐Ÿ“œ ์ฃผ์ œ

Behavior Tree์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž

๐Ÿ’ก ๊ธฐ์กด FSM์˜ ๋ฌธ์ œ

๋กœ๋ด‡์€ ์ฃผ๋ณ€ ์ƒํ™ฉ์— ๋Œ€ํ•ด ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ธ์ง€ํ•˜๊ณ  ์ƒํƒœ๋ฅผ ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค. ๋งŒ์•ฝ ์‚ฌ๋žŒ์ด๋‚˜ ์žฅ์• ๋ฌผ์ด ๋‚˜ํƒ€๋‚˜๊ฒŒ๋œ๋‹ค๋ฉด ๋กœ๋ด‡์€ ๋ฐฉํ–ฅ์„ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ๋ฉˆ์ถ”๊ฑฐ๋‚˜ ์กฐ์น˜๋ฅผ ์ทจํ•ด์•ผ ํ•œ๋‹ค.
FSM์€ ํƒœ์Šคํฌ ์Šค์œ„์นญ ๊ตฌ์กฐ๋กœ ๋งŽ์€ ์„ธ์›”๋™์•ˆ ์‚ฌ์šฉ๋˜์™”๋‹ค. ํ•˜์ง€๋งŒ FSM์€ reactivity์™€ modularity์— ๋Œ€ํ•ด์„œ trade off๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.
๋˜ํ•œ FSM์€ one-way control transfer๋‹ค. FSM์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” Goto ์ƒํƒœ๋ฌธ์€ one-way control transfer๋กœ ๋ถˆ๋ฆฌ๋Š” ์˜ˆ์ œ์ค‘ ํ•˜๋‚˜๋‹ค. ํ”„๋กœ๊ทธ๋žจ์ด ๋‹ค๋ฅธ ์ฝ”๋“œ์˜ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ ํ”„ํ•˜๋ฉด์„œ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์›์‹œ์ ์ด๋ฉด์„œ ํ”„๋กœ๊ทธ๋žจ์˜ ์ดํ•ด๋ฅผ ๋ง์น˜๋Š” ์š”์ธ ์ค‘ ํ•˜๋‚˜๊ฐ€๋˜๊ณ  ์ƒํƒœ๊ฐ€ ๋ณต์žกํ•ด์งˆ์ˆ˜๋ก ์ƒํƒœ๋˜ํ•œ ๋ณต์žกํ•ด์ง€๊ณ  ์ฝ”๋“œ ๋˜ํ•œ ๋ณต์žกํ•ด์ง€๊ฒŒ ๋œ๋‹ค. BT๋Š” two-way control transfers๋กœ์จ ํŠธ๋ฆฌ์˜ ๋‚ด๋ถ€ ๋…ธ๋“œ์— ์˜ํ•ด ํ†ต์ œ๋˜๋ฏ€๋กœ BT๋ฅผ ์“ฐ๋Š”๊ฒƒ์ด ๋”์šฑ ํšจ์œจ์ ์œผ๋กœ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

โœ๏ธ Behavior Tree๋ž€?

1) BT ์ปจ์…‰
BT๋Š” internal ๋…ธ๋“œ๊ฐ€ ์ œ์–ด ํ๋ฆ„ ๋…ธ๋“œ์ด๋ฉฐ leaf ๋…ธ๋“œ๋Š” ์‹คํ–‰ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€๋Š” directed rooted tree์ด๋‹ค. ๊ธฐ์กด ํŠธ๋ฆฌ์—์„œ ์‚ฌ์šฉํ•˜๋Š” parent์™€ child ๊ฐœ๋…๋˜ํ•œ ์ ์šฉ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
root ๋…ธ๋“œ๋Š” ๋ถ€๋ชจ๊ฐ€ ์—†๋Š” ์œ ์ผํ•œ ๋…ธ๋“œ์ด๋ฉฐ ๋‹ค๋ฅธ ๋…ธ๋“œ๋“ค์€ ํ•˜๋‚˜์˜ ๋ถ€๋ชจ๊ฐ€ ์žˆ๊ณ  ์ œ์–ด ํ๋ฆ„ ๋…ธ๋“œ๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ child๋ฅผ ๊ฐ€์ง„๋‹ค.

BT๋Š” ๋ฃจํŠธ๋…ธ๋“œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ์ž์‹๋…ธ๋“œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ˆœํšŒํ•˜๋ฉด์„œ execution์„ ์‹คํ–‰ํ• ๊ฑด์ง€ ๋ง๊ฑด์ง€ signal์„ ๋ณด๋‚ด๋Š”๋ฐ ์ด๋ฅผ tick์ด๋ผํ•˜๋ฉฐ ์ดˆ๋‹น ๋ช‡๋ฒˆ์„ tickํ• ๊ป€์ง€ ์ •ํ•ด์ค€๋‹ค. ๋…ธ๋“œ๋Š” tick์„ ๋ฐ›์œผ๋ฉด ์‹คํ–‰ํ•˜๊ณ  tick์„ ๋ฐ›์ง€ ์•Š์œผ๋ฉด ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค. child๋Š” ์‹คํ–‰ ์ฆ‰์‹œ running์ƒํƒœ๋ฅผ ๋ถ€๋ชจ์—๊ฒŒ ๋ณด๋‚ด๋ฉฐ ์ž‘์—…์ด ์„ฑ๊ณตํ•˜๋ฉด success๋ฅผ ๋ณด๋‚ด๊ณ  ์ž‘์—…์ด ์‹คํŒจํ•˜๋ฉด failure ์ƒํƒœ๋ฅผ ๋ณด๋‚ธ๋‹ค.

2) ์ œ์–ด ํ๋ฆ„ ๋…ธ๋“œ์™€ ์‹คํ–‰ ๋…ธ๋“œ
์ œ์–ด ํ๋ฆ„ ๋…ธ๋“œ๋Š” sequence, fallback, parallel, decorator๋กœ ํฌ๊ฒŒ 4๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค.
์‹คํ–‰ ๋…ธ๋“œ๋Š” action๊ณผ condition์œผ๋กœ ํฌ๊ฒŒ 2๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค.

Sequence๋…ธ๋“œ๋Š” ์ž์‹๋“ค์˜ ์™ผ์ชฝ๋ถ€ํ„ฐ tick์„ ๋ณด๋‚ด๋Š”๋ฐ ์ž์‹์ด failure ๋˜๋Š” running์„ ๋ณด๋‚ด๋ฉด ๊ทธ๋Œ€๋กœ ์ž์‹ ์˜ ๋ถ€๋ชจ์—๊ฒŒ failure ๋˜๋Š” running์„ ๋ณด๋‚ธ๋‹ค. ์ฆ‰, ์™ผ์ชฝ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ tick์„ ๋ณด๋‚ด๋Š”๋ฐ success๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋‹ค์Œ child๋กœ ์ง„ํ–‰๋˜๊ณ  ๋งŒ์•ฝ failure๋‚˜ running์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋”์ด์ƒ ๋‹ค๋ฅธ ์ž์‹์—๊ฒŒ tick์„ ๋ณด๋‚ด์ง€ ์•Š๊ณ  ์ž์‹ ์˜ ๋ถ€๋ชจ๋กœ ๊ทธ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๋ณด๋‚ธ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋ชจ๋“  ์ž์‹์ด success๋ผ๋ฉด ๋ถ€๋ชจ์—๊ฒŒ success๋ฅผ ๋ณด๋‚ด๊ฒŒ ๋œ๋‹ค.

Fallback ๋…ธ๋“œ๋Š” ์ž์‹๋“ค์˜ ์™ผ์ชฝ๋ถ€ํ„ฐ tick์„ ๋ณด๋‚ด๋Š”๋ฐ ์ž์‹์ด Success ๋˜๋Š” Running์„ ๋ณด๋‚ด๋ฉด ๊ทธ๋Œ€๋กœ ์ž์‹ ์˜ ๋ถ€๋ชจ์—๊ฒŒ success ๋˜๋Š” running์„ ๋ณด๋‚ธ๋‹ค. ์ฆ‰, ์™ผ์ชฝ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ tick์„ ๋ณด๋‚ด๋Š”๋ฐ failure๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋‹ค์Œ child๋กœ ์ง„ํ–‰๋˜๊ณ  ๋งŒ์•ฝ success๋‚˜ running์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋”์ด์ƒ ๋‹ค๋ฅธ ์ž์‹์—๊ฒŒ tick์„ ๋ณด๋‚ด์ง€ ์•Š๊ณ  ์ž์‹ ์˜ ๋ถ€๋ชจ๋กœ ๊ทธ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๋ณด๋‚ธ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋ชจ๋“  ์ž์‹์ด failure๋ผ๋ฉด ๋ถ€๋ชจ์—๊ฒŒ failure๋ฅผ ๋ณด๋‚ด๊ฒŒ ๋œ๋‹ค.

Parallel ๋…ธ๋“œ๋Š” ๋ชจ๋“  ์ž์‹์—๊ฒŒ tick์„ ๋ณด๋‚ธ๋‹ค. ๊ทธ๋ฆฌ๊ณ  M๊ฐœ์˜ ์ž์‹๋“ค์ด Success๋ฅผ ๋ณด๋‚ด๋ฉด Success๊ฐ€ ๋˜๊ณ  N-M+1๊ฐœ์˜ ์ž์‹๋“ค์ด failure๋ฅผ ๋ณด๋‚ด๋ฉด failure๊ฐ€ ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ N์€ ์ž์‹๋“ค์˜ ๊ฐœ์ˆ˜์ด๊ณ  M์€ ๋ฌธํ„ฑ๊ฐ’์ด ๋œ๋‹ค. ๋งŒ์•ฝ M <= N์ด๋ผ๋ฉด running์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

Action ๋…ธ๋“œ๋Š” ๋ช…๋ น์„ ์‹คํ–‰ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ชฉํ‘œ์ง€์ ์œผ๋กœ ์ด๋™์ด๋ผ๊ฑฐ๋‚˜ ๋„ํ‚น์ด๋ผ๊ฑฐ๋‚˜ ์ž๋™๋ฌธ ์—ด๊ธฐ ๋“ฑ ํŠน์ • ํ–‰๋™์„ ๋œปํ•œ๋‹ค. ์ด ๋…ธ๋“œ๋Š” ๋ช…๋ น์ด ์„ฑ๊ณตํ–ˆ์„๋•Œ Success๋ฅผ ๋ณด๋‚ด๊ณ  ๋ช…๋ น์ด ์‹คํŒจํ•˜๋ฉด failure๋ฅผ ๋ณด๋‚ธ๋‹ค. ๋ช…๋ น์ด ์‹คํ–‰์ค‘์ด๋ผ๋ฉด running์„ ๋ณด๋‚ด๊ฒŒ ๋œ๋‹ค.

Condition ๋…ธ๋“œ๋Š” ํ˜„์žฌ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ณ  Success ๋˜๋Š” Failure๋ฅผ ๋ณด๋‚ด๊ฒŒ๋œ๋‹ค. ์ด ๋•Œ ์ฃผ์˜ํ•  ์ ์€ running์ƒํƒœ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ ์ ˆํžˆ ์–ด๋–ค ๋ณ€์ˆ˜๋‚˜ ๋กœ๋ด‡์˜ ์ƒํƒœ๋ฅผ ์ฒดํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•  ๊ฒƒ ๊ฐ™๋‹ค.

Decorator ๋…ธ๋“œ๋Š” ํ•˜๋‚˜์˜ ์ž์‹๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ์ œ์–ด ํ๋ฆ„ ๋…ธ๋“œ์ด๋‹ค. ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ๋…ธ๋“œ๋Š” ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์‘๋‹ตํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด์„œ ํŠน์ • ๊ทœ์น™๊ฐ™์€๊ฑธ ์ถ”๊ฐ€ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ž์‹ ๋…ธ๋“œ๊ฐ€ N๋ฒˆ ์‹คํŒจํ•  ๋•Œ Failure๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค๋˜๊ฐ€ ์ž์‹ ๋…ธ๋“œ๊ฐ€ T์ดˆ์•ˆ์— Success๋ฅผ ๋ฐ˜ํ™˜ ์•ˆํ•œ๋‹ค๋˜๊ฐ€ ์‚ฌ์šฉ์ž ์ž…๋ง›์— ๋งž๋Š” ์ œ์–ดํ๋ฆ„๋…ธ๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

BT์˜ ์˜ˆ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

๐Ÿค” ์ •๋ฆฌ ๋ฐ ์ฐธ๊ณ  ๋ฌธ์„œ

์—ฌ๊ธฐ๊นŒ์ง€๊ฐ€ ๋‚ด๊ฐ€ ์ฝ์€ ์ฑ…์˜ 16ํŽ˜์ด์ง€ ๋‚ด์šฉ์ด๋‹ค.
์ด ์ฑ•ํ„ฐ 3๊นŒ์ง€ ์ •๋ฆฌํ•˜๊ณ  ์ฝ์„ ๊ฒƒ์ด๋ฉฐ ๋‹ค์Œ์—๋Š” ํŒฉ๋งจ์„ ์˜ˆ๋ฅผ ๋“ค์–ด BT๋ฅผ ๊ตฌ์„ฑํ•ด๋ณผ ๊ฒƒ์ด๋‹ค.

Book: Behavior Trees in Robotics and AI.
Author: Michele Colledanchise and Petter Ogren from Cornell University
Url: https://arxiv.org/abs/1709.00084v4

profile
https://github.com/joonyeolsim

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