龙空技术网

C++实现的一种有限状态机(Finite-state machine, FSM)

陌上的零 473

前言:

现在兄弟们对“有限状态机”大概比较着重,我们都想要知道一些“有限状态机”的相关资讯。那么小编同时在网上汇集了一些对于“有限状态机””的相关知识,希望我们能喜欢,看官们快快来了解一下吧!

状态机这个东西,我们使用c++来实现,在实际中的应用是非常广泛的,假如我们实现一个这样的机器人的demo,我们要让这个机器人有这样的功能:首先,开机进入初始化状态,执行触发条件1,进入建图状态,执行触发条件2,进入导航状态,在建图状态和导航状态执行触发条件0,均可回到初始化状态。在导航状态下,执行触发条件3可进入充电状态,自动充电完成后,又回到导航状态。那么我们以建图和导航为基类,可衍生很多的子类,实现其他的功能。这是不是一个很常见的demo呢,其实扫地机器人基本上就是这么运行的。

我们在简化一下,实现一个简单的状态机来实现两个状态之间的切换

基本代码

1.定义机器人的两个动作,并在机器人类里定义一个状态类的对象。

2.两个动作函数的实现

3.两个状态的定义。主要要使用虚函数

4.两个状态的切换实现

5.主函数

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

看一下效果:

更多的内容请关注头条号:小5嵌入式

标签: #有限状态机