摘要
通过前面的基础学习,本章进入最为激动的机器人自主导航的学习。在前面的学习铺垫后,终于迎来了最大乐趣的时刻,就是赋予我们的miiboo机器人能自由行走的生命。本章将围绕机器人SLAM建图、导航避障、巡航、监控等内容展开。本章内容:
4.多目标点导航及任务调度
通过前面的学习,我们已经可以通过点击地图的方式来命令机器人运动到目标点。其实,ros-navigation导航框架就是为我们提供了一个最基本的机器人自动导航接口,即单点导航。然而,在实际的机器人应用中,机器人往往要完成复杂的任务,这些复杂的任务都是由一个个基本的任务组合而成的。一般的,机器人通过状态机的形式将一个个基本任务组合在一起来进行复杂任务的调度实现。
4.1.状态机
这里我们只讨论有限状态机,也称为FSM(Finite State Machine),其在任意时刻都处于有限状态集合中的某一状态。当其获得一个输入条件时,将从当前状态转换到另一个状态,或者仍然保持在当前状态。任何一个FSM都可以用状态转换图来描述,图中的节点表示FSM中的一个状态,有向加权边表示输入条件时状态的变化。如图49,以一个上班族的生活场景来举例说明状态机的状态转换图。矩形框表示FSM中的一个状态,有向边表示在输入条件下的状态转换过程。
(图49)有限状态机FSM举例
4.2.多目标点巡航
机器人多目标点巡航,特别是按特定巡逻路径进行巡航是很实用的功能。这里将利用前面学到的ros-navigation单点导航、状态机、状态机任务调度的知识。我们来编写一个应用功能包实现机器人多目标点巡航。
到这里,我们慢慢清楚了miiboo机器人编程的框架