状态机

迷宫算法:(状态机)

无记忆功能的迷宫算法:

  1. 直线行驶如果前方距离大于阈值,且左右无障碍,则继续向前。
  2. 若前方大于阈值,且左右有障碍,则溜边行驶。
  3. 若前方距离小于阈值,且左右有障碍,则180转弯。
  4. 若前方距离小于阈值,且左侧有障碍,右转。右侧障碍,左转

有记忆功能的迷宫算法:

首先,安装前方左右三个避障。

111:调头,标记死胡同

110:右转

101:左转

011:直行

000:右转

100: 如果有死胡同标志位:且有左转标志,清楚死胡同,road_flag>>1 trun_flag>>1,右转

如果有死胡同标志位且有右转标志,同上。

如果没有死胡同,记路况,记录转向,左移 且road_flag=0 turn_flag=0 右转

010: 有死胡同标志,且刚才是前进,清死胡同,记录转向左移且turn_flag=0,右转

有死胡同,且刚刚是右转,清除死胡同,清除路况。前进。

无死胡同:记录路况,记录转向,左移 且road_flag.0=1 turn_flag.0=0。前进。

001: 有死胡同,且是前进,清死胡同,记录转向左移 且turn_flag=1。左。

         有死胡同,且是右转,清死胡同,清除死胡同标志。前进。

         无死胡同,记录路况,左移,road_flag.0=1。前进。

判断对应状态进入相应动作。(状态机)

你可能感兴趣的:(算法,状态机)