Behavior Tree์ ๋ํด์ ์์๋ณด์
๋ก๋ด์ ์ฃผ๋ณ ์ํฉ์ ๋ํด ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ์ธ์งํ๊ณ ์ํ๋ฅผ ๋ฐ๊ฟ์ผ ํ๋ค. ๋ง์ฝ ์ฌ๋์ด๋ ์ฅ์ ๋ฌผ์ด ๋ํ๋๊ฒ๋๋ค๋ฉด ๋ก๋ด์ ๋ฐฉํฅ์ ๋ฐ๊พธ๊ฑฐ๋ ๋ฉ์ถ๊ฑฐ๋ ์กฐ์น๋ฅผ ์ทจํด์ผ ํ๋ค.
FSM์ ํ์คํฌ ์ค์์นญ ๊ตฌ์กฐ๋ก ๋ง์ ์ธ์๋์ ์ฌ์ฉ๋์๋ค. ํ์ง๋ง FSM์ reactivity์ modularity์ ๋ํด์ trade off๊ฐ ๋ฐ์ํ๋ค.
๋ํ FSM์ one-way control transfer๋ค. FSM์์ ๋ง์ด ์ฌ์ฉํ๋ Goto ์ํ๋ฌธ์ one-way control transfer๋ก ๋ถ๋ฆฌ๋ ์์ ์ค ํ๋๋ค. ํ๋ก๊ทธ๋จ์ด ๋ค๋ฅธ ์ฝ๋์ ํ๋ก๊ทธ๋จ์ผ๋ก ์ ํํ๋ฉด์ ์คํํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์์์ ์ด๋ฉด์ ํ๋ก๊ทธ๋จ์ ์ดํด๋ฅผ ๋ง์น๋ ์์ธ ์ค ํ๋๊ฐ๋๊ณ ์ํ๊ฐ ๋ณต์กํด์ง์๋ก ์ํ๋ํ ๋ณต์กํด์ง๊ณ ์ฝ๋ ๋ํ ๋ณต์กํด์ง๊ฒ ๋๋ค. BT๋ two-way control transfers๋ก์จ ํธ๋ฆฌ์ ๋ด๋ถ ๋
ธ๋์ ์ํด ํต์ ๋๋ฏ๋ก BT๋ฅผ ์ฐ๋๊ฒ์ด ๋์ฑ ํจ์จ์ ์ผ๋ก ์ํ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค.
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