C++實現的一種有限狀態機(Finite-state machine, FSM)

C++實現的一種有限狀態機(Finite-state machine, FSM)

狀態機這個東西,我們使用c++來實現,在實際中的應用是非常廣泛的,假如我們實現一個這樣的機器人的demo,我們要讓這個機器人有這樣的功能:首先,開機進入初始化狀態,執行觸發條件1,進入建圖狀態,執行觸發條件2,進入導航狀態,在建圖狀態和導航狀態執行觸發條件0,均可回到初始化狀態。在導航狀態下,執行觸發條件3可進入充電狀態,自動充電完成後,又回到導航狀態。那麼我們以建圖和導航為基類,可衍生很多的子類,實現其他的功能。這是不是一個很常見的demo呢,其實掃地機器人基本上就是這麼運行的。

我們在簡化一下,實現一個簡單的狀態機來實現兩個狀態之間的切換

基本代碼

1.定義機器人的兩個動作,並在機器人類裡定義一個狀態類的對象。

C++實現的一種有限狀態機(Finite-state machine, FSM)

2.兩個動作函數的實現

C++實現的一種有限狀態機(Finite-state machine, FSM)

3.兩個狀態的定義。主要要使用虛函數

C++實現的一種有限狀態機(Finite-state machine, FSM)

4.兩個狀態的切換實現

C++實現的一種有限狀態機(Finite-state machine, FSM)

5.主函數

C++實現的一種有限狀態機(Finite-state machine, FSM)

附上完整的代碼:直接用吧,,,

C++實現的一種有限狀態機(Finite-state machine, FSM)

看一下效果:

C++實現的一種有限狀態機(Finite-state machine, FSM)

C++實現的一種有限狀態機(Finite-state machine, FSM)


分享到:


相關文章: