• 沒有找到結果。

第二章 文獻探討

2.2 行為樹

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

2.2 行為樹

由於檢視 3D 物件的任務流程十分繁瑣,且在進行任務時有部分的動作 需要無人機重複執行,例如:建築物的環繞、前後校正以及轉向校正等等,因 此程式的模組化(Modularity)與可重用性(Reusability)對於檢視任務來說非 常重要,本小節將探討可將程式模組化之方法。

有限狀態機(Finite state machine)已經被應用於電腦科學多年,有限狀 態機是一個數學的計算模型,可以表示有限個狀態以及在這些狀態之間可以因 為達成某些條件而自動切換狀態。有限狀態機通常會有一個起始階段顯示初始 之狀態,以及一個終點狀態顯示最終目標,如圖 2.1 為有限狀態機之範例,初 始狀態為 S0 而終點狀態為 S3,其中會根據使用者輸入之數值 1 或 0 來做狀態 之間的切換,當有限狀態機偵測到連續兩個輸入數值皆相同後則會進到最終狀 態 S3。

圖 2.1:有限狀態機。

而使用有限狀態機的應用種類繁多,從紅綠燈號誌的變化到投幣販賣機 的應用都可以使用有限狀態機來進行設計,而在無人機的應用上有限狀態機可 以幫助其在進行決策以及狀態之間的變換上更加清楚明確。如[17]所提及之案 例,他們設計一套系統可以利用無人機去進行人員的搜索和救援任務,他們利 用平行階層化的有限狀態機(Parallel Hierarchical Finite State Machine,

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

PHFSM)去連接無人機之各個技術組件,並根據當下無人機的狀況在各個狀態 節點中進行條件切換。圖 2.2[17]為他們所設計之 PHFSM 架構,每個節點代表 著一個較大型的科技組件,並且每個節點裡面也同時是由複數個有限狀態機去 組成。而在 PHFSM 的系統架構中,他們可以很輕易的利用階層化的方式來定 義緊急狀態(Emergence State)並將其設為最優先級,來讓無人機偵測到異常 後能快速的進行緊急處理。這樣的編排已經某種程度增加了其系統的模組性和 重複使用性以及易讀性,並且已經有優先序的概念形成。

圖 2.2:無人機的救援任務以 PHSFM 表示。[17]

行為樹也類似於有限狀態機,其設計之目的也是幫助程式進行模組化以 及提高可重用性。而與有限狀態機不同的是,行為樹在設計上更為精簡,在閱 讀上也更符合直覺,並且可模組化的程度與可重用性相比於有限狀態機更高,

因此使用者可以很輕鬆地從行為樹中添加或刪除動作及條件甚至於其子樹,而 不必仔細去確認修改所有內容。行為樹最早被使用於電玩遊戲產業去控制 NPC

(None player character)的行為,而現今行為樹也被應用於許多其他領域。行 為樹的樹葉節點可以分為兩種類型,其分別為:動作節點(Action node)以及 情況節點(Condition node),而非樹葉的節點則可以分為 4 種:選擇節點

(Selector node)、序列節點(Sequence node)、並行節點(Parallel node)以 及裝飾節點(Decorator node )。而以上六種節點皆只會回傳 3 種狀態:成功、

運行中以及失敗,而其詳細規則如表 2.1。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

表 2.1:行為樹之規則簡介。

結點類型 成功 失敗 執行中

選擇節點 一個節點成功 所有節點失敗 一個節點回傳執行中 序列節點 所有節點成功 一個節點失敗 一個節點回傳執行中 並行節點 N 個節點成功 N 個節點無法成功 所有節點回傳執行中

裝飾節點 自訂 自訂 自訂

動作節點 完成動作 無法完成動作 執行中

條件節點 合乎條件 不合乎條件 無

行為樹會以一定頻率由左至右逐一拜訪其各個節點。選擇節點以圖示表 示為問號,當其下之任一節點回傳成功其便會往上回傳成功,反之失敗;序列節 點以圖示表示為單箭頭,當其下所有節點回傳成功便會回傳成功,反之失敗;並 行節點以圖示表示為雙箭頭,當其下 N 個子節點回傳成功便會回傳成功,反之 失敗;裝飾節點以圖示表示為外框菱形,其可以由使用者自行定義回傳成功以及 失敗之條件;狀況節點以圖示表示為外框橢圓形,其會依據使用者設定之條件並 根據當下情況進行判斷來回傳成功或失敗;動作節點以圖示表示為外框方型,若 動作完成則會回傳成功,反之則回傳失敗。

圖 2.3[18]之例子顯示行為樹相比於有限狀態機可以用更簡潔的方式來描 述問題。若以有限狀態機來設計系統,開發者必須很繁複的去根據狀態所回傳 之三種狀態(即:成功、失敗以及運行中)來進行節點之設計,而由於行為樹 之節點本身就被預設為會根據條件來回傳這三種狀態,因此在系統的設計上相 對來說更為方便。而由於行為樹其本身為樹狀之結構圖,因此行為樹可以很輕 易的設計出具有優先化概念之階層化邏輯架構,而相比於有限狀態機,行為樹 的這種樹狀結構之特性也可以讓使用者能更直覺的從邏輯架構中刪除或是添加 額外的行為,而不用去詳細確認節點之間的狀態轉換。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 2.3:開前門,如果成功則通過,分別以 FSM(左)和行為樹(右)表示。[18]

相關文件